Compare commits

...

22 Commits

Author SHA1 Message Date
20d1f2af26 Merge pull request 'V3.3.0 - Added ELASTIC_VERSION - fixed DOCKER_IMAGE' (#1) from dev into main
Reviewed-on: #1
2025-10-24 16:50:45 +02:00
11c9175e71 V3.3.0 - Added ELASTIC_VERSION - fixed DOCKER_IMAGE 2025-10-24 16:48:44 +02:00
d41e78a5bc v3.3.0 - changed proto 2025-10-23 17:17:40 +02:00
a3bbbf3a51 changed url 2025-10-23 17:02:04 +02:00
da2ff4c158 v3.3.0 - addds vm-vdglab definition 2025-10-23 16:47:16 +02:00
5e3c8e08ca v3.3.0 - fixed set kibana_system pass creation 2025-10-21 13:22:49 +02:00
e49e14e71c v3.3.0 - replace https by http 2025-10-21 13:04:36 +02:00
7e77d5c8a6 v3.3.0 - fixed user kibana to connect elastic 2025-10-21 12:54:34 +02:00
290894e6f1 v3.3.0 - fixed kibana connection 2025-10-21 12:49:12 +02:00
6e35193643 v3.3.0 - fixed kiabana connection 2025-10-21 12:36:41 +02:00
f1005e54d8 v3.3.0 - added vdg values 2025-10-21 11:15:52 +02:00
Gilles Mouchet
2b96979040 added proto and storageRequest 2025-10-11 11:37:32 +02:00
79d158c04a 3.3.0 2025-06-29 20:55:30 +02:00
719b26cf97 added k8s values 2025-06-29 20:51:20 +02:00
6d507a15d2 v3.3.0 2025-06-29 19:49:28 +02:00
94e0e53fc8 docker multi-platform 2025-06-29 08:16:30 +02:00
abaf7965c2 elasticsearch ok 2025-06-26 12:07:57 +02:00
2d0643fa01 dev-20250622-#1 2025-06-22 17:22:04 +02:00
123ea0ba2a docker ok 2025-06-21 17:32:41 +02:00
070c26450c dev 2025-06-20 08:45:33 +02:00
Gilles Mouchet
b602a5c53f add es 8.18.2 for dev 2025-06-19 17:57:07 +02:00
Gilles Mouchet
2729d642cd es version in var 2025-06-19 15:38:33 +02:00
77 changed files with 2141 additions and 424 deletions

View File

@ -1,6 +1,20 @@
# must be the same that SITE_VERSION define in php-fpm/.env
DOCKER_IMAGE_VERSION="3.25"
# compose project name. A docker compose project has as its name
# the name of the folder where it is executed (default).
# This setting overrides the default
COMPOSE_PROJECT_NAME=wwwgmo
# must be the same that SITE_VERSION
# define in php-fpm/.env
DOCKER_IMAGE_VERSION="3.3.0"
# docker login user
DOCKER_USER=gmouchet
# docker login password
DOCKER_PASS=TOBECOMPLETED
# docker image tag = DOCKER_IMAGE_VERSION
DOCKER_IMAGE=gmouchet/wwwgmo-php-fpm
DOCKER_IMAGE=wwwgmo-php-fpm
# docker login user
DOCKER_USER=gmouchet
# docker ports
NGINX_PORT=8085
PMA_PORT_WEB=8084
PMA_PORT_WEB_HTTPS=8084
# elastic version
ELASTIC_VERSION=9.0.2

1
.gitignore vendored
View File

@ -3,3 +3,4 @@
.env
helm-old
mariadb-old
staging

View File

@ -2,4 +2,3 @@
"editor.fontSize": 13,
"terminal.integrated.fontSize": 13,
"window.zoomLevel": 1.4,
}

32
LICENSE Normal file
View File

@ -0,0 +1,32 @@
Non-Commercial Use License [docker.sh.sh]
Copyright (c) [2025] [Gilles Mouchet]
This script is provided free of charge with its source code. You are permitted to:
Use the script for personal, educational, or non-commercial professional purposes.
Study, modify, and share the script freely, provided this license is included.
You are strictly prohibited from:
- Selling this script or any modified version.
- Using it in commercial services or products.
- Distributing it in exchange for financial compensation, directly or indirectly.
This script is provided "as is", without any warranty of any kind.
-----------------------------------------------------------------------------------------
Licence dutilisation non commerciale [docker.sh]
Copyright (c) [2025] [Gilles Mouchet]
Ce script est fourni gratuitement avec son code source. Toute personne est autorisée à :
Utiliser le script à des fins personnelles, éducatives ou professionnelles non commerciales.
Étudier, modifier et partager le script gratuitement, à condition de conserver cette licence.
Il est strictement interdit de :
- Vendre ce script ou une version modifiée.
- Lutiliser dans des services ou produits commerciaux.
- Le distribuer en échange dune contrepartie financière, directe ou indirecte.

127
README.md
View File

@ -7,8 +7,11 @@ Examples site with nginx, phpfpm, mysql, phpmyadmin, elasticsearch and kibana
|:---|:---|
|docker.sh|files to build the docker image|
|docker/mariadb|env file|
|docker/phpmyadmin|config for phpmyadmin|
|docker/nginx|config file|
|docker/php-fpm|files to create docker image|
|docker/elasticsearch|env file + script for elasticsearch|
|docker/kibana|env file|
|src|site source|
## Docker
@ -18,10 +21,8 @@ Copy file ALL `.env.dist` to `.env`
Complete or modify the values according to your needs
### Build
#### Install plugin php for elasticsearch
```bash
./docker.sh install
```
The **docker.sh** script is use to manage docker image. See `./docker.sh -h` for more informations
#### Build image
```bash
./docker.sh build
@ -30,34 +31,45 @@ or
```bash
./docker.sh build-no-cache
```
#### Build image multi-plaform (amd64 and amr64)
```bash
./docker.sh build-multi
```
or
```bash
./docker.sh build-multi-no-cache
```
### Start
```bash
./docker.sh start
```
#### Check
```bash
docker exec wwwgmo-mariadb mysql -uroot -p<MYSQL_ROOT_PASSWORD> mysql -e 'SELECT user,host FROM mysql.user;'
docker exec <COMPOSE_PROJECT_NAME>-mariadb-1 mysql -uroot -p<MYSQL_ROOT_PASSWORD> mysql -e 'SELECT user,host FROM mysql.user;'
```
```bash
docker exec wwwgmo-elasticsearch curl -u elastic:<ELASTIC_PASSWORD> http://wwwgmo-elasticsearch:9200/_cluster/health?pretty
docker exec <COMPOSE_PROJECT_NAME>-elasticsearch-1 curl -u elastic:<ELASTIC_PASSWORD> http://elasticsearch:9200/_cluster/health?pretty
```
```bash
docker exec wwwgmo-php-fpm curl -s -u elastic:<ELASTIC_PASSWORD> http://wwwgmo-elasticsearch:9200/_cluster/health?pretty
docker exec <COMPOSE_PROJECT_NAME>-php-fpm-1 curl -u elastic:<ELASTIC_PASSWORD> http://wwwgmo-elasticsearch:9200/_cluster/health?pretty
```
#### Access
http://<server_name>:<NGINX_PORT>
https://<server_name>:<NGINX_PORT>
## kubernetes
|**folders**|**description**|
|:---|:---|
|deploy.sh|files to deploy on k8s or k3s (see ./deploy.s -h)|
|helm|Chart root folder|
|Chart.yaml|Charts file|
|values-configs.yml|configs file use for kubernetes manifest|
|values-secrets.yaml|secrets file for kubernetes manifet (Must be encrypted with sops in a production environment)|
|values-xxxx-configs.yml|configs file use for kubernetes manifest|
|values-xxxx-secrets.yaml|secrets file for kubernetes manifet (Must be encrypted with sops in a production environment)|
|templates/elasticsearch|manifests for elasticsearch|
|templates/kibana|manifests for kibana|
|templates/mariadb|manifests for mariadb|
@ -78,31 +90,23 @@ kubectl create secret docker-registry secret-regcred --dry-run=client \
```
### Certificats
```bash
cat certs/gmolab.net.key | base64 -w0
cat certs/tls.key | base64 -w0
```
copy the base64 result into file `values-secrets.yaml` in ssl_key key
copy the base64 result into file `values-xxxx-secrets.yaml` in ssl_key key
```bash
cat certs/gmolab.net.crt | base64 -w0
cat certs/tls.crt | base64 -w0
```
copy the base64 result into file `values-config.yaml` in ssl_crt key
copy the base64 result into file `values-xxxx-config.yaml` in ssl_crt key
### Docker image version
In the `helm/Chart.yaml` file, the `appVersion` value must match the version of the docker image (see DOCKER_IMAGE_VERSION in the `.env` file and SITE_VERSION in the `docker/php-fpm/.env` file)
## Deployment by script
This is the recommended way
>This script builds the docker image based on the Kubernetes VM architecture (AMD64 or ARM64). At each deployment the minor version of the image is incremented by 1.
```bash
./deploy.md -n wwwgmo -k k3s
```
## Manual deployment
# Deployment
### Set kubesystem config
```bash
rm -f $HOME/.kube/config
```
for **kind**
```bash
sudo cp /root/.kube/config $HOME/.kube/config
```
for **k3s**
```bash
ln -s $HOME/.kube/k3s $HOST/.kube/config
@ -114,15 +118,15 @@ ln -s $HOST/.kube/k8s $HOST/.kube/config
### Set namespace and kube system
```bash
export NS=wwwgmo
export KUBE_SYS=k3s|k8s
export KUBE_SYS=kind|k3s|k8s
```
### Test template
```bash
helm template $NS --set kube=$KUBE_SYS ./helm --values=./helm/values-configs.yaml --values=./helm/values-secrets.yaml --namespace $NS
helm template $NS ./helm --values=./helm/values-$KUBE_SYS-configs.yaml --values=./helm/values-$KUBE_SYS-secrets.yaml --namespace $NS
```
### Chart deployment
```bash
helm upgrade $NS --set kube=$KUBE_SYS ./helm --install --atomic --cleanup-on-fail --values=./helm/values-configs.yaml --values=./helm/values-secrets.yaml --namespace $NS --create-namespace
helm upgrade $NS ./helm --install --atomic --cleanup-on-fail --values=/helm/values-$KUBE_SYS-configs.yaml --values=./helm/values-$KUBE_SYS-secrets.yaml --namespace $NS --create-namespace
```
## Remove
@ -131,11 +135,13 @@ helm uninstall $NS -n $NS
kubectl delete namespaces $NS
```
## NOTES
### Cronjob
### Cronjob
**No longer needed**. A job (`job-mariadb.yaml`), launched during deployment, has been created. We leave the procedure below for information
When we deploy manually (I do not why) you must trig manually the cronjob to make a DB backup to termine correctly the helm command
```bash
kubectl create job -n $NS --from=cronjob/cronjob-mariadb-backupdb dbbackup-$(date +%Y-%m-%d-%H-%M-%S)
```
## Database
Not necessary because created during deployment. We leave the procedure below for information
@ -185,34 +191,51 @@ done
[MariaDB Statefulset](https://mariadb.org/create-statefulset-mariadb-application-in-k8s/)
[PHP-FPM, nginx, kubernetes and docker](https://matthewpalmer.net/kubernetes-app-developer/articles/php-fpm-nginx-kubernetes.html)
https://www.elastic.co/guide/en/elasticsearch/reference/8.18/docker.html
## Changelog
### 3.25 (2024-04-14)
**New features:**
* added elasticsearch and kibana
* added option `install` to script `docker.sh` to install php elasticserch module
* created `deploy.sh` script
**Fixed bugs:**
* problem with display environment var in php site
### 3.3.0 (2025-06-29)
**New Features:**
- Definition for vm-vdglab
- Displayed the Elasticsearch PHP client version on the `esinfo.php` page.
- Removed the condition checking for **k8s** or **k3s** in Kubernetes deployment.
- Added configuration and secret values for the `kind` system.
- Added configuration and secret values for the `k8s` system.
- Added build multi-platform docker image
**Bug Fixes:**
- Fixed somes bugs
**Updated:**
* added new features in README.md
* added Changelog part in README.md
---
### 2.5 (2024-03-29)
**Fixed bugs:**
* fixed somes bugs
### 3.2.5 (2024-04-14)
**New features:**
* posibility to deploy on k3s or k8s
**New Features:**
- Added **Elasticsearch** and **Kibana**.
- Introduced `install` option in `docker.sh` script to install the PHP Elasticsearch module.
- Created `deploy.sh` script for deployment.
**Bug Fixes:**
- Fixed an issue with displaying environment variables in the PHP site.
**Updates:**
- Enhanced `README.md` with new feature documentation.
- Added a **Changelog** section to the `README.md`.
**Updated:**
* updated README.md
---
### 1.0 (2024-03-01)
* Created from scratch
### 2.5.0 (2024-03-29)
**New Features:**
- Added support for deploying on **k3s** or **k8s**.
**Bug Fixes:**
- Various bug fixes.
**Updates:**
- Updated `README.md`.
---
### 1.0.0 (2024-03-01)

View File

@ -41,4 +41,3 @@ data:
#fastcgi_pass 127.0.0.1:9000;
}
}

1
cron
View File

@ -1 +0,0 @@
/usr/bin/mysqldump --verbose --hex-blob --complete-insert --single-transaction --skip-lock-tables --skip-add-locks --routines -h service-mariadb -uroot -ppa55w0rd wwwgmo | gzip - > /var/backups/$MYSQL_DATABASE-$(date +%Y-%m-%d_%H%M%S).sql.gz; find /var/backups/ -type f -mindepth 1 -mtime +14 -exec rm {} \;

View File

@ -1,98 +1,95 @@
# GMo Lab
#version: '2.3'
services:
## Linux nginx mysql php
wwwgmo-nginx:
container_name: wwwgmo-nginx
hostname: wwwgmo-nginx
nginx:
image: nginxinc/nginx-unprivileged:1.23-alpine
# platform: linux/amd64,linux/arm64
volumes:
- './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf'
- './certs:/etc/nginx/certs/'
- './src:/var/www/html:rw,cached'
ports:
- '${NGINX_PORT}:8080' #local:docker
- '${NGINX_PORT}:8443'
depends_on:
- wwwgmo-php-fpm
#
wwwgmo-php-fpm:
container_name: wwwgmo-php-fpm
hostname: wwwgmo-php-fpm
#image: wwwgmo
image: ${DOCKER_IMAGE}:${DOCKER_IMAGE_VERSION}
- php-fpm
php-fpm:
image: ${DOCKER_USER}/${DOCKER_IMAGE}:${DOCKER_IMAGE_VERSION}
# platform: linux/amd64,linux/arm64
env_file:
- ./docker/php-fpm/.env
volumes:
- './src/:/var/www/html:rw,cached'
build:
build:
context: .
dockerfile: ./docker/php-fpm/Dockerfile
ports:
- '9000:9000' #local:docker
- '9000:9000'
depends_on:
- wwwgmo-mariadb
- mariadb
wwwgmo-mariadb:
container_name: wwwgmo-mariadb
hostname: wwwgmo-mariadb
#image: mysql:8.0-debian
#image: mysql/mysql-server:8.0.27-aarch64
mariadb:
image: mariadb:10.11.7
# platform: linux/amd64,linux/arm64
volumes:
- 'wwwgmo-mariadb:/var/lib/mysql:z'
- 'mariadb:/var/lib/mysql:z'
env_file:
- ./docker/mariadb/.env # ports:
wwwgmo-phpmyadmin:
container_name: wwwgmo-pma
- ./docker/mariadb/.env
phpmyadmin:
image: phpmyadmin
# platform: linux/amd64,linux/arm64
volumes:
- ./certs:/etc/apache2/ssl
- ./docker/phpmyadmin/apache-ssl.conf:/etc/apache2/sites-available/default-ssl.conf
- ./docker/phpmyadmin/config.secret.inc.php:/etc/phpmyadmin/config.secret.inc.php
links:
- wwwgmo-mariadb
- mariadb
env_file:
- ./docker/mariadb/.env
restart: always
ports:
- ${PMA_PORT_WEB}:80
- ${PMA_PORT_WEB_HTTPS}:443
command: >
sh -c "a2enmod ssl &&
a2ensite default-ssl &&
apache2-foreground"
# EK
wwwgmo-elasticsearch:
container_name: wwwgmo-elasticsearch
hostname: wwwgmo-elasticsearch
image: 'docker.elastic.co/elasticsearch/elasticsearch:7.17.19'
#image: 'docker.elastic.co/elasticsearch/elasticsearch:8.8.1'
volumes:
- 'wwwgmo-elasticsearch:/usr/share/elasticsearch/data'
restart: unless-stopped
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_VERSION}
# platform: linux/amd64,linux/arm64
env_file:
- ./docker/elasticsearch/.env
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
cap_add:
- IPC_LOCK
ports:
- '9200:9200'
- '9300:9300'
- "9200:9200"
- "9300:9300"
volumes:
- elasticsearch:/usr/share/elasticsearch/data
- ./docker/elasticsearch/create_kibana_user.sh:/usr/local/bin/create_kibana_user.sh
command: >
bash -c "
/bin/tini -g -- /usr/local/bin/docker-entrypoint.sh &
pid=$!;
sleep 20;
bash /usr/local/bin/create_kibana_user.sh;
wait $pid
"
# kibana
wwwgmo_kibana:
container_name: wwwgmo-kibana
hostname: wwwgmo-kibana
image: docker.elastic.co/kibana/kibana:7.17.19
#image: docker.elastic.co/kibana/kibana:8.8.1
restart: unless-stopped
kibana:
image: docker.elastic.co/kibana/kibana:${ELASTIC_VERSION}
# platform: linux/amd64,linux/arm64
env_file:
- ./docker/kibana/.env
ports:
- 5601:5601
volumes:
- './certs:/usr/share/kibana/config/certs/'
depends_on:
- wwwgmo-elasticsearch
- elasticsearch
ports:
- "5601:5601"
volumes:
wwwgmo-mariadb:
wwwgmo-elasticsearch:
elasticsearch:
mariadb:

198
docker.sh
View File

@ -1,78 +1,196 @@
#!/bin/bash
############################################################
# Decription: this script manage docker image
# file with an AWX inventory
#
# Author: Gilles Mouchet (gilles.mouchet@gmail.com)
# Creation Date: 28.06.2025
# Version: 1.0
#
# Usage: ./docker.sh --help
# Changelog:
# V1.0 - 28.06.2025 - GMo
# Added
# - Creation of script from scratch
#
############################################################
version="1.0"
# with set -e, as soon as a command returns an exit code other than 0,
# the script stops immediately.
set -e
_UID=$(id -u)
_GID=$(id -g)
############################################################
# functions
############################################################
# function usage
usage() {
cat << EOF
Usage: ./$(basename "$0") options
Manage docker image
Options:
build build docker image
build-no-cache build an image from scratch, without using the cache from previous steps.
build-multi build a multi-platform image (amd64, arm64)
build-multi-no-cache build a multi-platform image from scratch , without using the cache from previous steps.
start start the stack
stop stop the stack and delete the container
restart stop and start stack
bash open the ${COMPOSE_PROJECT_NAME}-php-fpm-1 container bash
bash-root open the ${COMPOSE_PROJECT_NAME}-php-fpm-1 container bash with root user
logs tail logs from ${COMPOSE_PROJECT_NAME}-php-fpm-1 -f
push push image php-fpm on docker registry
down stop and delete the container
help|-h|--help display this help
version|-v|--version display script version
EOF
}
# read the varoables
export $(grep -v '^#' .env | xargs)
# check param exist
if [ -z "$1" ]; then
usage
exit
fi
# check if certs folder exite in src
if [ ! -d "./src/certs" ]; then
mkdir ./src/certs
fi
while test $# -gt 0
do
case "$1" in
install)
env UID=${_UID} GID=${_GID} docker compose up -d wwwgmo-php-fpm
#docker exec --user root wwwgmo-php-fpm "/bin/sh -c 'cd /var/www/html/; composer require elasticsearch/elasticsearch'"
docker exec --user root wwwgmo-php-fpm /bin/sh -c "cd /var/www/html; composer require elasticsearch/elasticsearch:^7.17.2"
env UID=${_UID} GID=${_GID} docker compose stop
;;
start)
env UID=${_UID} GID=${_GID} docker compose up -d;
docker exec --user root wwwgmo-php-fpm composer install --no-interaction
sudo chown -R $_UID:$_GID ./certs/
# The env before the docker command is there to assign rights in case different
# users are called upon to work on this project. We comment it for documentation purposes.
# env UID=${_UID} GID=${_GID} docker compose up -d
docker compose up -d
;;
start-nginx)
env UID=${_UID} GID=${_GID} docker compose up -d wwwgmo-nginx
;;
start-db)
env UID=${_UID} GID=${_GID} docker compose up -d wwwgmo-mariadb
restart)
sudo chown -R $_UID:$_GID ./certs/
docker compose down --remove-orphans
docker compose up -d;
;;
stop)
env UID=${_UID} GID=${_GID} docker compose stop
docker compose stop
;;
bash)
docker exec -it wwwgmo-php-fpm /bin/sh
docker exec -it ${COMPOSE_PROJECT_NAME}-php-fpm-1 /bin/sh
;;
bash-root)
docker exec --user root -it wwwgmo-php-fpm /bin/sh
docker exec --user root -it ${COMPOSE_PROJECT_NAME}-php-fpm-1 /bin/sh
;;
logs)
docker logs wwwgmo-php-fpm -f
logs)
docker logs ${COMPOSE_PROJECT_NAME}-php-fpm-1 -f
;;
build-no-cache)
#cp ./certs/ca.pem ./src/certs/.
sudo chown -R $_UID:$_GID ./src/
env UID=${_UID} GID=${_GID} docker compose build --pull --no-cache
env UID=${_UID} GID=${_GID} docker compose up -d;
#docker exec --user root wwwgmo-php-fpm composer install --no-interaction
sleep 5 # wait mysql container up
#docker exec -it wwwgmo-mariadb /bin/bash -c "mysql -u root --password=password -e \
# \"CREATE USER IF NOT EXISTS 'xmaroot'@'%' IDENTIFIED BY 'sqlAdmin'; \
# GRANT ALL PRIVILEGES ON *.* TO 'xmaroot'@'%'; \
# flush privileges;\""
env UID=${_UID} GID=${_GID} docker compose stop
;;
build)
#cp ./certs/ca.pem ./src/certs/.
# build image in local
sudo chown -R $_UID:$_GID ./src/
env UID=${_UID} GID=${_GID} docker compose build
env UID=${_UID} GID=${_GID} docker compose up -d;
#docker exec --user root wwwgmo-php-fpm composer install --no-interaction
docker compose build --pull
docker compose up -d;
docker exec --user root ${COMPOSE_PROJECT_NAME}-php-fpm-1 /bin/sh -c "cd /var/www/html; composer require elasticsearch/elasticsearch"
# not needed. We comment it for documentation purposes.
#sleep 5 # wait mysql container up
#docker exec -it wwwgmo-mysql /bin/bash -c "mysql -u root --password=password -e \
# \"CREATE USER IF NOT EXISTS 'xmaroot'@'%' IDENTIFIED BY 'sqlAdmin'; \
# GRANT ALL PRIVILEGES ON *.* TO 'xmaroot'@'%'; \
# flush privileges;\""
env UID=${_UID} GID=${_GID} docker compose stop
docker compose stop
;;
build-no-cache)
# build image in local
sudo chown -R $_UID:$_GID ./src/
docker compose build --pull --no-cache
docker compose up -d;
docker exec --user root ${COMPOSE_PROJECT_NAME}-php-fpm-1 /bin/sh -c "cd /var/www/html; composer require elasticsearch/elasticsearch"
docker compose stop
;;
build-multi-no-cache)
# build image multi platform linux/amd64 and linux/arm64
#
# This operation may take some time (env. 15 min). Please be patient.
#
#echo "${DOCKER_USER}/wwwgmo-php-fpm:${DOCKER_IMAGE_VERSION}"
#cp ./certs/ca.pem ./src/certs/.
sudo chown -R $_UID:$_GID ./src/
# load images needed to buil docker iomage for multi platform
if [ "$(docker images -q moby/buildkit)" == "" ]; then
docker buildx create --use --name gmobuilder
docker buildx inspect gmobuilder --bootstrap
fi
# login to docker hub
docker login -u="${DOCKER_USER}" -p="${DOCKER_PASS}"
# builds image for linux/amd64 and linux/arm64
docker buildx build --no-cache --platform linux/amd64,linux/arm64 -t "${DOCKER_USER}/wwwgmo-php-fpm:${DOCKER_IMAGE_VERSION}" --push -f ./docker/php-fpm/Dockerfile .
# start stack
docker compose up -d
# install elasticsearch client for PHP
docker exec --user root ${COMPOSE_PROJECT_NAME}-php-fpm-1 /bin/sh -c "cd /var/www/html; composer require elasticsearch/elasticsearch"
# stop stack
docker compose stop
# logout from docker hub
docker logout
# cleanup container, image and instance to create multi platform image
docker stop buildx_buildkit_gmobuilder0
docker container rm buildx_buildkit_gmobuilder0
docker rmi moby/buildkit:buildx-stable-1 --force
docker buildx rm --all-inactive --force
;;
build-multi)
# build image multi platform linux/amd64 and linux/arm64
#
# This operation may take some time (env. 15 min). Please be patient.
#
#echo "${DOCKER_USER}/wwwgmo-php-fpm:${DOCKER_IMAGE_VERSION}"
#cp ./certs/ca.pem ./src/certs/.
sudo chown -R $_UID:$_GID ./src/
# load images needed to buil docker iomage for multi platform
if [ "$(docker images -q moby/buildkit)" == "" ]; then
docker buildx create --use --name gmobuilder
docker buildx inspect gmobuilder --bootstrap
fi
# login to docker hub
docker login -u="${DOCKER_USER}" -p="${DOCKER_PASS}"
# builds image for linux/amd64 and linux/arm64
docker buildx build --platform linux/amd64,linux/arm64 -t "${DOCKER_USER}/wwwgmo-php-fpm:${DOCKER_IMAGE_VERSION}" --push -f ./docker/php-fpm/Dockerfile .
# start stack
docker compose up -d
# install elasticsearch client for PHP
docker exec --user root ${COMPOSE_PROJECT_NAME}-php-fpm-1 /bin/sh -c "cd /var/www/html; composer require elasticsearch/elasticsearch"
# stop stack
docker compose stop
# logout from docker hub
docker logout
# cleanup container, image and instance to create multi platform image
docker stop buildx_buildkit_gmobuilder0
docker container rm buildx_buildkit_gmobuilder0
docker rmi moby/buildkit:buildx-stable-1 --force
docker buildx rm --all-inactive --force
;;
push)
docker image push ${DOCKER_IMAGE}:${DOCKER_IMAGE_VERSION}
docker login -u="${DOCKER_USER}" -p="${DOCKER_PASS}"
docker image push ${DOCKER_IMAGE}:${DOCKER_IMAGE_VERSION}
docker logout
;;
*)
echo "docker.sh [start|stop|install|logs|bash-root|bash|build|build-no-cache|push]"
down)
docker compose down --remove-orphans
;;
version|-v|--version)
cat << EOF
$(basename "$0") v$version (c) 1990 - $(date +%Y) by Gilles Mouchet
Non-Commercial Use License See LICENSE for details
EOF
exit
;;
*|help|-h|--help)
usage
exit
;;
esac
shift

View File

@ -1,6 +1,9 @@
xpack.security.transport.ssl.enabled=true
xpack.security.enabled=true
# config es
cluster.name=es-cluster
discovery.type=single-node
cluster.name=gmo_es_cluster
ELASTIC_USERNAME=elastic
ELASTIC_PASSWORD=pa55w0rd
bootstrap.memory_lock=true
xpack.security.enabled=true
xpack.security.http.ssl.enabled=false
ES_JAVA_OPTS=-Xms1g -Xmx1g
# password for elastic user
ELASTIC_PASSWORD=pa55w0rd

View File

@ -0,0 +1,22 @@
!/bin/bash
# create a user on es to allow kibana to connect to es
# from es 8 kibana cannot connect with elastic user.
# elastic user can be use to login form kibana UI
# Wait for elasticsearch to start
echo "--- waiting for elasticsearch to start..."
until curl -u elastic:${ELASTIC_PASSWORD} -s http://localhost:9200 >/dev/null; do
sleep 2
done
echo "--- elasticsearch is ready. Creating the Kibana user..."
# create a user for Kibana
curl -X POST http://localhost:9200/_security/user/kibana_system_user \
-u elastic:${ELASTIC_PASSWORD} \
-H "Content-Type: application/json" \
-d '{
"password" : "kibanapassword",
"roles" : [ "kibana_system" ],
"full_name" : "Kibana System User"
}'

View File

@ -1,4 +1,11 @@
ELASTICSEARCH_HOSTS=http://wwwgmo-elasticsearch:9200
ELASTICSEARCH_USERNAME=elastic
ELASTICSEARCH_PASSWORD=pa55w0rd
xpack.security.enabled=true
# es url
ELASTICSEARCH_HOSTS=http://elasticsearch:9200
# username (technical) with kibana connects to elasticsearch
# the username is create with docker/elasticsearch/create_kibana_user.sh
# script
ELASTICSEARCH_USERNAME=kibana_system_user
# password for username
ELASTICSEARCH_PASSWORD=kibanapassword
# acitve https
SERVER_SSL_ENABLED=true
SERVER_SSL_KEY="/usr/share/kibana/config/certs/tls.key"

View File

@ -6,8 +6,7 @@ MYSQL_USER=wwwgmo
MYSQL_PASSWORD=password
MYSQL_TCP_PORT=3306
# phpmyadmin
PMA_HOST=wwwgmo-mariadb
PMA_HOST=mariadb
PMA_USER=root
PMA_PASSWORD=pa55w0rd
PMA_PORT=3306
PMA_ARBITRARY=1

View File

@ -17,10 +17,17 @@
#add_header Referrer-Policy "origin-when-cross-origin" always;
#add_header Strict-Transport-Security "max-age=31536000" always;
server {
listen 8080 default_server;
return 301 https://$host$request_uri;
}
server {
index index.php;
root /var/www/html;
listen 8080;
listen 8443 ssl;
ssl_certificate /etc/nginx/certs/tls.crt;
ssl_certificate_key /etc/nginx/certs/tls.key;
server_name _;
error_log /dev/stderr;
access_log /dev/stdout;
@ -49,7 +56,7 @@
location ~* \.php$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass wwwgmo-php-fpm:9000;
fastcgi_pass php-fpm:9000;
#fastcgi_pass archivescacm-php-fpm:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

View File

@ -1,22 +1,23 @@
# site
SITE_TITLE="Stack GMo - PHP-FPM - MariaDB - Elasticsearch"
# must be the same that DOCKER_IMAGE_VERSION define in .env
SITE_VERSION="3.25"
SITE_VERSION=${DOCKER_IMAGE_VERSION}
# db
DB_NAME=wwwgmo
DB_USER=wwwgmo
DB_PASSWORD=password
DB_HOST=wwwgmo-mariadb
DB_HOST=mariadb
DB_PORT=3306
DB_TABLE=tbl_email
# PMA
# the port must be the same as PMA_PORT_WEB define in .env on root project path
PMA_URL=http://gmoadm.gmolab.net:8084
KIBANA_URL=http://gmoadm.gmolab.net:5601
PMA_URL=https://docker1.gmolab.net:8084
KIBANA_URL=https://docker1.gmolab.net:5601
# Elsaticsearch/kibana
ES_HOST=wwwgmo-elasticsearch:9200
ES_HOST=elasticsearch:9200
ES_USER=elastic
ES_PASSWORD=pa55w0rd
ES_INDEX=wwwgmo_index
KIB_PORT=5601

View File

@ -1,7 +1,7 @@
#https://hub.docker.com/r/rhamdeew/docker-php-8-fpm-alpine/dockerfile
#https://github.com/elastic/elasticsearch-php
FROM php:8.2.6-fpm-alpine
FROM php:8.4-fpm-alpine3.22
LABEL maintainer="gilles.mouchet@gmail.com"
RUN apk add --no-cache mysql-client msmtp perl wget procps shadow libzip libpng libjpeg-turbo libwebp freetype icu

View File

@ -0,0 +1,12 @@
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/tls.crt
SSLCertificateKeyFile /etc/apache2/ssl/tls.key
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

View File

@ -0,0 +1 @@
<?php

View File

@ -26,4 +26,4 @@ version: 1.0.0
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
# Also set the docker image tag
appVersion: "3.25-amd64"
appVersion: "3.3.0"

View File

@ -11,7 +11,7 @@ data:
cluster.name: "wwwgmo-es"
discovery.type: "single-node"
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
ELASTIC_USERNAME: elastic
ELASTIC_HOST: "service-elasticsearch"
xpack.security.enabled: "true"
xpack.security.transport.ssl.enabled: "true"
xpack.security.transport.ssl.enabled: "false"
xpack.security.http.ssl.enabled: "false"

View File

@ -9,4 +9,8 @@ metadata:
{{- include "site.labels" . | nindent 4 }}
type: Opaque
stringData:
ELASTIC_USERNAME: elastic
ELASTIC_PASSWORD: "{{ required ".Values.elastic.password entry is required!" .Values.elastic.password }}"
# user for kibana to connect on elasticsearch
KIBANA_PASSWORD: "{{ required ".Values.kibana.password entry is required!" .Values.kibana.password }}"
KIBANA_USERNAME: "{{ required ".Values.kibana.username entry is required!" .Values.kibana.username }}"

View File

@ -78,7 +78,22 @@ spec:
failureThreshold: 3
initialDelaySeconds: 30
timeoutSeconds: 5
lifecycle:
postStart:
exec:
command:
- "/bin/sh"
- "-c"
- |
loop=0
until curl -s http://localhost:9200 | grep -q "missing authentication credentials"; do let loop=loop+1 ; sleep 30; if [ $loop -ge 4 ]; then exit 1; fi; done
echo "Setting sihusearch role and user/password"
loop=0
echo "Setting Kibana System password"
curl -s -X POST -u "elastic:{{ required ".Values.elastic.password entry is required!" .Values.elastic.password }}" -H "Content-Type: application/json" http://localhost:9200/_security/user/kibana_system/_password -d "{\"password\" : \"{{ required ".Values.kibana.password entry is required!" .Values.kibana.password }}\"}"
echo "All done!"
initContainers:
- name: fix-permissions
image: busybox
@ -118,14 +133,8 @@ spec:
app: elastic
tier: elastic
spec:
{{- if eq "k3s" $.Values.kube }}
accessModes: [ "ReadWriteOnce" ]
storageClassName: {{ required ".Values.elastic.persistentVolumeClaim.k3sStorageClassName entry is required!" .Values.elastic.persistentVolumeClaim.k3sStorageClassName }}
{{- end }}
{{- if eq "k8s" $.Values.kube }}
accessModes: [ "ReadWriteMany" ]
storageClassName: {{ required ".Values.elastic.persistentVolumeClaim.k8sStorageClassName entry is required!" .Values.elastic.persistentVolumeClaim.k8sStorageClassName }}
{{- end }}
accessModes: {{ required ".Values.common.pvc.accessModes entry is required!" .Values.common.pvc.accessModes }}
storageClassName: {{ required ".Values.common.pvc.storageClassName entry is required!" .Values.common.pvc.storageClassName }}
resources:
requests:
storage: {{ required ".Values.elastic.persistentVolumeClaim.storageRequest entry is required!" .Values.elastic.persistentVolumeClaim.storageRequest }}

View File

@ -7,6 +7,17 @@ metadata:
app: site
tier: kibana
{{- include "site.labels" . | nindent 4 }}
# envFrom:
# - secretRef:
# name: secret-elasticsearch
data:
ELASTICSEARCH_HOSTS: "{{ required ".Values.kibana.host entry is required!" .Values.kibana.host }}"
#ELASTICSEARCH_HOSTS: "{{ required ".Values.elastic.host entry is required!" .Values.elastic.host }}"
# ELASTICSEARCH_USERNAME: "{{ required ".Values.kibana.username entry is required!" .Values.kibana.username }}"
# ELASTICSEARCH_PASSWORD: "{{ required ".Values.kibana.password entry is required!" .Values.kibana.password }}"
#KIBANA_USERNAME: "{{ required ".Values.kibana.username entry is required!" .Values.kibana.username }}"
#KIBANA_PASSWORD: "{{ required ".Values.kibana.password entry is required!" .Values.kibana.password }}"
#KIBANA_USERNAME: "{{ required ".Values.kibana.username entry is required!" .Values.kibana.username }}"
#server.ssl.enabled: false
ELASTICSEARCH_HOSTS: "{{ required ".Values.elastic.host entry is required!" .Values.elastic.host }}"
ELASTICSEARCH_USERNAME: "{{ required ".Values.kibana.username entry is required!" .Values.kibana.username }}"

View File

@ -24,7 +24,7 @@ spec:
automountServiceAccountToken: false
containers:
- name: kibana
image: docker.elastic.co/kibana/kibana:7.17.10
image: docker.elastic.co/kibana/kibana:{{ required ".Values.elastic.imageTag entry is required!" .Values.elastic.imageTag }}
imagePullPolicy: IfNotPresent
envFrom:

View File

@ -4,17 +4,13 @@ metadata:
namespace: {{ .Release.Namespace }}
name: ingress-kibana
spec:
{{- if eq "k3s" $.Values.kube }}
ingressClassName: traefik
{{- end }}
{{- if eq "k8s" $.Values.kube }}
ingressClassName: nginx
{{- end }}
ingressClassName: {{ required ".Values.common.ingress.ingressClassName entry is required!" .Values.common.ingress.ingressClassName }}
{{- if .Values.site.tls.enabled }}
tls:
- hosts:
{{ required ".Values.site.ingress.kibana.hosts entry is required!" .Values.site.ingress.kibana.hosts }}
{{ required ".Values.site.ingres.kibana.hosts entry is required!" .Values.site.ingress.kibana.hosts }}
secretName: secret-ingress-tls
{{- end }}
rules:
- host: {{ required ".Values.site.urlKibana entry is required!" .Values.site.urlKibana }}
http:
@ -26,4 +22,3 @@ spec:
name: service-kibana
port:
number: 5601

View File

@ -7,4 +7,12 @@ metadata:
{{- include "site.labels" . | nindent 4 }}
type: Opaque
stringData:
ELASTICSEARCH_PASSWORD: "{{ required ".Values.elastic.password entry is required!" .Values.elastic.password }}"
#ELASTICSEARCH_PASSWORD: "{{ required ".Values.elastic.password entry is required!" .Values.elastic.password }}"
#ELASTIC_USERNAME: elastic
#ELASTIC_PASSWORD: "{{ required ".Values.elastic.password entry is required!" .Values.elastic.password }}"
#KIBANA_PASSWORD: kibanaPass55w0rd
#KIBANA_USERNAME: kibana_system_user
#ELASTICSEARCH_USERNAME: "{{ required ".Values.kibana.username entry is required!" .Values.kibana.username }}"
ELASTICSEARCH_PASSWORD: "{{ required ".Values.kibana.password entry is required!" .Values.kibana.password }}"
#ELASTICSEARCH_HOSTS: "{{ required ".Values.elastic.host entry is required!" .Values.elastic.host }}"

View File

@ -8,7 +8,6 @@ metadata:
data:
MYSQL_DATABASE: "{{ required ".Values.mariadb.databaseName entry is required!" .Values.mariadb.databaseName }}"
MYSQL_USER: "{{ required ".Values.site.phpfpmSite.db.user entry is required!" .Values.site.phpfpmSite.db.user }}"
MYSQL_PASSWORD: "{{ required ".Values.mariadb.dbPass entry is required!" .Values.mariadb.dbPass }}"
---
apiVersion: v1
kind: ConfigMap

View File

@ -0,0 +1,55 @@
# templates/mariadb/job-mariadb-backup-initial.yaml
# For the pod to start properly, the backup job must be run only once during deployment.
# This initial run is to create the backup Persistent Volume Claim (PVC).
# The pod depends on the presence of this PVC, identified as 'mariadb-datadir-bck',
# and will not be able to launch without its creation.
# ----
# Pour que le pod puisse démarrer correctement, il est nécessaire d'exécuter
# le job de sauvegarde une seule fois au moment du déploiement.
# Cette exécution initiale a pour but de créer le Persistent Volume Claim (PVC) de sauvegarde.
# En effet, le pod est dépendant de la présence de ce PVC, identifié comme 'mariadb-datadir-bck',
# et ne pourra pas se lancer sans sa création préalable.
# ----
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "site.fullname" . }}-mariadb-backup-initial
namespace: {{ .Release.Namespace }}
labels:
{{- include "site.labels" . | nindent 4 }}
spec:
template:
metadata:
labels:
app: mariadb
tier: cronjob-initial
{{- include "site.labels" . | nindent 8 }}
spec:
automountServiceAccountToken: false
containers:
- image: {{ required ".Values.mariadb.repository entry is required!" .Values.mariadb.repository }}:{{ required ".Values.mariadb.tag entry is required!" .Values.mariadb.tag }}
imagePullPolicy: IfNotPresent
name: cronjob-mariadb-backupdb-initial
envFrom:
- configMapRef:
name: configmap-mariadb-envvars
- secretRef:
name: secret-mariadb
command: ["/bin/sh", "-c"]
args:
- set -x;
ls -l /var/backups;
/usr/bin/mysqldump --verbose --hex-blob --complete-insert --single-transaction --skip-lock-tables --skip-add-locks --routines -h service-mariadb -uroot -p$MYSQL_ROOT_PASSWORD $MYSQL_DATABASE | gzip - > /var/backups/$MYSQL_DATABASE-$(date +%Y-%m-%d_%H%M%S).sql.gz;
# Note: you might want to adjust the find command if this is the very first backup
# find /var/backups/ -mindepth 1 -type f -mtime +14 -exec rm {} \;
volumeMounts:
- name: mariadb-datadir-bck
mountPath: /var/backups
restartPolicy: OnFailure # Important for Jobs
terminationGracePeriodSeconds: {{ required ".Values.mariadb.terminationGracePeriodSeconds entry is required!" .Values.mariadb.terminationGracePeriodSeconds }}
volumes:
- name: mariadb-datadir-bck
persistentVolumeClaim:

View File

@ -8,16 +8,8 @@ metadata:
annotations:
helm.sh/resource-policy: keep
spec:
{{- if eq "k3s" $.Values.kube }}
accessModes:
- ReadWriteOnce
storageClassName: {{ required ".Values.mariadb.persistentVolumeClaim.k3sStorageClassName entry is required!" .Values.mariadb.persistentVolumeClaim.k3sStorageClassName }}
{{- end }}
{{- if eq "k8s" $.Values.kube }}
accessModes:
- ReadWriteMany
storageClassName: {{ required ".Values.mariadb.persistentVolumeClaim.k8sStorageClassName entry is required!" .Values.mariadb.persistentVolumeClaim.k8sStorageClassName }}
{{- end }}
accessModes: {{ required ".Values.common.pvc.accessModes entry is required!" .Values.common.pvc.accessModes }}
storageClassName: {{ required ".Values.common.pvc.storageClassName entry is required!" .Values.common.pvc.storageClassName }}
resources:
requests:
storage: {{ required ".Values.site.marioadb.persistentVolumeClaim.storageRequest entry is required!" .Values.mariadb.persistentVolumeClaim.storageRequest }}
@ -32,16 +24,8 @@ metadata:
annotations:
helm.sh/resource-policy: keep
spec:
{{- if eq "k3s" $.Values.kube }}
accessModes:
- ReadWriteOnce
storageClassName: {{ required ".Values.mariadb.persistentVolumeClaim.k3sStorageClassName entry is required!" .Values.mariadb.persistentVolumeClaim.k3sStorageClassName }}
{{- end }}
{{- if eq "k8s" $.Values.kube }}
accessModes:
- ReadWriteMany
storageClassName: {{ required ".Values.mariadb.persistentVolumeClaim.k8sStorageClassName entry is required!" .Values.mariadb.persistentVolumeClaim.k8sStorageClassName }}
{{- end }}
accessModes: {{ required ".Values.common.pvc.accessModes entry is required!" .Values.common.pvc.accessModes }}
storageClassName: {{ required ".Values.common.pvc.storageClassName entry is required!" .Values.common.pvc.storageClassName }}
resources:
requests:
storage: {{ required ".Values.mariadb.persistentVolumeClaim.backupdDbStorageRequest entry is required!" .Values.mariadb.persistentVolumeClaim.backupdDbStorageRequest }}
storage: {{ required ".Values.mariadb.persistentVolumeClaim.backupDbStorageRequest entry is required!" .Values.mariadb.persistentVolumeClaim.backupDbStorageRequest }}

View File

@ -8,3 +8,4 @@ metadata:
type: Opaque
stringData:
MYSQL_ROOT_PASSWORD: "{{ required ".Values.mariadb.rootPass entry is required!" .Values.mariadb.rootPass }}"
MYSQL_PASSWORD: "{{ required ".Values.mariadb.dbPass entry is required!" .Values.mariadb.dbPass }}"

View File

@ -37,14 +37,20 @@ spec:
ports:
- containerPort: 3306
name: mariadb
# The startupProbe is used to determine whether the application has started successfully
# before checking the other probes (livenessProbe and readinessProbe).
# This is useful for databases like MariaDB, as they can take a while to start up.
startupProbe:
tcpSocket:
port: 3306
failureThreshold: 12
periodSeconds: 10
timeoutSeconds: 5
initialDelaySeconds: 10 # waiting time before the first test
periodSeconds: 10 # test frequency (every 10 seconds)
failureThreshold: 30 # number of failures before considering the container not starting
# The livenessProbe is used to determine whether the MariaDB container is still alive,
# i.e., whether it is functioning properly.
# If the probe fails, Kubernetes will restart the container.
livenessProbe:
tcpSocket:
port: 3306
@ -53,13 +59,29 @@ spec:
initialDelaySeconds: 0
timeoutSeconds: 5
# The readinessProbe is used to determine whether the container is ready to receive traffic.
# This is important because MariaDB might be up and running but not yet ready to serve
# queries (for example, if restore or prepare queries are in progress).
readinessProbe:
initialDelaySeconds: 15
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
tcpSocket:
port: 3306
readinessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 3
initialDelaySeconds: 0
timeoutSeconds: 5
#readinessProbe:
# tcpSocket:
# port: 3306
# periodSeconds: 10
# failureThreshold: 3
# initialDelaySeconds: 0
# timeoutSeconds: 5
resources:
requests:

View File

@ -13,8 +13,10 @@ data:
DB_NAME: "{{ required ".Values.site.phpfpmSite.db.name entry is required!" .Values.site.phpfpmSite.db.name }}"
DB_PORT: "{{ required ".Values.site.phpfpmSite.db.port entry is required!" .Values.site.phpfpmSite.db.port }}"
DB_TABLE: "{{ required ".Values.site.phpfpmSite.db.tabl entry is required!" .Values.site.phpfpmSite.db.tabl }}"
PMA_URL: "https://{{ required ".Values.site.urlPma entry is required!" .Values.site.urlPma }}"
PMA_URL: "{{ required ".Values.site.proto entry is required!" .Values.site.proto }}://{{ required ".Values.site.urlPma entry is required!" .Values.site.urlPma }}"
#PMA_URL: "{{ required ".Values.site.urlPma entry is required!" .Values.site.urlPma }}"
ES_HOST: "{{ required ".Values.site.phpfpmSite.es.host entry is required!" .Values.site.phpfpmSite.es.host }}"
ES_USER: "{{ required ".Values.site.phpfpmSite.es.user entry is required!" .Values.site.phpfpmSite.es.user }}"
ES_INDEX: "{{ required ".Values.site.phpfpmSite.es.index entry is required!" .Values.site.phpfpmSite.es.index }}"
KIBANA_URL: "https://{{ required ".Values.site.utlKibana entry is required!" .Values.site.urlKibana }}"
KIBANA_URL: "{{ required ".Values.site.proto entry is required!" .Values.site.proto }}://{{ required ".Values.site.urlKibana entry is required!" .Values.site.urlKibana }}"
#KIBANA_URL: "{{ required ".Values.site.urlKibana entry is required!" .Values.site.urlKibana }}"

View File

@ -99,7 +99,7 @@ spec:
# - ALL
### Container 2 : PHP-FPM
- image: {{ required ".Values.site.phpfpmSite.repository entry is required!" .Values.site.phpfpmSite.repository }}:{{ required ".Chart.AppVersion entry is required!" .Chart.AppVersion }}
- image: {{ required ".Values.site.phpfpmSite.repository entry is required!" .Values.site.phpfpmSite.repository }}:{{ required "Values.site.phpfpmSite.imageTag entry is required!" .Values.site.phpfpmSite.imageTag }}
imagePullPolicy: {{ required ".Values.site.phpfpmSite.pullPolicy entry is required!" .Values.site.phpfpmSite.pullPolicy }}
name: phpfpm

View File

@ -22,16 +22,13 @@ metadata:
{{- end }}
spec:
{{- if eq "k3s" $.Values.kube }}
ingressClassName: traefik
{{- end }}
{{- if eq "k8s" $.Values.kube }}
ingressClassName: nginx
{{- end }}
ingressClassName: {{ required ".Values.common.ingress.ingressClassName entry is required!" .Values.common.ingress.ingressClassName }}
{{- if .Values.site.tls.enabled }}
tls:
- hosts:
{{ required ".Values.site.ingress.site.hosts entry is required!" .Values.site.ingress.site.hosts }}
secretName: secret-ingress-tls
{{- end }}
rules:
- host: {{ required ".Values.site.host entry is required!" .Values.site.host }}
http:
@ -43,4 +40,3 @@ spec:
name: service-site
port:
number: 8080

View File

@ -10,16 +10,8 @@ metadata:
annotations:
helm.sh/resource-policy: keep
spec:
{{- if eq "k3s" $.Values.kube }}
accessModes:
- ReadWriteOnce
storageClassName: {{ required ".Values.site.persistentVolumeClaim.k3sStorageClassName entry is required!" .Values.site.persistentVolumeClaim.k3sStorageClassName }}
{{- end }}
{{- if eq "k8s" $.Values.kube }}
accessModes:
- ReadWriteMany
storageClassName: {{ required ".Values.site.persistentVolumeClaim.k8sStorageClassName entry is required!" .Values.site.persistentVolumeClaim.k8sStorageClassName }}
{{- end }}
accessModes: {{ required ".Values.common.pvc.accessModes entry is required!" .Values.common.pvc.accessModes }}
storageClassName: {{ required ".Values.common.pvc.storageClassName entry is required!" .Values.common.pvc.storageClassName }}
resources:
requests:
storage: {{ required ".Values.site.persistentVolumeClaim.storageRequest entry is required!" .Values.site.persistentVolumeClaim.storageRequest }}
storage: {{ required ".Values.site.persistentVolumeClaim.storageRequest entry is required!" .Values.site.persistentVolumeClaim.storageRequest }}

View File

@ -7,4 +7,3 @@ kind: Secret
metadata:
name: secret-ingress-tls
namespace: {{ .Release.Namespace }}
type: kubernetes.io/tls

View File

@ -5,4 +5,3 @@ kind: Secret
metadata:
name: secret-regcred
namespace: {{ .Release.Namespace }}
type: kubernetes.io/dockerconfigjson

View File

@ -9,4 +9,3 @@ type: Opaque
stringData:
DB_PASSWORD: "{{ required ".Values.mariadb.dbPass entry is required!" .Values.mariadb.dbPass }}"
ES_PASSWORD: "{{ required ".Values.elastic.password entry is required!" .Values.elastic.password }}"

View File

@ -15,4 +15,3 @@ spec:
selector:
app: site
tier: backend
type: ClusterIP

View File

@ -10,6 +10,13 @@ metadata:
#traefik.ingress.kubernetes.io/rewrite-target: /
#traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip
{{- end }}
{{- if eq "kind" $.Values.kube }}
#kubernetes.io/ingress.allow-http: "false"
#nginx.ingress.kubernetes.io/affinity: "cookie"
##nginx.ingress.kubernetes.io/session-cookie-name: "SAUTHSESSION*"
#nginx.ingress.kubernetes.io/proxy-body-size: "32m"
#nginx.org/client-max-body-size: "32m"
{{- end }}
{{- if eq "k8s" $.Values.kube }}
#kubernetes.io/ingress.allow-http: "false"
#nginx.ingress.kubernetes.io/affinity: "cookie"
@ -18,16 +25,13 @@ metadata:
#nginx.org/client-max-body-size: "32m"
{{- end }}
spec:
{{- if eq "k3s" $.Values.kube }}
ingressClassName: traefik
{{- end }}
{{- if eq "k8s" $.Values.kube }}
ingressClassName: nginx
{{- end }}
ingressClassName: {{ required ".Values.common.ingress.ingressClassName entry is required!" .Values.common.ingress.ingressClassName }}
{{- if .Values.site.tls.enabled }}
tls:
- hosts:
{{ required ".Values.site.ingress.pma.hosts entry is required!" .Values.site.ingress.pma.hosts }}
secretName: secret-ingress-tls
{{- end }}
rules:
- host: {{ required ".Values.site.urlPma entry is required!" .Values.site.urlPma }}
http:
@ -39,4 +43,3 @@ spec:
name: service-pma
port:
number: 80

View File

@ -11,4 +11,3 @@ spec:
ports:
- protocol: TCP
port: 80
targetPort: 80

View File

@ -5,22 +5,26 @@
# elasticsearch
elastic:
priorityClassName: system-cluster-critical
imageTag: 7.17.16
imageTag: 9.0.2
persistentVolumeClaim:
#storageRequest: 1Gi
storageRequest: 500M
k3sStorageClassName: local-path
kindStorageClassName: standard
k8sStorageClassName: longhorn
host: http://service-elasticsearch:9200
kibana:
username: elastic
imageTag: 9.0.2
username: kibana_system_user
priorityClassName: system-node-critical
host: http://statefulset-elasticsearch-0.service-elasticsearch:9200
# host: http://service-elasticsearch:9200
mariadb:
repository: mariadb
pullPolicy: Always
tag: "10.11.7"
#tag: "11.2"
databaseName: gmo_db
innoDbBufferPoolSize: 256M
queryCacheSize: 256M
@ -38,9 +42,12 @@ mariadb:
storageRequest: 500M
backupdDbStorageRequest: 500M
k3sStorageClassName: local-path
kindStorageClassName: standard
k8sStorageClassName: longhorn
site:
tls:
enabled: false
host: wwwgmo.gmolab.net
urlPma: wwwgmo-pma.gmolab.net
urlKibana: wwwgmo-kibana.gmolab.net
@ -77,6 +84,7 @@ site:
phpfpmSite:
repository: gmouchet/wwwgmo-php-fpm
imageTag:
pullPolicy: Always
ressourceRequest:
memory: 16M #16 Mo RAM
@ -102,8 +110,6 @@ site:
persistentVolumeClaim:
storageRequest: 500M
k3sStorageClassName: local-path
kindStorageClassName: standard
k8sStorageClassName: longhorn

View File

@ -0,0 +1,124 @@
common:
pvc:
# k3s
#accessModes: [ "ReadWriteOnce" ]
#storageClassName: local-path
# kind
#accessModes: [ "ReadWriteOnce" ]
#storageClassName: standard
# k8s
accessModes: [ "ReadWriteMany" ]
storageClassName: longhorn
ingress:
#k3s
#ingressClassName: traefik
# kind
#ingressClassName: nginx
# k8s
ingressClassName: nginx
# elasticsearch
elastic:
priorityClassName: system-cluster-critical
imageTag: 9.0.2
persistentVolumeClaim:
storageRequest: 500M
host: http://service-elasticsearch:9200
# kibana
kibana:
imageTag: 9.0.2
username: kibana_system_user
priorityClassName: system-node-critical
# host: http://service-elasticsearch:9200
# mariadb
mariadb:
repository: mariadb
pullPolicy: Always
tag: "10.11.7"
#tag: "11.2"
databaseName: gmo_db
innoDbBufferPoolSize: 256M
queryCacheSize: 256M
queryCacheLimit: 4M
ressourceRequest:
memory: 300Mi
cpu: 100m
ephemeralStorage: 128M
ressourceLimit:
memory: 1250Mi #1250 Mo RAM, au delà eviction
cpu: 200m # 0.1 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
terminationGracePeriodSeconds: 60
persistentVolumeClaim:
storageRequest: 500M
backupDbStorageRequest: 500M
# site
site:
tls:
enabled: true #k8s ssl by k8s, kind ssl by haproxy
host: wwwgmok8s.gmolab.net
proto: https
urlPma: wwwgmok8s-pma.gmolab.net
urlKibana: wwwgmok8s-kibana.gmolab.net
replicas: 1
priorityClassName: business-app-critical
terminationGracePeriodSeconds: 60
filesMountPath: /var/www/html/web
sourcesMountPath: /var/www/html
ssl_crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZmekNDQTJlZ0F3SUJBZ0lKQU5YN2sxZ3dnOVNkTUEwR0NTcUdTSWIzRFFFQkN3VUFNSUcrTVFzd0NRWUQKVlFRR0V3SkRTREVOTUFzR0ExVUVDQk1FVm1GMVpERU5NQXNHQTFVRUJ4TUVUbmx2YmpFaE1COEdBMVVFQ2hNWQpSMDFQSUV4aFltOXlZWFJ2YVhKbElDaG5iVzlzWVdJcE1UQXdMZ1lEVlFRTEV5ZFRTVXhCUWlBb1UzbHpkR1Z0ClpTQnBibVp2Y20xaGRHbHZiaUJzWVdKdmNtRjBiMmx5WlNreEVqQVFCZ05WQkFNVENVZE5UMHhoWWlCRFFURW8KTUNZR0NTcUdTSWIzRFFFSkFSWVpaWGh3Ykc5cGRDNW5iVzkwWldOb1FHZHRZV2xzTG1OdmJUQWVGdzB5TlRBMApNalF3T0RBeU1qVmFGdzB5TmpBME1qUXdPREF5TWpWYU1JSEJNUXN3Q1FZRFZRUUdFd0pEU0RFTk1Bc0dBMVVFCkNCTUVWbUYxWkRFTk1Bc0dBMVVFQnhNRVRubHZiakVoTUI4R0ExVUVDaE1ZUjAxUElFeGhZbTl5WVhSdmFYSmwKSUNobmJXOXNZV0lwTVRBd0xnWURWUVFMRXlkVFNVeEJRaUFvVTNsemRHVnRaU0JwYm1admNtMWhkR2x2YmlCcwpZV0p2Y21GMGIybHlaU2t4RlRBVEJnTlZCQU1VRENvdVoyMXZiR0ZpTG01bGRERW9NQ1lHQ1NxR1NJYjNEUUVKCkFSWVpaWGh3Ykc5cGRDNW5iVzkwWldOb1FHZHRZV2xzTG1OdmJUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQUQKZ2dFUEFEQ0NBUW9DZ2dFQkFKVXY0S1NWcndpWGFGUWZvMTBvVTVzYkIzRFM4K0djWTB1NW51VjFSN2F5SFhoaAp0ejhxYUJGaTJ3NllOVmRNNGJtSmRsNDluMk5aMmEwQlp4MmM1SFF5blc2Nk90WFZIWUVVL3RlYVlHZmJlYnpsCjhFMFVvMmFqMVQvNGNFQ0dLakxyam1DS04xQWpyVFpLVThVWWh2STJUa3NWN1EveEd3WUZ4Z3I4SXI2NlQ5WGsKa3V6bTIyUXVSb2Z5bXFLbnh4NXg0TStXQWNvZG0zRHQrTE5XNWVpYUZOMmR4L0I1S2hPMndTSWxEdHhxK3ZKNwpwR0Jxb0xQWGcwQkltRm0vUEtlQlI3KzRMR01JbG5uZ05lTzI3WmZRa2VMQmgwTDhkTklKdzFId29JdXdNdGRYCnhWM040TDByZmdQcmdKditIeHJQdXlDRGhlZEU5UWQwZEU1bWk1OENBd0VBQWFON01Ia3dDUVlEVlIwVEJBSXcKQURBWEJnTlZIUkVFRURBT2dnd3FMbWR0YjJ4aFlpNXVaWFF3RXdZRFZSMGxCQXd3Q2dZSUt3WUJCUVVIQXdFdwpIUVlEVlIwT0JCWUVGQ1AzTWRaYVBHKzdlZG5EUHA4eHhpdndtNEpKTUI4R0ExVWRJd1FZTUJhQUZPVVNUYWp0CnRranZWQUtqc3pQemJ3RExtL2x1TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFDT0pCb2dEMFlPMHk0SGdscEkKaFAwVTFQbXdUMGFObFpGNW9teXFOeGZGVHFWN2FXRnhTM2I5VWVUL09GUUlkYThzdlhsYXFTN0xLZk5zamVYagpCeC9YOG1NWUJ1Zm50bkppUGZFVTZJdGRUVmhaY1RIYlJRTFkyVjVuZ21WV3ErQ2xVMklsWmtSeWtELzcvc0NaCnV6ODhKUEJXZ1R4MnV2QXh4NGI0bFAzUzF6L1VSVmczVzR5ei9pTUVNQ1M2Ymgra3FuUXdFM05HeFZmc2swOU0KdFhnWW1jQXZrZFpNcVNJOFVYRC9pTXNLV1NYd0JFeVFVQVJ4Wi9jMVJSSzhHVGpRMUNySHE5TFM0T1R3Qnc5aAorUWxoZU0yQUhKRzdES2tLbHJENkVzN0l5RkUrOG0zVzRtbkk2S2M4anRhYVZTeGdYeTBDZmtDQ2xMaTQxV3Y5CjJ5ZGY0N3ArOTUvN1ZvUUFKQXg5MWdxL3AxcWc1V0JCeVBMNWFMS2FzTnNkUjhrOUdLYk5BVVBZZGZvUzdiTGEKcjBzTGJlYitGUmgvVEt3dFh0RWJNVGRZN1hNTWE3ZG5CeEViRWs0ZHRjZTZvZkZJRnJVUzJ0eDU0cUdzaEd2QwpiNjV0N0U3MHFvWTRTck1KWVB5amlLVjNMYnoyMWgwRVh2dXBlekpsWHQ5SHZmME41OWdKSGZONmFIOGV0TU9xCmoxalptTHpCSDRGZ3cyQlZxSGR0b1JtYjB2UHVpcGtobjVHMzYzWXQxQU1pQzdtdVcvSVYreUNiRkYxN3p0c0wKUWxiQmxoSkZDQU5KQjd5WFo4cGFtMGVuVVZVUi81TUF2U0hIV1ZwcDI2RDZmUFJWbldmQTNhc09LdDNza0hOVApBb0Fpam5uZER6Y1diWmN1cWlJRHZLK3lNQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
nginxSite:
repository: nginxinc/nginx-unprivileged
pullPolicy: Always
tag: "1.26"
nginxConfigPath: /etc/nginx/conf.d/default.conf
ressourceRequest:
memory: 16M #16 Mo RAM
cpu: 50m # 0.05 core de CPU
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image)
ressourceLimit:
memory: 128M #128 Mo RAM, au delà eviction
cpu: 500m # 0.5 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
persistentVolumeClaim:
storageRequest: 500M
ingress:
site:
hosts:
- wwwgmok8s.gmolab.net
pma:
hosts:
- wwwgmok8s-pma.gmolab.net
kibana:
hosts:
- wwwgmok8s-kibana.gmolab.net
# php-fpm
phpfpmSite:
repository: gmouchet/wwwgmo-php-fpm
imageTag: 3.3.0
pullPolicy: Always
ressourceRequest:
memory: 16M #16 Mo RAM
cpu: 50m # 0.05 core de CPU
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image)
ressourceLimit:
memory: 128M #128 Mo RAM, au delà eviction
cpu: 500m # 0.5 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
site:
title: "Stack GMo - PHP-FPM - MariaDB - Elasticsearch"
db:
name: gmo_db
user: gmo_db
host: service-mariadb
port: 3306
tabl: tbl_email
es:
host: service-elasticsearch:9200
user: elastic
index: wwwgmo_index

View File

@ -0,0 +1,13 @@
site:
ssl_key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQ1ZMK0NrbGE4SWwyaFUKSDZOZEtGT2JHd2R3MHZQaG5HTkx1WjdsZFVlMnNoMTRZYmMvS21nUll0c09tRFZYVE9HNWlYWmVQWjlqV2RtdApBV2Nkbk9SME1wMXV1anJWMVIyQkZQN1htbUJuMjNtODVmQk5GS05tbzlVLytIQkFoaW95NjQ1Z2lqZFFJNjAyClNsUEZHSWJ5Tms1TEZlMFA4UnNHQmNZSy9DSyt1ay9WNUpMczV0dGtMa2FIOHBxaXA4Y2VjZURQbGdIS0hadHcKN2ZpelZ1WG9taFRkbmNmd2VTb1R0c0VpSlE3Y2F2cnllNlJnYXFDejE0TkFTSmhadnp5bmdVZS91Q3hqQ0paNQo0RFhqdHUyWDBKSGl3WWRDL0hUU0NjTlI4S0NMc0RMWFY4VmR6ZUM5SzM0RDY0Q2IvaDhhejdzZ2c0WG5SUFVICmRIUk9ab3VmQWdNQkFBRUNnZ0VBRGpNRXRrV0tQUGx1M3ZXS21VeEVTNGY5WTZTckVtSE4wRXIyTDdBWThrVHUKVkhpTElNSksyTDl5OVdiNzlMZUc2SFRkUlBKU2l2bmwrUGNnTnd1cGNYeDd5dFV1SjdvUUE5V0VFcHRKUDdsVApxSmRZdkNLOFpxd3Q3aTBabEsvd1c1dXdsOG12K0JCZE9tOUZSOXQzYjBoSFFyMloxdmJ1SG9XZ0tETFZUOEoxCis1MXlISC9VbGlIb0E4bzkxYUd3K3F5KzllWlJrdGpxSmlOWXpGMUMzVDB5Sk1yQXdxZXU4Z09ic2k3c2kwMWkKZ254d1VISDVVckNjaXZRTzQxWFBjUW5QYzQ5dTE4bkFRSGRxTTZNL05yTzZwWENUTnY0OHY2OEZsaDlmanBqawpvUDVJN0IwRThOTE5ZSDkyMEJUbE1hRFUvYVAwdE9HRXJHblgyWElBY1FLQmdRQzZRbFpJMjAyTmZMWnVSVmhoCjBMN3A4VklXWnE3UEl2US9tRHF4Rlc4WllkQk14RXY2UFZVTTl6VHVsVVh2TlM2SE9ncHAxUGxGVVNHM2dQRzUKZU1nR1piTTZjczJwM1dmOVVjZ1ZQYXM3Q2lGYnRZZXdJS0dYMWY5OHFMTU4ybkFTd2dVU0N5eUQrZER0UVpDWQp1VlRybnhZbUkrOHlBUFpOR3pSVUVNUnh1UUtCZ1FETkRBalpWTmNOeGJaVW1YWkZrMEp1YnNLUGZVMStYZVdrCkxCYkVCaDZwVG5hOWNVTE5Cc0F1ZjI4cEpFS1FQeXc4SVFEUDIwaDJXWUdIQ1FtNFZyMEM1TVN3TFVxNGdsalgKNHJ3bmxSZE44MDNqbjJTVUJjV1lGSGdNc1EyN2ZRT2lvNnVnUnUrZ0U2ZDMwa0lYTW1waUp4eHNuN3V5L0JBOAp1Z0pBc1R6MEZ3S0JnRE56ejlJZ2dyUHJGNW91bmRPbmpwV2hqRU9UNmdaZWFZcUh5dTdRTlBpV0JLeXdMU3piCmRIczRidTdaWFpCTzZLT0NiUTMvUHp6ZXhLbWtmU0gzTTRwUTNjbnZuTkNuME9veGhVd1kxUXhpS0FUbGlLNG0KMVh6VUtOZU80cWVaQ0F5bWZEQVgxaHcvRG0vOEJLMnJ4TUd5R0xSQWlQc1BPUHJqNFBpNENReEJBb0dBTmw0bgpob0N4V095QWtPUHo4VFMvbTRwd3VoMHVUQUJYb0hVMFFCdWpTNThMYXVXNklhVFZsajZoMmRYTWRIVGJwTUhYCmRrV2RiQXdGaFNtSFUwSmtjWHo1RGdHa1cxSHNmcW1XM0NQeS91OHhTdFo3azZnSUlXL2orUEdGUTU0OU5ZV1MKUHpndjExRCt5WTJOaXBzS2pDWDBxblNjRHpRNGxmRjRJWEVkU1ZjQ2dZRUF0VVQ2Y1BYdnYxamM4WVUvN3BjTApXR21WYldjcDNXbW5VK2FoaXBVM2l6YmxEUGkvWUR0aVhKSFVoYUl1TnZySVBKL2VIT1psejRPcVViS015YzFyCjV2blUrajg3MnZOdGViVkphemd1SHBHTzY3SVFrNHdJamp0TlQrQUYybUhjdnJUVTYyay9hWHJFSGN4ekZMMTMKcW1TcHNUVWtJYXFaZ2VMUERWMWNOZWc9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
mariadb:
rootPass: pa55w0rd
dbPass: passw0rd
elastic:
password: pa55w0rd
kibana:
password: kibanaPass55w0rd

View File

@ -0,0 +1,124 @@
common:
pvc:
# k3s
#accessModes: [ "ReadWriteOnce" ]
#storageClassName: local-path
# kind
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
# k8s
#accessModes: [ "ReadWriteMany" ]
#storageClassName: longhorn
ingress:
#k3s
#ingressClassName: traefik
# kind
ingressClassName: nginx
# k8s
#ingressClassName: nginx
# elasticsearch
elastic:
priorityClassName: system-cluster-critical
imageTag: 9.0.2
persistentVolumeClaim:
storageRequest: 500M
host: http://service-elasticsearch:9200
# kibana
kibana:
imageTag: 9.0.2
username: kibana_system_user
priorityClassName: system-node-critical
# host: http://service-elasticsearch:9200
# mariadb
mariadb:
repository: mariadb
pullPolicy: Always
tag: "10.11.7"
#tag: "11.2"
databaseName: gmo_db
innoDbBufferPoolSize: 256M
queryCacheSize: 256M
queryCacheLimit: 4M
ressourceRequest:
memory: 300Mi
cpu: 100m
ephemeralStorage: 128M
ressourceLimit:
memory: 1250Mi #1250 Mo RAM, au delà eviction
cpu: 200m # 0.1 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
terminationGracePeriodSeconds: 60
persistentVolumeClaim:
storageRequest: 500M
backupDbStorageRequest: 500M
# site
site:
tls:
enabled: false
host: wwwgmokind.gmolab.net
proto: http
urlPma: wwwgmokind-pma.gmolab.net
urlKibana: wwwgmokind-kibana.gmolab.net
replicas: 1
priorityClassName: business-app-critical
terminationGracePeriodSeconds: 60
filesMountPath: /var/www/html/web
sourcesMountPath: /var/www/html
ssl_crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZmekNDQTJlZ0F3SUJBZ0lKQU5YN2sxZ3dnOVNkTUEwR0NTcUdTSWIzRFFFQkN3VUFNSUcrTVFzd0NRWUQKVlFRR0V3SkRTREVOTUFzR0ExVUVDQk1FVm1GMVpERU5NQXNHQTFVRUJ4TUVUbmx2YmpFaE1COEdBMVVFQ2hNWQpSMDFQSUV4aFltOXlZWFJ2YVhKbElDaG5iVzlzWVdJcE1UQXdMZ1lEVlFRTEV5ZFRTVXhCUWlBb1UzbHpkR1Z0ClpTQnBibVp2Y20xaGRHbHZiaUJzWVdKdmNtRjBiMmx5WlNreEVqQVFCZ05WQkFNVENVZE5UMHhoWWlCRFFURW8KTUNZR0NTcUdTSWIzRFFFSkFSWVpaWGh3Ykc5cGRDNW5iVzkwWldOb1FHZHRZV2xzTG1OdmJUQWVGdzB5TlRBMApNalF3T0RBeU1qVmFGdzB5TmpBME1qUXdPREF5TWpWYU1JSEJNUXN3Q1FZRFZRUUdFd0pEU0RFTk1Bc0dBMVVFCkNCTUVWbUYxWkRFTk1Bc0dBMVVFQnhNRVRubHZiakVoTUI4R0ExVUVDaE1ZUjAxUElFeGhZbTl5WVhSdmFYSmwKSUNobmJXOXNZV0lwTVRBd0xnWURWUVFMRXlkVFNVeEJRaUFvVTNsemRHVnRaU0JwYm1admNtMWhkR2x2YmlCcwpZV0p2Y21GMGIybHlaU2t4RlRBVEJnTlZCQU1VRENvdVoyMXZiR0ZpTG01bGRERW9NQ1lHQ1NxR1NJYjNEUUVKCkFSWVpaWGh3Ykc5cGRDNW5iVzkwWldOb1FHZHRZV2xzTG1OdmJUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQUQKZ2dFUEFEQ0NBUW9DZ2dFQkFKVXY0S1NWcndpWGFGUWZvMTBvVTVzYkIzRFM4K0djWTB1NW51VjFSN2F5SFhoaAp0ejhxYUJGaTJ3NllOVmRNNGJtSmRsNDluMk5aMmEwQlp4MmM1SFF5blc2Nk90WFZIWUVVL3RlYVlHZmJlYnpsCjhFMFVvMmFqMVQvNGNFQ0dLakxyam1DS04xQWpyVFpLVThVWWh2STJUa3NWN1EveEd3WUZ4Z3I4SXI2NlQ5WGsKa3V6bTIyUXVSb2Z5bXFLbnh4NXg0TStXQWNvZG0zRHQrTE5XNWVpYUZOMmR4L0I1S2hPMndTSWxEdHhxK3ZKNwpwR0Jxb0xQWGcwQkltRm0vUEtlQlI3KzRMR01JbG5uZ05lTzI3WmZRa2VMQmgwTDhkTklKdzFId29JdXdNdGRYCnhWM040TDByZmdQcmdKditIeHJQdXlDRGhlZEU5UWQwZEU1bWk1OENBd0VBQWFON01Ia3dDUVlEVlIwVEJBSXcKQURBWEJnTlZIUkVFRURBT2dnd3FMbWR0YjJ4aFlpNXVaWFF3RXdZRFZSMGxCQXd3Q2dZSUt3WUJCUVVIQXdFdwpIUVlEVlIwT0JCWUVGQ1AzTWRaYVBHKzdlZG5EUHA4eHhpdndtNEpKTUI4R0ExVWRJd1FZTUJhQUZPVVNUYWp0CnRranZWQUtqc3pQemJ3RExtL2x1TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFDT0pCb2dEMFlPMHk0SGdscEkKaFAwVTFQbXdUMGFObFpGNW9teXFOeGZGVHFWN2FXRnhTM2I5VWVUL09GUUlkYThzdlhsYXFTN0xLZk5zamVYagpCeC9YOG1NWUJ1Zm50bkppUGZFVTZJdGRUVmhaY1RIYlJRTFkyVjVuZ21WV3ErQ2xVMklsWmtSeWtELzcvc0NaCnV6ODhKUEJXZ1R4MnV2QXh4NGI0bFAzUzF6L1VSVmczVzR5ei9pTUVNQ1M2Ymgra3FuUXdFM05HeFZmc2swOU0KdFhnWW1jQXZrZFpNcVNJOFVYRC9pTXNLV1NYd0JFeVFVQVJ4Wi9jMVJSSzhHVGpRMUNySHE5TFM0T1R3Qnc5aAorUWxoZU0yQUhKRzdES2tLbHJENkVzN0l5RkUrOG0zVzRtbkk2S2M4anRhYVZTeGdYeTBDZmtDQ2xMaTQxV3Y5CjJ5ZGY0N3ArOTUvN1ZvUUFKQXg5MWdxL3AxcWc1V0JCeVBMNWFMS2FzTnNkUjhrOUdLYk5BVVBZZGZvUzdiTGEKcjBzTGJlYitGUmgvVEt3dFh0RWJNVGRZN1hNTWE3ZG5CeEViRWs0ZHRjZTZvZkZJRnJVUzJ0eDU0cUdzaEd2QwpiNjV0N0U3MHFvWTRTck1KWVB5amlLVjNMYnoyMWgwRVh2dXBlekpsWHQ5SHZmME41OWdKSGZONmFIOGV0TU9xCmoxalptTHpCSDRGZ3cyQlZxSGR0b1JtYjB2UHVpcGtobjVHMzYzWXQxQU1pQzdtdVcvSVYreUNiRkYxN3p0c0wKUWxiQmxoSkZDQU5KQjd5WFo4cGFtMGVuVVZVUi81TUF2U0hIV1ZwcDI2RDZmUFJWbldmQTNhc09LdDNza0hOVApBb0Fpam5uZER6Y1diWmN1cWlJRHZLK3lNQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
nginxSite:
repository: nginxinc/nginx-unprivileged
pullPolicy: Always
tag: "1.26"
nginxConfigPath: /etc/nginx/conf.d/default.conf
ressourceRequest:
memory: 16M #16 Mo RAM
cpu: 50m # 0.05 core de CPU
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image)
ressourceLimit:
memory: 128M #128 Mo RAM, au delà eviction
cpu: 500m # 0.5 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
persistentVolumeClaim:
storageRequest: 500M
ingress:
site:
hosts:
- wwwgmokind.gmolab.net
pma:
hosts:
- wwwgmokind-pma.gmolab.net
kibana:
hosts:
- wwwgmokind-kibana.gmolab.net
# php-fpm
phpfpmSite:
repository: gmouchet/wwwgmo-php-fpm
imageTag: 3.3.0
pullPolicy: Always
ressourceRequest:
memory: 16M #16 Mo RAM
cpu: 50m # 0.05 core de CPU
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image)
ressourceLimit:
memory: 128M #128 Mo RAM, au delà eviction
cpu: 500m # 0.5 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
site:
title: "Stack GMo - PHP-FPM - MariaDB - Elasticsearch"
db:
name: gmo_db
user: gmo_db
host: service-mariadb
port: 3306
tabl: tbl_email
es:
host: service-elasticsearch:9200
user: elastic
index: wwwgmo_index

View File

@ -0,0 +1,13 @@
site:
ssl_key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQ1ZMK0NrbGE4SWwyaFUKSDZOZEtGT2JHd2R3MHZQaG5HTkx1WjdsZFVlMnNoMTRZYmMvS21nUll0c09tRFZYVE9HNWlYWmVQWjlqV2RtdApBV2Nkbk9SME1wMXV1anJWMVIyQkZQN1htbUJuMjNtODVmQk5GS05tbzlVLytIQkFoaW95NjQ1Z2lqZFFJNjAyClNsUEZHSWJ5Tms1TEZlMFA4UnNHQmNZSy9DSyt1ay9WNUpMczV0dGtMa2FIOHBxaXA4Y2VjZURQbGdIS0hadHcKN2ZpelZ1WG9taFRkbmNmd2VTb1R0c0VpSlE3Y2F2cnllNlJnYXFDejE0TkFTSmhadnp5bmdVZS91Q3hqQ0paNQo0RFhqdHUyWDBKSGl3WWRDL0hUU0NjTlI4S0NMc0RMWFY4VmR6ZUM5SzM0RDY0Q2IvaDhhejdzZ2c0WG5SUFVICmRIUk9ab3VmQWdNQkFBRUNnZ0VBRGpNRXRrV0tQUGx1M3ZXS21VeEVTNGY5WTZTckVtSE4wRXIyTDdBWThrVHUKVkhpTElNSksyTDl5OVdiNzlMZUc2SFRkUlBKU2l2bmwrUGNnTnd1cGNYeDd5dFV1SjdvUUE5V0VFcHRKUDdsVApxSmRZdkNLOFpxd3Q3aTBabEsvd1c1dXdsOG12K0JCZE9tOUZSOXQzYjBoSFFyMloxdmJ1SG9XZ0tETFZUOEoxCis1MXlISC9VbGlIb0E4bzkxYUd3K3F5KzllWlJrdGpxSmlOWXpGMUMzVDB5Sk1yQXdxZXU4Z09ic2k3c2kwMWkKZ254d1VISDVVckNjaXZRTzQxWFBjUW5QYzQ5dTE4bkFRSGRxTTZNL05yTzZwWENUTnY0OHY2OEZsaDlmanBqawpvUDVJN0IwRThOTE5ZSDkyMEJUbE1hRFUvYVAwdE9HRXJHblgyWElBY1FLQmdRQzZRbFpJMjAyTmZMWnVSVmhoCjBMN3A4VklXWnE3UEl2US9tRHF4Rlc4WllkQk14RXY2UFZVTTl6VHVsVVh2TlM2SE9ncHAxUGxGVVNHM2dQRzUKZU1nR1piTTZjczJwM1dmOVVjZ1ZQYXM3Q2lGYnRZZXdJS0dYMWY5OHFMTU4ybkFTd2dVU0N5eUQrZER0UVpDWQp1VlRybnhZbUkrOHlBUFpOR3pSVUVNUnh1UUtCZ1FETkRBalpWTmNOeGJaVW1YWkZrMEp1YnNLUGZVMStYZVdrCkxCYkVCaDZwVG5hOWNVTE5Cc0F1ZjI4cEpFS1FQeXc4SVFEUDIwaDJXWUdIQ1FtNFZyMEM1TVN3TFVxNGdsalgKNHJ3bmxSZE44MDNqbjJTVUJjV1lGSGdNc1EyN2ZRT2lvNnVnUnUrZ0U2ZDMwa0lYTW1waUp4eHNuN3V5L0JBOAp1Z0pBc1R6MEZ3S0JnRE56ejlJZ2dyUHJGNW91bmRPbmpwV2hqRU9UNmdaZWFZcUh5dTdRTlBpV0JLeXdMU3piCmRIczRidTdaWFpCTzZLT0NiUTMvUHp6ZXhLbWtmU0gzTTRwUTNjbnZuTkNuME9veGhVd1kxUXhpS0FUbGlLNG0KMVh6VUtOZU80cWVaQ0F5bWZEQVgxaHcvRG0vOEJLMnJ4TUd5R0xSQWlQc1BPUHJqNFBpNENReEJBb0dBTmw0bgpob0N4V095QWtPUHo4VFMvbTRwd3VoMHVUQUJYb0hVMFFCdWpTNThMYXVXNklhVFZsajZoMmRYTWRIVGJwTUhYCmRrV2RiQXdGaFNtSFUwSmtjWHo1RGdHa1cxSHNmcW1XM0NQeS91OHhTdFo3azZnSUlXL2orUEdGUTU0OU5ZV1MKUHpndjExRCt5WTJOaXBzS2pDWDBxblNjRHpRNGxmRjRJWEVkU1ZjQ2dZRUF0VVQ2Y1BYdnYxamM4WVUvN3BjTApXR21WYldjcDNXbW5VK2FoaXBVM2l6YmxEUGkvWUR0aVhKSFVoYUl1TnZySVBKL2VIT1psejRPcVViS015YzFyCjV2blUrajg3MnZOdGViVkphemd1SHBHTzY3SVFrNHdJamp0TlQrQUYybUhjdnJUVTYyay9hWHJFSGN4ekZMMTMKcW1TcHNUVWtJYXFaZ2VMUERWMWNOZWc9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
mariadb:
rootPass: pa55w0rd
dbPass: passw0rd
elastic:
password: pa55w0rd
kibana:
password: kibanaPass55w0rd

View File

@ -7,4 +7,7 @@ mariadb:
elastic:
password: pa55w0rd
kibana:
password: kibanaPass55w0rd

View File

@ -0,0 +1,125 @@
common:
pvc:
# k3s
#accessModes: [ "ReadWriteOnce" ]
#storageClassName: local-path
# kind
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
# k8s
#accessModes: [ "ReadWriteMany" ]
#storageClassName: longhorn
ingress:
#k3s
#ingressClassName: traefik
# kind
ingressClassName: nginx
# k8s
#ingressClassName: nginx
# elasticsearch
elastic:
priorityClassName: system-cluster-critical
imageTag: 9.0.2
persistentVolumeClaim:
storageRequest: 500M
host: http://service-elasticsearch:9200
# kibana
kibana:
imageTag: 9.0.2
#username: kibana_system_user
username: kibana_system
priorityClassName: system-node-critical
# host: http://service-elasticsearch:9200
# mariadb
mariadb:
repository: mariadb
pullPolicy: Always
tag: "10.11.7"
#tag: "11.2"
databaseName: gmo_db
innoDbBufferPoolSize: 256M
queryCacheSize: 256M
queryCacheLimit: 4M
ressourceRequest:
memory: 300Mi
cpu: 100m
ephemeralStorage: 128M
ressourceLimit:
memory: 1250Mi #1250 Mo RAM, au delà eviction
cpu: 200m # 0.1 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
terminationGracePeriodSeconds: 60
persistentVolumeClaim:
storageRequest: 500M
backupDbStorageRequest: 500M
# site
site:
tls:
enabled: false
host: wwwgmo.vdglab.net
proto: http
urlPma: wwwgmo-pma.vdglab.net
urlKibana: wwwgmo-kibana.vdglab.net
replicas: 1
priorityClassName: business-app-critical
terminationGracePeriodSeconds: 60
filesMountPath: /var/www/html/web
sourcesMountPath: /var/www/html
ssl_crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZmekNDQTJlZ0F3SUJBZ0lKQU5YN2sxZ3dnOVNkTUEwR0NTcUdTSWIzRFFFQkN3VUFNSUcrTVFzd0NRWUQKVlFRR0V3SkRTREVOTUFzR0ExVUVDQk1FVm1GMVpERU5NQXNHQTFVRUJ4TUVUbmx2YmpFaE1COEdBMVVFQ2hNWQpSMDFQSUV4aFltOXlZWFJ2YVhKbElDaG5iVzlzWVdJcE1UQXdMZ1lEVlFRTEV5ZFRTVXhCUWlBb1UzbHpkR1Z0ClpTQnBibVp2Y20xaGRHbHZiaUJzWVdKdmNtRjBiMmx5WlNreEVqQVFCZ05WQkFNVENVZE5UMHhoWWlCRFFURW8KTUNZR0NTcUdTSWIzRFFFSkFSWVpaWGh3Ykc5cGRDNW5iVzkwWldOb1FHZHRZV2xzTG1OdmJUQWVGdzB5TlRBMApNalF3T0RBeU1qVmFGdzB5TmpBME1qUXdPREF5TWpWYU1JSEJNUXN3Q1FZRFZRUUdFd0pEU0RFTk1Bc0dBMVVFCkNCTUVWbUYxWkRFTk1Bc0dBMVVFQnhNRVRubHZiakVoTUI4R0ExVUVDaE1ZUjAxUElFeGhZbTl5WVhSdmFYSmwKSUNobmJXOXNZV0lwTVRBd0xnWURWUVFMRXlkVFNVeEJRaUFvVTNsemRHVnRaU0JwYm1admNtMWhkR2x2YmlCcwpZV0p2Y21GMGIybHlaU2t4RlRBVEJnTlZCQU1VRENvdVoyMXZiR0ZpTG01bGRERW9NQ1lHQ1NxR1NJYjNEUUVKCkFSWVpaWGh3Ykc5cGRDNW5iVzkwWldOb1FHZHRZV2xzTG1OdmJUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQUQKZ2dFUEFEQ0NBUW9DZ2dFQkFKVXY0S1NWcndpWGFGUWZvMTBvVTVzYkIzRFM4K0djWTB1NW51VjFSN2F5SFhoaAp0ejhxYUJGaTJ3NllOVmRNNGJtSmRsNDluMk5aMmEwQlp4MmM1SFF5blc2Nk90WFZIWUVVL3RlYVlHZmJlYnpsCjhFMFVvMmFqMVQvNGNFQ0dLakxyam1DS04xQWpyVFpLVThVWWh2STJUa3NWN1EveEd3WUZ4Z3I4SXI2NlQ5WGsKa3V6bTIyUXVSb2Z5bXFLbnh4NXg0TStXQWNvZG0zRHQrTE5XNWVpYUZOMmR4L0I1S2hPMndTSWxEdHhxK3ZKNwpwR0Jxb0xQWGcwQkltRm0vUEtlQlI3KzRMR01JbG5uZ05lTzI3WmZRa2VMQmgwTDhkTklKdzFId29JdXdNdGRYCnhWM040TDByZmdQcmdKditIeHJQdXlDRGhlZEU5UWQwZEU1bWk1OENBd0VBQWFON01Ia3dDUVlEVlIwVEJBSXcKQURBWEJnTlZIUkVFRURBT2dnd3FMbWR0YjJ4aFlpNXVaWFF3RXdZRFZSMGxCQXd3Q2dZSUt3WUJCUVVIQXdFdwpIUVlEVlIwT0JCWUVGQ1AzTWRaYVBHKzdlZG5EUHA4eHhpdndtNEpKTUI4R0ExVWRJd1FZTUJhQUZPVVNUYWp0CnRranZWQUtqc3pQemJ3RExtL2x1TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFDT0pCb2dEMFlPMHk0SGdscEkKaFAwVTFQbXdUMGFObFpGNW9teXFOeGZGVHFWN2FXRnhTM2I5VWVUL09GUUlkYThzdlhsYXFTN0xLZk5zamVYagpCeC9YOG1NWUJ1Zm50bkppUGZFVTZJdGRUVmhaY1RIYlJRTFkyVjVuZ21WV3ErQ2xVMklsWmtSeWtELzcvc0NaCnV6ODhKUEJXZ1R4MnV2QXh4NGI0bFAzUzF6L1VSVmczVzR5ei9pTUVNQ1M2Ymgra3FuUXdFM05HeFZmc2swOU0KdFhnWW1jQXZrZFpNcVNJOFVYRC9pTXNLV1NYd0JFeVFVQVJ4Wi9jMVJSSzhHVGpRMUNySHE5TFM0T1R3Qnc5aAorUWxoZU0yQUhKRzdES2tLbHJENkVzN0l5RkUrOG0zVzRtbkk2S2M4anRhYVZTeGdYeTBDZmtDQ2xMaTQxV3Y5CjJ5ZGY0N3ArOTUvN1ZvUUFKQXg5MWdxL3AxcWc1V0JCeVBMNWFMS2FzTnNkUjhrOUdLYk5BVVBZZGZvUzdiTGEKcjBzTGJlYitGUmgvVEt3dFh0RWJNVGRZN1hNTWE3ZG5CeEViRWs0ZHRjZTZvZkZJRnJVUzJ0eDU0cUdzaEd2QwpiNjV0N0U3MHFvWTRTck1KWVB5amlLVjNMYnoyMWgwRVh2dXBlekpsWHQ5SHZmME41OWdKSGZONmFIOGV0TU9xCmoxalptTHpCSDRGZ3cyQlZxSGR0b1JtYjB2UHVpcGtobjVHMzYzWXQxQU1pQzdtdVcvSVYreUNiRkYxN3p0c0wKUWxiQmxoSkZDQU5KQjd5WFo4cGFtMGVuVVZVUi81TUF2U0hIV1ZwcDI2RDZmUFJWbldmQTNhc09LdDNza0hOVApBb0Fpam5uZER6Y1diWmN1cWlJRHZLK3lNQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
nginxSite:
repository: nginxinc/nginx-unprivileged
pullPolicy: Always
tag: "1.26"
nginxConfigPath: /etc/nginx/conf.d/default.conf
ressourceRequest:
memory: 16M #16 Mo RAM
cpu: 50m # 0.05 core de CPU
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image)
ressourceLimit:
memory: 128M #128 Mo RAM, au delà eviction
cpu: 500m # 0.5 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
persistentVolumeClaim:
storageRequest: 500M
ingress:
site:
hosts:
- wwwgmo.vdglab.net
pma:
hosts:
- wwwgmo-pma.vdglab.net
kibana:
hosts:
- wwwgmo-kibana.vdglab.net
# php-fpm
phpfpmSite:
repository: gmouchet/wwwgmo-php-fpm
imageTag: 3.3.0
pullPolicy: Always
ressourceRequest:
memory: 16M #16 Mo RAM
cpu: 50m # 0.05 core de CPU
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image)
ressourceLimit:
memory: 128M #128 Mo RAM, au delà eviction
cpu: 500m # 0.5 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
site:
title: "Stack GMo - PHP-FPM - MariaDB - Elasticsearch"
db:
name: gmo_db
user: gmo_db
host: service-mariadb
port: 3306
tabl: tbl_email
es:
host: service-elasticsearch:9200
user: elastic
index: wwwgmo_index

View File

@ -0,0 +1,13 @@
site:
ssl_key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQ1ZMK0NrbGE4SWwyaFUKSDZOZEtGT2JHd2R3MHZQaG5HTkx1WjdsZFVlMnNoMTRZYmMvS21nUll0c09tRFZYVE9HNWlYWmVQWjlqV2RtdApBV2Nkbk9SME1wMXV1anJWMVIyQkZQN1htbUJuMjNtODVmQk5GS05tbzlVLytIQkFoaW95NjQ1Z2lqZFFJNjAyClNsUEZHSWJ5Tms1TEZlMFA4UnNHQmNZSy9DSyt1ay9WNUpMczV0dGtMa2FIOHBxaXA4Y2VjZURQbGdIS0hadHcKN2ZpelZ1WG9taFRkbmNmd2VTb1R0c0VpSlE3Y2F2cnllNlJnYXFDejE0TkFTSmhadnp5bmdVZS91Q3hqQ0paNQo0RFhqdHUyWDBKSGl3WWRDL0hUU0NjTlI4S0NMc0RMWFY4VmR6ZUM5SzM0RDY0Q2IvaDhhejdzZ2c0WG5SUFVICmRIUk9ab3VmQWdNQkFBRUNnZ0VBRGpNRXRrV0tQUGx1M3ZXS21VeEVTNGY5WTZTckVtSE4wRXIyTDdBWThrVHUKVkhpTElNSksyTDl5OVdiNzlMZUc2SFRkUlBKU2l2bmwrUGNnTnd1cGNYeDd5dFV1SjdvUUE5V0VFcHRKUDdsVApxSmRZdkNLOFpxd3Q3aTBabEsvd1c1dXdsOG12K0JCZE9tOUZSOXQzYjBoSFFyMloxdmJ1SG9XZ0tETFZUOEoxCis1MXlISC9VbGlIb0E4bzkxYUd3K3F5KzllWlJrdGpxSmlOWXpGMUMzVDB5Sk1yQXdxZXU4Z09ic2k3c2kwMWkKZ254d1VISDVVckNjaXZRTzQxWFBjUW5QYzQ5dTE4bkFRSGRxTTZNL05yTzZwWENUTnY0OHY2OEZsaDlmanBqawpvUDVJN0IwRThOTE5ZSDkyMEJUbE1hRFUvYVAwdE9HRXJHblgyWElBY1FLQmdRQzZRbFpJMjAyTmZMWnVSVmhoCjBMN3A4VklXWnE3UEl2US9tRHF4Rlc4WllkQk14RXY2UFZVTTl6VHVsVVh2TlM2SE9ncHAxUGxGVVNHM2dQRzUKZU1nR1piTTZjczJwM1dmOVVjZ1ZQYXM3Q2lGYnRZZXdJS0dYMWY5OHFMTU4ybkFTd2dVU0N5eUQrZER0UVpDWQp1VlRybnhZbUkrOHlBUFpOR3pSVUVNUnh1UUtCZ1FETkRBalpWTmNOeGJaVW1YWkZrMEp1YnNLUGZVMStYZVdrCkxCYkVCaDZwVG5hOWNVTE5Cc0F1ZjI4cEpFS1FQeXc4SVFEUDIwaDJXWUdIQ1FtNFZyMEM1TVN3TFVxNGdsalgKNHJ3bmxSZE44MDNqbjJTVUJjV1lGSGdNc1EyN2ZRT2lvNnVnUnUrZ0U2ZDMwa0lYTW1waUp4eHNuN3V5L0JBOAp1Z0pBc1R6MEZ3S0JnRE56ejlJZ2dyUHJGNW91bmRPbmpwV2hqRU9UNmdaZWFZcUh5dTdRTlBpV0JLeXdMU3piCmRIczRidTdaWFpCTzZLT0NiUTMvUHp6ZXhLbWtmU0gzTTRwUTNjbnZuTkNuME9veGhVd1kxUXhpS0FUbGlLNG0KMVh6VUtOZU80cWVaQ0F5bWZEQVgxaHcvRG0vOEJLMnJ4TUd5R0xSQWlQc1BPUHJqNFBpNENReEJBb0dBTmw0bgpob0N4V095QWtPUHo4VFMvbTRwd3VoMHVUQUJYb0hVMFFCdWpTNThMYXVXNklhVFZsajZoMmRYTWRIVGJwTUhYCmRrV2RiQXdGaFNtSFUwSmtjWHo1RGdHa1cxSHNmcW1XM0NQeS91OHhTdFo3azZnSUlXL2orUEdGUTU0OU5ZV1MKUHpndjExRCt5WTJOaXBzS2pDWDBxblNjRHpRNGxmRjRJWEVkU1ZjQ2dZRUF0VVQ2Y1BYdnYxamM4WVUvN3BjTApXR21WYldjcDNXbW5VK2FoaXBVM2l6YmxEUGkvWUR0aVhKSFVoYUl1TnZySVBKL2VIT1psejRPcVViS015YzFyCjV2blUrajg3MnZOdGViVkphemd1SHBHTzY3SVFrNHdJamp0TlQrQUYybUhjdnJUVTYyay9hWHJFSGN4ekZMMTMKcW1TcHNUVWtJYXFaZ2VMUERWMWNOZWc9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
mariadb:
rootPass: pa55w0rd
dbPass: passw0rd
elastic:
password: pa55w0rd
kibana:
password: kibanaPass55w0rd

View File

@ -0,0 +1,125 @@
common:
pvc:
# k3s
#accessModes: [ "ReadWriteOnce" ]
#storageClassName: local-path
# kind
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
# k8s
#accessModes: [ "ReadWriteMany" ]
#storageClassName: longhorn
ingress:
#k3s
#ingressClassName: traefik
# kind
ingressClassName: nginx
# k8s
#ingressClassName: nginx
# elasticsearch
elastic:
priorityClassName: system-cluster-critical
imageTag: 9.0.2
persistentVolumeClaim:
storageRequest: 500M
host: http://service-elasticsearch:9200
# kibana
kibana:
imageTag: 9.0.2
#username: kibana_system_user
username: kibana_system
priorityClassName: system-node-critical
# host: http://service-elasticsearch:9200
# mariadb
mariadb:
repository: mariadb
pullPolicy: Always
tag: "10.11.7"
#tag: "11.2"
databaseName: gmo_db
innoDbBufferPoolSize: 256M
queryCacheSize: 256M
queryCacheLimit: 4M
ressourceRequest:
memory: 300Mi
cpu: 100m
ephemeralStorage: 128M
ressourceLimit:
memory: 1250Mi #1250 Mo RAM, au delà eviction
cpu: 200m # 0.1 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
terminationGracePeriodSeconds: 60
persistentVolumeClaim:
storageRequest: 500M
backupDbStorageRequest: 500M
# site
site:
tls:
enabled: false
host: gmovdg.vdglab.net
proto: https
urlPma: gmovdg-pma.vdglab.net
urlKibana: gmovdg-kibana.vdglab.net
replicas: 1
priorityClassName: business-app-critical
terminationGracePeriodSeconds: 60
filesMountPath: /var/www/html/web
sourcesMountPath: /var/www/html
ssl_crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZmekNDQTJlZ0F3SUJBZ0lKQU5YN2sxZ3dnOVNkTUEwR0NTcUdTSWIzRFFFQkN3VUFNSUcrTVFzd0NRWUQKVlFRR0V3SkRTREVOTUFzR0ExVUVDQk1FVm1GMVpERU5NQXNHQTFVRUJ4TUVUbmx2YmpFaE1COEdBMVVFQ2hNWQpSMDFQSUV4aFltOXlZWFJ2YVhKbElDaG5iVzlzWVdJcE1UQXdMZ1lEVlFRTEV5ZFRTVXhCUWlBb1UzbHpkR1Z0ClpTQnBibVp2Y20xaGRHbHZiaUJzWVdKdmNtRjBiMmx5WlNreEVqQVFCZ05WQkFNVENVZE5UMHhoWWlCRFFURW8KTUNZR0NTcUdTSWIzRFFFSkFSWVpaWGh3Ykc5cGRDNW5iVzkwWldOb1FHZHRZV2xzTG1OdmJUQWVGdzB5TlRBMApNalF3T0RBeU1qVmFGdzB5TmpBME1qUXdPREF5TWpWYU1JSEJNUXN3Q1FZRFZRUUdFd0pEU0RFTk1Bc0dBMVVFCkNCTUVWbUYxWkRFTk1Bc0dBMVVFQnhNRVRubHZiakVoTUI4R0ExVUVDaE1ZUjAxUElFeGhZbTl5WVhSdmFYSmwKSUNobmJXOXNZV0lwTVRBd0xnWURWUVFMRXlkVFNVeEJRaUFvVTNsemRHVnRaU0JwYm1admNtMWhkR2x2YmlCcwpZV0p2Y21GMGIybHlaU2t4RlRBVEJnTlZCQU1VRENvdVoyMXZiR0ZpTG01bGRERW9NQ1lHQ1NxR1NJYjNEUUVKCkFSWVpaWGh3Ykc5cGRDNW5iVzkwWldOb1FHZHRZV2xzTG1OdmJUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQUQKZ2dFUEFEQ0NBUW9DZ2dFQkFKVXY0S1NWcndpWGFGUWZvMTBvVTVzYkIzRFM4K0djWTB1NW51VjFSN2F5SFhoaAp0ejhxYUJGaTJ3NllOVmRNNGJtSmRsNDluMk5aMmEwQlp4MmM1SFF5blc2Nk90WFZIWUVVL3RlYVlHZmJlYnpsCjhFMFVvMmFqMVQvNGNFQ0dLakxyam1DS04xQWpyVFpLVThVWWh2STJUa3NWN1EveEd3WUZ4Z3I4SXI2NlQ5WGsKa3V6bTIyUXVSb2Z5bXFLbnh4NXg0TStXQWNvZG0zRHQrTE5XNWVpYUZOMmR4L0I1S2hPMndTSWxEdHhxK3ZKNwpwR0Jxb0xQWGcwQkltRm0vUEtlQlI3KzRMR01JbG5uZ05lTzI3WmZRa2VMQmgwTDhkTklKdzFId29JdXdNdGRYCnhWM040TDByZmdQcmdKditIeHJQdXlDRGhlZEU5UWQwZEU1bWk1OENBd0VBQWFON01Ia3dDUVlEVlIwVEJBSXcKQURBWEJnTlZIUkVFRURBT2dnd3FMbWR0YjJ4aFlpNXVaWFF3RXdZRFZSMGxCQXd3Q2dZSUt3WUJCUVVIQXdFdwpIUVlEVlIwT0JCWUVGQ1AzTWRaYVBHKzdlZG5EUHA4eHhpdndtNEpKTUI4R0ExVWRJd1FZTUJhQUZPVVNUYWp0CnRranZWQUtqc3pQemJ3RExtL2x1TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFDT0pCb2dEMFlPMHk0SGdscEkKaFAwVTFQbXdUMGFObFpGNW9teXFOeGZGVHFWN2FXRnhTM2I5VWVUL09GUUlkYThzdlhsYXFTN0xLZk5zamVYagpCeC9YOG1NWUJ1Zm50bkppUGZFVTZJdGRUVmhaY1RIYlJRTFkyVjVuZ21WV3ErQ2xVMklsWmtSeWtELzcvc0NaCnV6ODhKUEJXZ1R4MnV2QXh4NGI0bFAzUzF6L1VSVmczVzR5ei9pTUVNQ1M2Ymgra3FuUXdFM05HeFZmc2swOU0KdFhnWW1jQXZrZFpNcVNJOFVYRC9pTXNLV1NYd0JFeVFVQVJ4Wi9jMVJSSzhHVGpRMUNySHE5TFM0T1R3Qnc5aAorUWxoZU0yQUhKRzdES2tLbHJENkVzN0l5RkUrOG0zVzRtbkk2S2M4anRhYVZTeGdYeTBDZmtDQ2xMaTQxV3Y5CjJ5ZGY0N3ArOTUvN1ZvUUFKQXg5MWdxL3AxcWc1V0JCeVBMNWFMS2FzTnNkUjhrOUdLYk5BVVBZZGZvUzdiTGEKcjBzTGJlYitGUmgvVEt3dFh0RWJNVGRZN1hNTWE3ZG5CeEViRWs0ZHRjZTZvZkZJRnJVUzJ0eDU0cUdzaEd2QwpiNjV0N0U3MHFvWTRTck1KWVB5amlLVjNMYnoyMWgwRVh2dXBlekpsWHQ5SHZmME41OWdKSGZONmFIOGV0TU9xCmoxalptTHpCSDRGZ3cyQlZxSGR0b1JtYjB2UHVpcGtobjVHMzYzWXQxQU1pQzdtdVcvSVYreUNiRkYxN3p0c0wKUWxiQmxoSkZDQU5KQjd5WFo4cGFtMGVuVVZVUi81TUF2U0hIV1ZwcDI2RDZmUFJWbldmQTNhc09LdDNza0hOVApBb0Fpam5uZER6Y1diWmN1cWlJRHZLK3lNQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
nginxSite:
repository: nginxinc/nginx-unprivileged
pullPolicy: Always
tag: "1.26"
nginxConfigPath: /etc/nginx/conf.d/default.conf
ressourceRequest:
memory: 16M #16 Mo RAM
cpu: 50m # 0.05 core de CPU
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image)
ressourceLimit:
memory: 128M #128 Mo RAM, au delà eviction
cpu: 500m # 0.5 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
persistentVolumeClaim:
storageRequest: 500M
ingress:
site:
hosts:
- gmovdg.vdglab.net
pma:
hosts:
- gmovdg-pma.vdglab.net
kibana:
hosts:
- gmovdg-kibana.vdglab.net
# php-fpm
phpfpmSite:
repository: gmouchet/wwwgmo-php-fpm
imageTag: 3.3.0
pullPolicy: Always
ressourceRequest:
memory: 16M #16 Mo RAM
cpu: 50m # 0.05 core de CPU
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image)
ressourceLimit:
memory: 128M #128 Mo RAM, au delà eviction
cpu: 500m # 0.5 core de CPU, au delà CPU Throttle
ephemeralStorage: 512M #512 Mo de storage non persistent (en + de ce qui est dans l'image), au delà éviction
site:
title: "Stack GMo - PHP-FPM - MariaDB - Elasticsearch"
db:
name: gmo_db
user: gmo_db
host: service-mariadb
port: 3306
tabl: tbl_email
es:
host: service-elasticsearch:9200
user: elastic
index: wwwgmo_index

View File

@ -0,0 +1,13 @@
site:
ssl_key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQ1ZMK0NrbGE4SWwyaFUKSDZOZEtGT2JHd2R3MHZQaG5HTkx1WjdsZFVlMnNoMTRZYmMvS21nUll0c09tRFZYVE9HNWlYWmVQWjlqV2RtdApBV2Nkbk9SME1wMXV1anJWMVIyQkZQN1htbUJuMjNtODVmQk5GS05tbzlVLytIQkFoaW95NjQ1Z2lqZFFJNjAyClNsUEZHSWJ5Tms1TEZlMFA4UnNHQmNZSy9DSyt1ay9WNUpMczV0dGtMa2FIOHBxaXA4Y2VjZURQbGdIS0hadHcKN2ZpelZ1WG9taFRkbmNmd2VTb1R0c0VpSlE3Y2F2cnllNlJnYXFDejE0TkFTSmhadnp5bmdVZS91Q3hqQ0paNQo0RFhqdHUyWDBKSGl3WWRDL0hUU0NjTlI4S0NMc0RMWFY4VmR6ZUM5SzM0RDY0Q2IvaDhhejdzZ2c0WG5SUFVICmRIUk9ab3VmQWdNQkFBRUNnZ0VBRGpNRXRrV0tQUGx1M3ZXS21VeEVTNGY5WTZTckVtSE4wRXIyTDdBWThrVHUKVkhpTElNSksyTDl5OVdiNzlMZUc2SFRkUlBKU2l2bmwrUGNnTnd1cGNYeDd5dFV1SjdvUUE5V0VFcHRKUDdsVApxSmRZdkNLOFpxd3Q3aTBabEsvd1c1dXdsOG12K0JCZE9tOUZSOXQzYjBoSFFyMloxdmJ1SG9XZ0tETFZUOEoxCis1MXlISC9VbGlIb0E4bzkxYUd3K3F5KzllWlJrdGpxSmlOWXpGMUMzVDB5Sk1yQXdxZXU4Z09ic2k3c2kwMWkKZ254d1VISDVVckNjaXZRTzQxWFBjUW5QYzQ5dTE4bkFRSGRxTTZNL05yTzZwWENUTnY0OHY2OEZsaDlmanBqawpvUDVJN0IwRThOTE5ZSDkyMEJUbE1hRFUvYVAwdE9HRXJHblgyWElBY1FLQmdRQzZRbFpJMjAyTmZMWnVSVmhoCjBMN3A4VklXWnE3UEl2US9tRHF4Rlc4WllkQk14RXY2UFZVTTl6VHVsVVh2TlM2SE9ncHAxUGxGVVNHM2dQRzUKZU1nR1piTTZjczJwM1dmOVVjZ1ZQYXM3Q2lGYnRZZXdJS0dYMWY5OHFMTU4ybkFTd2dVU0N5eUQrZER0UVpDWQp1VlRybnhZbUkrOHlBUFpOR3pSVUVNUnh1UUtCZ1FETkRBalpWTmNOeGJaVW1YWkZrMEp1YnNLUGZVMStYZVdrCkxCYkVCaDZwVG5hOWNVTE5Cc0F1ZjI4cEpFS1FQeXc4SVFEUDIwaDJXWUdIQ1FtNFZyMEM1TVN3TFVxNGdsalgKNHJ3bmxSZE44MDNqbjJTVUJjV1lGSGdNc1EyN2ZRT2lvNnVnUnUrZ0U2ZDMwa0lYTW1waUp4eHNuN3V5L0JBOAp1Z0pBc1R6MEZ3S0JnRE56ejlJZ2dyUHJGNW91bmRPbmpwV2hqRU9UNmdaZWFZcUh5dTdRTlBpV0JLeXdMU3piCmRIczRidTdaWFpCTzZLT0NiUTMvUHp6ZXhLbWtmU0gzTTRwUTNjbnZuTkNuME9veGhVd1kxUXhpS0FUbGlLNG0KMVh6VUtOZU80cWVaQ0F5bWZEQVgxaHcvRG0vOEJLMnJ4TUd5R0xSQWlQc1BPUHJqNFBpNENReEJBb0dBTmw0bgpob0N4V095QWtPUHo4VFMvbTRwd3VoMHVUQUJYb0hVMFFCdWpTNThMYXVXNklhVFZsajZoMmRYTWRIVGJwTUhYCmRrV2RiQXdGaFNtSFUwSmtjWHo1RGdHa1cxSHNmcW1XM0NQeS91OHhTdFo3azZnSUlXL2orUEdGUTU0OU5ZV1MKUHpndjExRCt5WTJOaXBzS2pDWDBxblNjRHpRNGxmRjRJWEVkU1ZjQ2dZRUF0VVQ2Y1BYdnYxamM4WVUvN3BjTApXR21WYldjcDNXbW5VK2FoaXBVM2l6YmxEUGkvWUR0aVhKSFVoYUl1TnZySVBKL2VIT1psejRPcVViS015YzFyCjV2blUrajg3MnZOdGViVkphemd1SHBHTzY3SVFrNHdJamp0TlQrQUYybUhjdnJUVTYyay9hWHJFSGN4ekZMMTMKcW1TcHNUVWtJYXFaZ2VMUERWMWNOZWc9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
mariadb:
rootPass: pa55w0rd
dbPass: passw0rd
elastic:
password: pa55w0rd
kibana:
password: kibanaPass55w0rd

View File

@ -31,4 +31,3 @@ function checkindex($user,$password,$host,$index)
}
return checkindex($es_user,$es_password,$es_host,$es_index)
?>

View File

@ -1,10 +1,5 @@
{
"config": {
"allow-plugins": {
"php-http/discovery": true
}
},
"require": {
"elasticsearch/elasticsearch": "^7.17.2"
"elasticsearch/elasticsearch": "^8.18"
}
}

1102
src/composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
<?php
require_once "./vendor/autoload.php";
use Elasticsearch\ClientBuilder;
use Elastic\Elasticsearch\ClientBuilder;
require_once 'config.php';
function connect_es($es_host, $es_user, $es_password)

View File

@ -13,4 +13,3 @@ function connect($host, $db, $user, $password)
}
}
return connect($host, $db, $user, $password);

View File

@ -63,4 +63,3 @@ if (($handle = fopen($data_csv_file, "r")) !== FALSE) {
}
?>
</body>
</html>

View File

@ -2047,4 +2047,3 @@ html {
align-self: stretch !important;
}
}
/*# sourceMappingURL=bootstrap-grid.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -327,4 +327,3 @@ template {
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

File diff suppressed because one or more lines are too long

View File

@ -5,4 +5,3 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

File diff suppressed because one or more lines are too long

View File

@ -8972,4 +8972,3 @@ a.text-dark:hover, a.text-dark:focus {
border: 1px solid #ddd !important;
}
}
/*# sourceMappingURL=bootstrap.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -34,10 +34,31 @@ curl_close($curl);
// decode
$array = json_decode($status, true);
# get version of elasticsearch php composer
$composerLockPath = __DIR__ . '/composer.lock';
if (!file_exists($composerLockPath)) {
die("The composer.lock file was not found.\n");
}
$composerLock = json_decode(file_get_contents($composerLockPath), true);
foreach ($composerLock['packages'] as $package) {
if (strpos($package['name'], 'elasticsearch') !== false) {
$phpPackName=$package['name'];
$phpPackVersion=$package['version'];
}
}
# check if package is installed
if (empty($phpPackName)) {
$phpPackName="not installed";
$phpPackVersion="not installed";
}
// display result
echo "<h4>Informations</h4>";
echo "<p><b>Name:</b> ".$response['name']."<br>";
echo "<h3>Informations</h3>";
echo "<h4>Elasticsearch cluster</h4>";
echo "<p><b>Node name:</b> ".$response['name']."<br>";
echo "<b>Cluster name:</b> ".$response['cluster_name']."<br>";
echo "<b>Elasticsearch version:</b> ".$response['version']['number']."<br>";
echo "<b>Cluster health status:</b> ".$array['status']."</p>";
?>
echo "<h4>Elasticsearch client for PHP</h4>";
echo "<p><b>Package name:</b> ".$phpPackName."<br>";
echo "<b>Package version:</b> ".$phpPackVersion."</p>";

View File

@ -2,4 +2,3 @@
<path fill-rule="evenodd" d="M5.707 13.707a1 1 0 01-.39.242l-3 1a1 1 0 01-1.266-1.265l1-3a1 1 0 01.242-.391L10.086 2.5a2 2 0 012.828 0l.586.586a2 2 0 010 2.828l-7.793 7.793zM3 11l7.793-7.793a1 1 0 011.414 0l.586.586a1 1 0 010 1.414L5 13l-3 1 1-3z" clip-rule="evenodd"/>
<path fill-rule="evenodd" d="M9.854 2.56a.5.5 0 00-.708 0L5.854 5.855a.5.5 0 01-.708-.708L8.44 1.854a1.5 1.5 0 012.122 0l.293.292a.5.5 0 01-.707.708l-.293-.293z" clip-rule="evenodd"/>
<path d="M13.293 1.207a1 1 0 011.414 0l.03.03a1 1 0 01.03 1.383L13.5 4 12 2.5l1.293-1.293z"/>
</svg>

Before

Width:  |  Height:  |  Size: 684 B

After

Width:  |  Height:  |  Size: 678 B

View File

@ -1,4 +1,3 @@
<svg class="bi bi-trash" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M5.5 5.5A.5.5 0 016 6v6a.5.5 0 01-1 0V6a.5.5 0 01.5-.5zm2.5 0a.5.5 0 01.5.5v6a.5.5 0 01-1 0V6a.5.5 0 01.5-.5zm3 .5a.5.5 0 00-1 0v6a.5.5 0 001 0V6z"/>
<path fill-rule="evenodd" d="M14.5 3a1 1 0 01-1 1H13v9a2 2 0 01-2 2H5a2 2 0 01-2-2V4h-.5a1 1 0 01-1-1V2a1 1 0 011-1H6a1 1 0 011-1h2a1 1 0 011 1h3.5a1 1 0 011 1v1zM4.118 4L4 4.059V13a1 1 0 001 1h6a1 1 0 001-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z" clip-rule="evenodd"/>
</svg>

Before

Width:  |  Height:  |  Size: 566 B

After

Width:  |  Height:  |  Size: 560 B

View File

@ -1,3 +1,2 @@
<?php
phpinfo();
?>

View File

@ -39,4 +39,3 @@ if ($CSVvar !== FALSE) {
<?php
}
fclose($CSVvar);
?>

View File

@ -95,4 +95,3 @@ Yshi;Potte;yshi@yshipotte.ch;
Yvan;Descloux;yvan@yvandescloux.ch;
Yves;Rogne;yves@yvesrogne.ch;
Yves;Vaurien;yves@yvesvaurien.ch;
Yvon;Pasbien;yvon@yvonpasbien.ch;
1 Alex Kuze alex@alexkuze.ch
95 Yvan Descloux yvan@yvandescloux.ch
96 Yves Rogne yves@yvesrogne.ch
97 Yves Vaurien yves@yvesvaurien.ch
Yvon Pasbien yvon@yvonpasbien.ch

View File

@ -1,3 +1,2 @@
Alex;Kuze;alex@alexkuze.ch;
Ali;Gator;ali@aligator.ch;
Alphonse;Danltas;alphonse@alphonsedanltas.ch;
1 Alex Kuze alex@alexkuze.ch
2 Ali Gator ali@aligator.ch
Alphonse Danltas alphonse@alphonsedanltas.ch

View File

@ -103,4 +103,3 @@ if ($index_status == 200) {
else {
echo "Problem with index <b>".$es_index."</b> (".$index_status.")";
}
?>