diff --git a/apps-kustomized/appsmith/configmap-appsmith-appsmith.yaml b/apps-kustomized/appsmith/configmap-appsmith-appsmith.yaml new file mode 100644 index 0000000..caa16b9 --- /dev/null +++ b/apps-kustomized/appsmith/configmap-appsmith-appsmith.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +data: + APPSMITH_DB_URL: | + mongodb+srv://root:password@appsmith-mongodb.appsmith.svc.cluster.local/appsmith?retryWrites=true&authSource=admin&ssl=false + APPSMITH_DISABLE_IFRAME_WIDGET_SANDBOX: "false" + APPSMITH_KEYCLOAK_DB_DRIVER: postgresql + APPSMITH_KEYCLOAK_DB_PASSWORD: password + APPSMITH_KEYCLOAK_DB_URL: appsmith-postgresql.appsmith.svc.cluster.local:5432/keycloak + APPSMITH_KEYCLOAK_DB_USERNAME: root + APPSMITH_REDIS_URL: redis://appsmith-redis-master.appsmith.svc.cluster.local:6379 +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: appsmith + appsmith.sh/chart: appsmith-3.6.4 + name: appsmith-appsmith + namespace: appsmith diff --git a/apps-kustomized/appsmith/configmap-appsmith-mongodb-common-scripts.yaml b/apps-kustomized/appsmith/configmap-appsmith-mongodb-common-scripts.yaml new file mode 100644 index 0000000..cbde68a --- /dev/null +++ b/apps-kustomized/appsmith/configmap-appsmith-mongodb-common-scripts.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +data: + ping-mongodb.sh: | + #!/bin/bash + mongosh $TLS_OPTIONS --port $MONGODB_PORT_NUMBER --eval "db.adminCommand('ping')" + readiness-probe.sh: | + #!/bin/bash + # Run the proper check depending on the version + [[ $(mongod -version | grep "db version") =~ ([0-9]+\.[0-9]+\.[0-9]+) ]] && VERSION=${BASH_REMATCH[1]} + . /opt/bitnami/scripts/libversion.sh + VERSION_MAJOR="$(get_sematic_version "$VERSION" 1)" + VERSION_MINOR="$(get_sematic_version "$VERSION" 2)" + VERSION_PATCH="$(get_sematic_version "$VERSION" 3)" + if [[ "$VERSION_MAJOR" -ge 5 ]] || [[ "$VERSION_MAJOR" -ge 4 ]] && [[ "$VERSION_MINOR" -ge 4 ]] && [[ "$VERSION_PATCH" -ge 2 ]]; then + mongosh $TLS_OPTIONS --port $MONGODB_PORT_NUMBER --eval 'db.hello().isWritablePrimary || db.hello().secondary' | grep -q 'true' + else + mongosh $TLS_OPTIONS --port $MONGODB_PORT_NUMBER --eval 'db.isMaster().ismaster || db.isMaster().secondary' | grep -q 'true' + fi + startup-probe.sh: | + #!/bin/bash + mongosh $TLS_OPTIONS --port $MONGODB_PORT_NUMBER --eval 'db.hello().isWritablePrimary || db.hello().secondary' | grep -q 'true' +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/component: mongodb + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mongodb + helm.sh/chart: mongodb-12.1.16 + name: appsmith-mongodb-common-scripts + namespace: appsmith diff --git a/apps-kustomized/appsmith/configmap-appsmith-mongodb-scripts.yaml b/apps-kustomized/appsmith/configmap-appsmith-mongodb-scripts.yaml new file mode 100644 index 0000000..1836cca --- /dev/null +++ b/apps-kustomized/appsmith/configmap-appsmith-mongodb-scripts.yaml @@ -0,0 +1,93 @@ +apiVersion: v1 +data: + setup-hidden.sh: |- + #!/bin/bash + + . /opt/bitnami/scripts/mongodb-env.sh + + echo "Advertised Hostname: $MONGODB_ADVERTISED_HOSTNAME" + echo "Advertised Port: $MONGODB_ADVERTISED_PORT_NUMBER" + echo "Configuring node as a hidden node" + export MONGODB_REPLICA_SET_MODE="hidden" + export MONGODB_INITIAL_PRIMARY_ROOT_USER="$MONGODB_ROOT_USER" + export MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD="$MONGODB_ROOT_PASSWORD" + export MONGODB_INITIAL_PRIMARY_PORT_NUMBER="$MONGODB_PORT_NUMBER" + export MONGODB_ROOT_PASSWORD="" + export MONGODB_EXTRA_USERNAMES="" + export MONGODB_EXTRA_DATABASES="" + export MONGODB_EXTRA_PASSWORDS="" + export MONGODB_ROOT_PASSWORD_FILE="" + export MONGODB_EXTRA_USERNAMES_FILE="" + export MONGODB_EXTRA_DATABASES_FILE="" + export MONGODB_EXTRA_PASSWORDS_FILE="" + exec /opt/bitnami/scripts/mongodb/entrypoint.sh /opt/bitnami/scripts/mongodb/run.sh + setup.sh: |- + #!/bin/bash + + . /opt/bitnami/scripts/mongodb-env.sh + . /opt/bitnami/scripts/libfs.sh + . /opt/bitnami/scripts/liblog.sh + . /opt/bitnami/scripts/libvalidations.sh + + if is_empty_value "$MONGODB_ADVERTISED_PORT_NUMBER"; then + export MONGODB_ADVERTISED_PORT_NUMBER="$MONGODB_PORT_NUMBER" + fi + + info "Advertised Hostname: $MONGODB_ADVERTISED_HOSTNAME" + info "Advertised Port: $MONGODB_ADVERTISED_PORT_NUMBER" + + # Check for existing replica set in case there is no data in the PVC + # This is for cases where the PVC is lost or for MongoDB caches without + # persistence + current_primary="" + if is_dir_empty "${MONGODB_DATA_DIR}/db"; then + info "Data dir empty, checking if the replica set already exists" + current_primary=$(mongosh admin --host "appsmith-mongodb-0.appsmith-mongodb-headless.appsmith.svc.cluster.local:27017,appsmith-mongodb-1.appsmith-mongodb-headless.appsmith.svc.cluster.local:27017" --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD --eval 'db.runCommand("ismaster")' | awk -F\' '/primary/ {print $2}') + + if ! is_empty_value "$current_primary"; then + info "Detected existing primary: ${current_primary}" + fi + fi + + if ! is_empty_value "$current_primary" && [[ "$MONGODB_ADVERTISED_HOSTNAME:$MONGODB_ADVERTISED_PORT_NUMBER" == "$current_primary" ]]; then + info "Advertised name matches current primary, configuring node as a primary" + export MONGODB_REPLICA_SET_MODE="primary" + elif ! is_empty_value "$current_primary" && [[ "$MONGODB_ADVERTISED_HOSTNAME:$MONGODB_ADVERTISED_PORT_NUMBER" != "$current_primary" ]]; then + info "Current primary is different from this node. Configuring the node as replica of ${current_primary}" + export MONGODB_REPLICA_SET_MODE="secondary" + export MONGODB_INITIAL_PRIMARY_HOST="${current_primary%:*}" + export MONGODB_INITIAL_PRIMARY_PORT_NUMBER="${current_primary#*:}" + export MONGODB_SET_SECONDARY_OK="yes" + elif [[ "$MY_POD_NAME" = "appsmith-mongodb-0" ]]; then + info "Pod name matches initial primary pod name, configuring node as a primary" + export MONGODB_REPLICA_SET_MODE="primary" + else + info "Pod name doesn't match initial primary pod name, configuring node as a secondary" + export MONGODB_REPLICA_SET_MODE="secondary" + export MONGODB_INITIAL_PRIMARY_PORT_NUMBER="$MONGODB_PORT_NUMBER" + fi + + if [[ "$MONGODB_REPLICA_SET_MODE" == "secondary" ]]; then + export MONGODB_INITIAL_PRIMARY_ROOT_USER="$MONGODB_ROOT_USER" + export MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD="$MONGODB_ROOT_PASSWORD" + export MONGODB_ROOT_PASSWORD="" + export MONGODB_EXTRA_USERNAMES="" + export MONGODB_EXTRA_DATABASES="" + export MONGODB_EXTRA_PASSWORDS="" + export MONGODB_ROOT_PASSWORD_FILE="" + export MONGODB_EXTRA_USERNAMES_FILE="" + export MONGODB_EXTRA_DATABASES_FILE="" + export MONGODB_EXTRA_PASSWORDS_FILE="" + fi + + exec /opt/bitnami/scripts/mongodb/entrypoint.sh /opt/bitnami/scripts/mongodb/run.sh +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/component: mongodb + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mongodb + helm.sh/chart: mongodb-12.1.16 + name: appsmith-mongodb-scripts + namespace: appsmith diff --git a/apps-kustomized/appsmith/configmap-appsmith-redis-configuration.yaml b/apps-kustomized/appsmith/configmap-appsmith-redis-configuration.yaml new file mode 100644 index 0000000..02779ee --- /dev/null +++ b/apps-kustomized/appsmith/configmap-appsmith-redis-configuration.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +data: + master.conf: |- + dir /data + # User-supplied master configuration: + # End of master configuration + redis.conf: |- + # User-supplied common configuration: + # Enable AOF https://redis.io/topics/persistence#append-only-file + appendonly yes + # Disable RDB persistence, AOF persistence already enabled. + save "" + # End of common configuration + replica.conf: |- + dir /data + slave-read-only yes + # User-supplied replica configuration: + # End of replica configuration +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + name: appsmith-redis-configuration + namespace: appsmith diff --git a/apps-kustomized/appsmith/configmap-appsmith-redis-health.yaml b/apps-kustomized/appsmith/configmap-appsmith-redis-health.yaml new file mode 100644 index 0000000..2770887 --- /dev/null +++ b/apps-kustomized/appsmith/configmap-appsmith-redis-health.yaml @@ -0,0 +1,105 @@ +apiVersion: v1 +data: + ping_liveness_local.sh: |- + #!/bin/bash + + [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" + [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD" + response=$( + timeout -s 3 $1 \ + redis-cli \ + -h localhost \ + -p $REDIS_PORT \ + ping + ) + if [ "$?" -eq "124" ]; then + echo "Timed out" + exit 1 + fi + responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}') + if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ] && [ "$responseFirstWord" != "MASTERDOWN" ]; then + echo "$response" + exit 1 + fi + ping_liveness_local_and_master.sh: |- + script_dir="$(dirname "$0")" + exit_status=0 + "$script_dir/ping_liveness_local.sh" $1 || exit_status=$? + "$script_dir/ping_liveness_master.sh" $1 || exit_status=$? + exit $exit_status + ping_liveness_master.sh: |- + #!/bin/bash + + [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" + [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD" + response=$( + timeout -s 3 $1 \ + redis-cli \ + -h $REDIS_MASTER_HOST \ + -p $REDIS_MASTER_PORT_NUMBER \ + ping + ) + if [ "$?" -eq "124" ]; then + echo "Timed out" + exit 1 + fi + responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}') + if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ]; then + echo "$response" + exit 1 + fi + ping_readiness_local.sh: |- + #!/bin/bash + + [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" + [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD" + response=$( + timeout -s 3 $1 \ + redis-cli \ + -h localhost \ + -p $REDIS_PORT \ + ping + ) + if [ "$?" -eq "124" ]; then + echo "Timed out" + exit 1 + fi + if [ "$response" != "PONG" ]; then + echo "$response" + exit 1 + fi + ping_readiness_local_and_master.sh: |- + script_dir="$(dirname "$0")" + exit_status=0 + "$script_dir/ping_readiness_local.sh" $1 || exit_status=$? + "$script_dir/ping_readiness_master.sh" $1 || exit_status=$? + exit $exit_status + ping_readiness_master.sh: |- + #!/bin/bash + + [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" + [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD" + response=$( + timeout -s 3 $1 \ + redis-cli \ + -h $REDIS_MASTER_HOST \ + -p $REDIS_MASTER_PORT_NUMBER \ + ping + ) + if [ "$?" -eq "124" ]; then + echo "Timed out" + exit 1 + fi + if [ "$response" != "PONG" ]; then + echo "$response" + exit 1 + fi +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + name: appsmith-redis-health + namespace: appsmith diff --git a/apps-kustomized/appsmith/configmap-appsmith-redis-scripts.yaml b/apps-kustomized/appsmith/configmap-appsmith-redis-scripts.yaml new file mode 100644 index 0000000..9df4981 --- /dev/null +++ b/apps-kustomized/appsmith/configmap-appsmith-redis-scripts.yaml @@ -0,0 +1,75 @@ +apiVersion: v1 +data: + start-master.sh: | + #!/bin/bash + + [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" + if [[ ! -f /opt/bitnami/redis/etc/master.conf ]];then + cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf + fi + if [[ ! -f /opt/bitnami/redis/etc/redis.conf ]];then + cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf + fi + ARGS=("--port" "${REDIS_PORT}") + ARGS+=("--protected-mode" "no") + ARGS+=("--include" "/opt/bitnami/redis/etc/redis.conf") + ARGS+=("--include" "/opt/bitnami/redis/etc/master.conf") + exec redis-server "${ARGS[@]}" + start-replica.sh: | + #!/bin/bash + + get_port() { + hostname="$1" + type="$2" + + port_var=$(echo "${hostname^^}_SERVICE_PORT_$type" | sed "s/-/_/g") + port=${!port_var} + + if [ -z "$port" ]; then + case $type in + "SENTINEL") + echo 26379 + ;; + "REDIS") + echo 6379 + ;; + esac + else + echo $port + fi + } + + get_full_hostname() { + hostname="$1" + echo "${hostname}.${HEADLESS_SERVICE}" + } + + REDISPORT=$(get_port "$HOSTNAME" "REDIS") + + [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" + [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" + if [[ ! -f /opt/bitnami/redis/etc/replica.conf ]];then + cp /opt/bitnami/redis/mounted-etc/replica.conf /opt/bitnami/redis/etc/replica.conf + fi + if [[ ! -f /opt/bitnami/redis/etc/redis.conf ]];then + cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf + fi + + echo "" >> /opt/bitnami/redis/etc/replica.conf + echo "replica-announce-port $REDISPORT" >> /opt/bitnami/redis/etc/replica.conf + echo "replica-announce-ip $(get_full_hostname "$HOSTNAME")" >> /opt/bitnami/redis/etc/replica.conf + ARGS=("--port" "${REDIS_PORT}") + ARGS+=("--slaveof" "${REDIS_MASTER_HOST}" "${REDIS_MASTER_PORT_NUMBER}") + ARGS+=("--protected-mode" "no") + ARGS+=("--include" "/opt/bitnami/redis/etc/redis.conf") + ARGS+=("--include" "/opt/bitnami/redis/etc/replica.conf") + exec redis-server "${ARGS[@]}" +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + name: appsmith-redis-scripts + namespace: appsmith diff --git a/apps-kustomized/appsmith/configmap-kube-root-ca.crt.yaml b/apps-kustomized/appsmith/configmap-kube-root-ca.crt.yaml new file mode 100644 index 0000000..248154b --- /dev/null +++ b/apps-kustomized/appsmith/configmap-kube-root-ca.crt.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +data: + ca.crt: | + -----BEGIN CERTIFICATE----- + MIIBijCCAS+gAwIBAgIQJGb95Oq4oJVojUzKHTaK2jAKBggqhkjOPQQDAjAVMRMw + EQYDVQQKEwprdWJlcm5ldGVzMB4XDTIzMTExMDEyMzQwMloXDTMzMTEwNzEyMzQw + MlowFTETMBEGA1UEChMKa3ViZXJuZXRlczBZMBMGByqGSM49AgEGCCqGSM49AwEH + A0IABGDaf5TlkdHoEjnsi1QnUtmw+eRDyQyYBTkDYnmHUg5z6uj5DqTEAxw5oXtn + yhQNGHLzFHBU87NKnRYMS3lpOsujYTBfMA4GA1UdDwEB/wQEAwIChDAdBgNVHSUE + FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E + FgQUSLS2yUT1+1+sJtLJX79TDA5Pm48wCgYIKoZIzj0EAwIDSQAwRgIhAMeG6Nph + Sm/EN00cMgACe8OGH19nwPXu17iq7krizxYoAiEA4D6hkPQ1L6kOijW9wWS5G164 + Ks7z8KPjG6LXEfACTZk= + -----END CERTIFICATE----- +kind: ConfigMap +metadata: + annotations: + kubernetes.io/description: Contains a CA bundle that can be used to verify the + kube-apiserver when using internal endpoints such as the internal service IP + or kubernetes.default.svc. No other usage is guaranteed across distributions + of Kubernetes clusters. + name: kube-root-ca.crt + namespace: appsmith diff --git a/apps-kustomized/appsmith/ingress.networking.k8s.io-appsmith-karaokelist.yaml b/apps-kustomized/appsmith/ingress.networking.k8s.io-appsmith-karaokelist.yaml new file mode 100644 index 0000000..e909726 --- /dev/null +++ b/apps-kustomized/appsmith/ingress.networking.k8s.io-appsmith-karaokelist.yaml @@ -0,0 +1,27 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + cert-manager.io/cluster-issuer: letsencrypt + external-dns.alpha.kubernetes.io/target: armnleg.martyn.berlin + nginx.ingress.kubernetes.io/app-root: /app/karaoke/home-68b9fa05cb66516b642152fa + nginx.ingress.kubernetes.io/auth-signin: https://homeauth.martyn.berlin/oauth2/start?rd=https://$host$escaped_request_uri + nginx.ingress.kubernetes.io/auth-url: https://homeauth.martyn.berlin/oauth2/auth + name: appsmith-karaokelist + namespace: appsmith +spec: + ingressClassName: nginx + rules: + - host: karaokelist.martyn.berlin + http: + paths: + - backend: + service: + name: appsmith-appsmith + port: + number: 80 + path: / + pathType: Prefix + tls: + - hosts: + - karaokelist.martyn.berlin diff --git a/apps-kustomized/appsmith/service-appsmith-appsmith-headless.yaml b/apps-kustomized/appsmith/service-appsmith-appsmith-headless.yaml new file mode 100644 index 0000000..4ecdf9f --- /dev/null +++ b/apps-kustomized/appsmith/service-appsmith-appsmith-headless.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: appsmith + appsmith.sh/chart: appsmith-3.6.4 + name: appsmith-appsmith-headless + namespace: appsmith +spec: + clusterIP: None + clusterIPs: + - None + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: http + port: 8080 + selector: + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: appsmith diff --git a/apps-kustomized/appsmith/service-appsmith-appsmith.yaml b/apps-kustomized/appsmith/service-appsmith-appsmith.yaml new file mode 100644 index 0000000..b48c8b7 --- /dev/null +++ b/apps-kustomized/appsmith/service-appsmith-appsmith.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + metallb.io/ip-allocated-from-pool: arm + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: appsmith + appsmith.sh/chart: appsmith-3.6.4 + name: appsmith-appsmith + namespace: appsmith +spec: + clusterIP: 10.97.168.186 + clusterIPs: + - 10.97.168.186 + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: appsmith + nodePort: 31541 + port: 80 + targetPort: http + selector: + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: appsmith + type: LoadBalancer diff --git a/apps-kustomized/appsmith/service-appsmith-mongodb-arbiter-headless.yaml b/apps-kustomized/appsmith/service-appsmith-mongodb-arbiter-headless.yaml new file mode 100644 index 0000000..baa7a8a --- /dev/null +++ b/apps-kustomized/appsmith/service-appsmith-mongodb-arbiter-headless.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: arbiter + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mongodb + helm.sh/chart: mongodb-12.1.16 + name: appsmith-mongodb-arbiter-headless + namespace: appsmith +spec: + clusterIP: None + clusterIPs: + - None + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: tcp-mongodb + port: 27017 + targetPort: mongodb + selector: + app.kubernetes.io/component: arbiter + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: mongodb diff --git a/apps-kustomized/appsmith/service-appsmith-mongodb.yaml b/apps-kustomized/appsmith/service-appsmith-mongodb.yaml new file mode 100644 index 0000000..b94aab6 --- /dev/null +++ b/apps-kustomized/appsmith/service-appsmith-mongodb.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: mongodb + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mongodb + helm.sh/chart: mongodb-12.1.16 + name: appsmith-mongodb + namespace: appsmith +spec: + clusterIP: None + clusterIPs: + - None + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: mongodb + port: 27017 + targetPort: mongodb + publishNotReadyAddresses: true + selector: + app.kubernetes.io/component: mongodb + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: mongodb diff --git a/apps-kustomized/appsmith/service-appsmith-postgresql-hl.yaml b/apps-kustomized/appsmith/service-appsmith-postgresql-hl.yaml new file mode 100644 index 0000000..ba21d8a --- /dev/null +++ b/apps-kustomized/appsmith/service-appsmith-postgresql-hl.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-11.9.5 + service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" + name: appsmith-postgresql-hl + namespace: appsmith +spec: + clusterIP: None + clusterIPs: + - None + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: tcp-postgresql + port: 5432 + targetPort: tcp-postgresql + publishNotReadyAddresses: true + selector: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: postgresql diff --git a/apps-kustomized/appsmith/service-appsmith-postgresql.yaml b/apps-kustomized/appsmith/service-appsmith-postgresql.yaml new file mode 100644 index 0000000..12a5d08 --- /dev/null +++ b/apps-kustomized/appsmith/service-appsmith-postgresql.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-11.9.5 + name: appsmith-postgresql + namespace: appsmith +spec: + clusterIP: 10.100.117.209 + clusterIPs: + - 10.100.117.209 + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: tcp-postgresql + port: 5432 + targetPort: tcp-postgresql + selector: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: postgresql diff --git a/apps-kustomized/appsmith/service-appsmith-redis-headless.yaml b/apps-kustomized/appsmith/service-appsmith-redis-headless.yaml new file mode 100644 index 0000000..a166197 --- /dev/null +++ b/apps-kustomized/appsmith/service-appsmith-redis-headless.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + name: appsmith-redis-headless + namespace: appsmith +spec: + clusterIP: None + clusterIPs: + - None + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: tcp-redis + port: 6379 + targetPort: redis + selector: + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: redis diff --git a/apps-kustomized/appsmith/service-appsmith-redis-master.yaml b/apps-kustomized/appsmith/service-appsmith-redis-master.yaml new file mode 100644 index 0000000..10dcda2 --- /dev/null +++ b/apps-kustomized/appsmith/service-appsmith-redis-master.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: master + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + name: appsmith-redis-master + namespace: appsmith +spec: + clusterIP: 10.96.82.177 + clusterIPs: + - 10.96.82.177 + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: tcp-redis + port: 6379 + targetPort: redis + selector: + app.kubernetes.io/component: master + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: redis diff --git a/apps-kustomized/appsmith/service-appsmith-redis-replicas.yaml b/apps-kustomized/appsmith/service-appsmith-redis-replicas.yaml new file mode 100644 index 0000000..46b6a06 --- /dev/null +++ b/apps-kustomized/appsmith/service-appsmith-redis-replicas.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: replica + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + name: appsmith-redis-replicas + namespace: appsmith +spec: + clusterIP: 10.96.107.137 + clusterIPs: + - 10.96.107.137 + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + ports: + - name: tcp-redis + port: 6379 + targetPort: redis + selector: + app.kubernetes.io/component: replica + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: redis diff --git a/apps-kustomized/appsmith/serviceaccount-appsmith-appsmith.yaml b/apps-kustomized/appsmith/serviceaccount-appsmith-appsmith.yaml new file mode 100644 index 0000000..d31cf2c --- /dev/null +++ b/apps-kustomized/appsmith/serviceaccount-appsmith-appsmith.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: appsmith + appsmith.sh/chart: appsmith-3.6.4 + name: appsmith-appsmith + namespace: appsmith +secrets: +- name: appsmith-appsmith diff --git a/apps-kustomized/appsmith/serviceaccount-appsmith-mongodb.yaml b/apps-kustomized/appsmith/serviceaccount-appsmith-mongodb.yaml new file mode 100644 index 0000000..4a1da10 --- /dev/null +++ b/apps-kustomized/appsmith/serviceaccount-appsmith-mongodb.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +automountServiceAccountToken: true +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mongodb + helm.sh/chart: mongodb-12.1.16 + name: appsmith-mongodb + namespace: appsmith +secrets: +- name: appsmith-mongodb diff --git a/apps-kustomized/appsmith/serviceaccount-appsmith-redis.yaml b/apps-kustomized/appsmith/serviceaccount-appsmith-redis.yaml new file mode 100644 index 0000000..df17022 --- /dev/null +++ b/apps-kustomized/appsmith/serviceaccount-appsmith-redis.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +automountServiceAccountToken: true +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + name: appsmith-redis + namespace: appsmith diff --git a/apps-kustomized/appsmith/serviceaccount-default.yaml b/apps-kustomized/appsmith/serviceaccount-default.yaml new file mode 100644 index 0000000..632327a --- /dev/null +++ b/apps-kustomized/appsmith/serviceaccount-default.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: default + namespace: appsmith diff --git a/apps-kustomized/appsmith/statefulsetappsmith-appsmith.yaml b/apps-kustomized/appsmith/statefulsetappsmith-appsmith.yaml new file mode 100644 index 0000000..94d679c --- /dev/null +++ b/apps-kustomized/appsmith/statefulsetappsmith-appsmith.yaml @@ -0,0 +1,146 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: appsmith + appsmith.sh/chart: appsmith-3.6.4 + name: appsmith-appsmith + namespace: appsmith +spec: + persistentVolumeClaimRetentionPolicy: + whenDeleted: Retain + whenScaled: Retain + podManagementPolicy: OrderedReady + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: appsmith + serviceName: appsmith-appsmith + template: + metadata: + creationTimestamp: null + labels: + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: appsmith + spec: + containers: + - env: + - name: APPSMITH_ENABLE_EMBEDDED_DB + value: "0" + - name: JGROUPS_DISCOVERY_PROTOCOL + value: kubernetes.KUBE_PING + - name: APPSMITH_HEADLESS_SVC + value: appsmith-appsmith-headless + envFrom: + - configMapRef: + name: appsmith-appsmith + image: index.docker.io/appsmith/appsmith-ee:latest + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + httpGet: + path: /api/v1/health + port: 80 + scheme: HTTP + periodSeconds: 60 + successThreshold: 1 + timeoutSeconds: 1 + name: appsmith + ports: + - containerPort: 80 + name: http + protocol: TCP + - containerPort: 443 + name: https + protocol: TCP + - containerPort: 2019 + name: metrics + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: /api/v1/health + port: 80 + scheme: HTTP + periodSeconds: 60 + successThreshold: 1 + timeoutSeconds: 1 + resources: + requests: + cpu: 500m + memory: 3000Mi + startupProbe: + failureThreshold: 3 + httpGet: + path: /api/v1/health + port: 80 + scheme: HTTP + periodSeconds: 60 + successThreshold: 1 + timeoutSeconds: 1 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /appsmith-stacks + name: data + dnsPolicy: ClusterFirst + initContainers: + - command: + - sh + - -c + - until redis-cli -h appsmith-redis-master.appsmith.svc.cluster.local ping + ; do echo waiting for redis; sleep 2; done + image: docker.io/redis:7.0.15 + imagePullPolicy: IfNotPresent + name: redis-init-container + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + - command: + - sh + - -c + - until mongosh --host appsmith-mongodb.appsmith.svc.cluster.local --eval + 'db.runCommand({ping:1})' ; do echo waiting for mongo; sleep 2; done + image: docker.io/bitnamilegacy/mongodb:6.0.13 + imagePullPolicy: IfNotPresent + name: mongo-init-container + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + - command: + - sh + - -c + - until pg_isready -U $postgresuser -d $postgresdb -h appsmith-postgresql.appsmith.svc.cluster.local; + do echo waiting for postgresql; sleep 2; done + image: docker.io/bitnamilegacy/postgresql:14.5.0-debian-11-r21 + imagePullPolicy: IfNotPresent + name: psql-init-container + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + restartPolicy: Always + schedulerName: default-scheduler + serviceAccount: appsmith-appsmith + serviceAccountName: appsmith-appsmith + terminationGracePeriodSeconds: 30 + updateStrategy: + rollingUpdate: + partition: 0 + type: RollingUpdate + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + creationTimestamp: null + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: longhorn-fast + volumeMode: Filesystem + status: + phase: Pending diff --git a/apps-kustomized/appsmith/statefulsetappsmith-mongodb-arbiter.yaml b/apps-kustomized/appsmith/statefulsetappsmith-mongodb-arbiter.yaml new file mode 100644 index 0000000..e1a3a7a --- /dev/null +++ b/apps-kustomized/appsmith/statefulsetappsmith-mongodb-arbiter.yaml @@ -0,0 +1,127 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/component: arbiter + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mongodb + helm.sh/chart: mongodb-12.1.16 + name: appsmith-mongodb-arbiter + namespace: appsmith +spec: + persistentVolumeClaimRetentionPolicy: + whenDeleted: Retain + whenScaled: Retain + podManagementPolicy: OrderedReady + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: arbiter + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: mongodb + serviceName: appsmith-mongodb-arbiter-headless + template: + metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: arbiter + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mongodb + helm.sh/chart: mongodb-12.1.16 + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/component: arbiter + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: mongodb + namespaces: + - appsmith + topologyKey: kubernetes.io/hostname + weight: 1 + containers: + - env: + - name: BITNAMI_DEBUG + value: "false" + - name: MY_POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + - name: K8S_SERVICE_NAME + value: appsmith-mongodb-arbiter-headless + - name: MONGODB_REPLICA_SET_MODE + value: arbiter + - name: MONGODB_INITIAL_PRIMARY_HOST + value: appsmith-mongodb-0.appsmith-mongodb.$(MY_POD_NAMESPACE).svc.cluster.local + - name: MONGODB_REPLICA_SET_NAME + value: rs0 + - name: MONGODB_ADVERTISED_HOSTNAME + value: $(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local + - name: MONGODB_PORT_NUMBER + value: "27017" + - name: MONGODB_INITIAL_PRIMARY_ROOT_USER + value: root + - name: MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: mongodb-root-password + name: appsmith-mongodb + - name: MONGODB_REPLICA_SET_KEY + valueFrom: + secretKeyRef: + key: mongodb-replica-set-key + name: appsmith-mongodb + - name: ALLOW_EMPTY_PASSWORD + value: "no" + image: docker.io/bitnamilegacy/mongodb:6.0.13 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 6 + initialDelaySeconds: 30 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: mongodb + timeoutSeconds: 10 + name: mongodb-arbiter + ports: + - containerPort: 27017 + name: mongodb + protocol: TCP + readinessProbe: + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: mongodb + timeoutSeconds: 10 + securityContext: + runAsNonRoot: true + runAsUser: 1001 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + nodeSelector: + feature.node.kubernetes.io/cpu-cpuid.AVX: "true" + restartPolicy: Always + schedulerName: default-scheduler + securityContext: + fsGroup: 1001 + serviceAccount: appsmith-mongodb + serviceAccountName: appsmith-mongodb + terminationGracePeriodSeconds: 30 + updateStrategy: + type: RollingUpdate diff --git a/apps-kustomized/appsmith/statefulsetappsmith-mongodb.yaml b/apps-kustomized/appsmith/statefulsetappsmith-mongodb.yaml new file mode 100644 index 0000000..946ba23 --- /dev/null +++ b/apps-kustomized/appsmith/statefulsetappsmith-mongodb.yaml @@ -0,0 +1,185 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/component: mongodb + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mongodb + helm.sh/chart: mongodb-12.1.16 + name: appsmith-mongodb + namespace: appsmith +spec: + persistentVolumeClaimRetentionPolicy: + whenDeleted: Retain + whenScaled: Retain + podManagementPolicy: OrderedReady + replicas: 2 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: mongodb + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: mongodb + serviceName: appsmith-mongodb + template: + metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: mongodb + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mongodb + helm.sh/chart: mongodb-12.1.16 + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: feature.node.kubernetes.io/cpu-cpuid.AVX + operator: In + values: + - "true" + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/component: mongodb + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: mongodb + namespaces: + - appsmith + topologyKey: kubernetes.io/hostname + weight: 1 + containers: + - command: + - /scripts/setup.sh + env: + - name: BITNAMI_DEBUG + value: "false" + - name: MY_POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + - name: MY_POD_HOST_IP + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: status.hostIP + - name: K8S_SERVICE_NAME + value: appsmith-mongodb + - name: MONGODB_INITIAL_PRIMARY_HOST + value: appsmith-mongodb-0.$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local + - name: MONGODB_REPLICA_SET_NAME + value: rs0 + - name: MONGODB_ADVERTISED_HOSTNAME + value: $(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local + - name: MONGODB_ROOT_USER + value: root + - name: MONGODB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: mongodb-root-password + name: appsmith-mongodb + - name: MONGODB_REPLICA_SET_KEY + valueFrom: + secretKeyRef: + key: mongodb-replica-set-key + name: appsmith-mongodb + - name: ALLOW_EMPTY_PASSWORD + value: "no" + - name: MONGODB_SYSTEM_LOG_VERBOSITY + value: "0" + - name: MONGODB_DISABLE_SYSTEM_LOG + value: "no" + - name: MONGODB_DISABLE_JAVASCRIPT + value: "no" + - name: MONGODB_ENABLE_JOURNAL + value: "yes" + - name: MONGODB_PORT_NUMBER + value: "27017" + - name: MONGODB_ENABLE_IPV6 + value: "no" + - name: MONGODB_ENABLE_DIRECTORY_PER_DB + value: "no" + image: docker.io/bitnamilegacy/mongodb:6.0.13 + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bitnami/scripts/ping-mongodb.sh + failureThreshold: 6 + initialDelaySeconds: 30 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 10 + name: mongodb + ports: + - containerPort: 27017 + name: mongodb + protocol: TCP + readinessProbe: + exec: + command: + - /bitnami/scripts/readiness-probe.sh + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + securityContext: + runAsNonRoot: true + runAsUser: 1001 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /bitnami/mongodb + name: datadir + - mountPath: /bitnami/scripts + name: common-scripts + - mountPath: /scripts/setup.sh + name: scripts + subPath: setup.sh + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: + fsGroup: 1001 + serviceAccount: appsmith-mongodb + serviceAccountName: appsmith-mongodb + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 360 + name: appsmith-mongodb-common-scripts + name: common-scripts + - configMap: + defaultMode: 493 + name: appsmith-mongodb-scripts + name: scripts + updateStrategy: + type: RollingUpdate + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + creationTimestamp: null + name: datadir + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + storageClassName: longhorn-fast + volumeMode: Filesystem + status: + phase: Pending diff --git a/apps-kustomized/appsmith/statefulsetappsmith-postgresql.yaml b/apps-kustomized/appsmith/statefulsetappsmith-postgresql.yaml new file mode 100644 index 0000000..60193bd --- /dev/null +++ b/apps-kustomized/appsmith/statefulsetappsmith-postgresql.yaml @@ -0,0 +1,164 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-11.9.5 + name: appsmith-postgresql + namespace: appsmith +spec: + persistentVolumeClaimRetentionPolicy: + whenDeleted: Retain + whenScaled: Retain + podManagementPolicy: OrderedReady + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: postgresql + serviceName: appsmith-postgresql-hl + template: + metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-11.9.5 + name: appsmith-postgresql + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: postgresql + namespaces: + - appsmith + topologyKey: kubernetes.io/hostname + weight: 1 + containers: + - env: + - name: BITNAMI_DEBUG + value: "false" + - name: POSTGRESQL_PORT_NUMBER + value: "5432" + - name: POSTGRESQL_VOLUME_DIR + value: /bitnami/postgresql + - name: PGDATA + value: /bitnami/postgresql/data + - name: POSTGRES_USER + value: root + - name: POSTGRES_POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + key: postgres-password + name: appsmith-postgresql + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + key: password + name: appsmith-postgresql + - name: POSTGRES_DB + value: keycloak + - name: POSTGRESQL_ENABLE_LDAP + value: "no" + - name: POSTGRESQL_ENABLE_TLS + value: "no" + - name: POSTGRESQL_LOG_HOSTNAME + value: "false" + - name: POSTGRESQL_LOG_CONNECTIONS + value: "false" + - name: POSTGRESQL_LOG_DISCONNECTIONS + value: "false" + - name: POSTGRESQL_PGAUDIT_LOG_CATALOG + value: "off" + - name: POSTGRESQL_CLIENT_MIN_MESSAGES + value: error + - name: POSTGRESQL_SHARED_PRELOAD_LIBRARIES + value: pgaudit + image: docker.io/bitnamilegacy/postgresql:14.12.0 + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bin/sh + - -c + - exec pg_isready -U "root" -d "dbname=keycloak" -h 127.0.0.1 -p 5432 + failureThreshold: 6 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + name: postgresql + ports: + - containerPort: 5432 + name: tcp-postgresql + protocol: TCP + readinessProbe: + exec: + command: + - /bin/sh + - -c + - -e + - | + exec pg_isready -U "root" -d "dbname=keycloak" -h 127.0.0.1 -p 5432 + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + resources: + requests: + cpu: 250m + memory: 256Mi + securityContext: + runAsUser: 1001 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /dev/shm + name: dshm + - mountPath: /bitnami/postgresql + name: data + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: + fsGroup: 1001 + serviceAccount: default + serviceAccountName: default + terminationGracePeriodSeconds: 30 + volumes: + - emptyDir: + medium: Memory + name: dshm + updateStrategy: + rollingUpdate: + partition: 0 + type: RollingUpdate + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + creationTimestamp: null + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + storageClassName: longhorn-fast + volumeMode: Filesystem + status: + phase: Pending diff --git a/apps-kustomized/appsmith/statefulsetappsmith-redis-master.yaml b/apps-kustomized/appsmith/statefulsetappsmith-redis-master.yaml new file mode 100644 index 0000000..b009ada --- /dev/null +++ b/apps-kustomized/appsmith/statefulsetappsmith-redis-master.yaml @@ -0,0 +1,162 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/component: master + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + name: appsmith-redis-master + namespace: appsmith +spec: + persistentVolumeClaimRetentionPolicy: + whenDeleted: Retain + whenScaled: Retain + podManagementPolicy: OrderedReady + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: master + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: redis + serviceName: appsmith-redis-headless + template: + metadata: + annotations: + checksum/configmap: 200ea504d6238919d0d307d6a9532731dc31f75b892c7c3aa5c0ac0e6d33989f + checksum/health: 773ea337f77df0444ffc318b00d3e78d6dab5a70ff1a5ba67bf18d98ad459fa9 + checksum/scripts: c8705e5003141308d45cbfb90346393c427657644ab7aea26bcb88fff444a244 + checksum/secret: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + creationTimestamp: null + labels: + app.kubernetes.io/component: master + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/component: master + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: redis + namespaces: + - appsmith + topologyKey: kubernetes.io/hostname + weight: 1 + containers: + - args: + - -c + - /opt/bitnami/scripts/start-scripts/start-master.sh + command: + - /bin/bash + env: + - name: BITNAMI_DEBUG + value: "false" + - name: REDIS_REPLICATION_MODE + value: master + - name: ALLOW_EMPTY_PASSWORD + value: "yes" + - name: REDIS_TLS_ENABLED + value: "no" + - name: REDIS_PORT + value: "6379" + image: docker.io/redis:7.0.15 + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - sh + - -c + - /health/ping_liveness_local.sh 5 + failureThreshold: 5 + initialDelaySeconds: 20 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 6 + name: redis + ports: + - containerPort: 6379 + name: redis + protocol: TCP + readinessProbe: + exec: + command: + - sh + - -c + - /health/ping_readiness_local.sh 1 + failureThreshold: 5 + initialDelaySeconds: 20 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 2 + securityContext: + runAsUser: 1001 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /opt/bitnami/scripts/start-scripts + name: start-scripts + - mountPath: /health + name: health + - mountPath: /data + name: redis-data + - mountPath: /opt/bitnami/redis/mounted-etc + name: config + - mountPath: /opt/bitnami/redis/etc/ + name: redis-tmp-conf + - mountPath: /tmp + name: tmp + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: + fsGroup: 1001 + serviceAccount: appsmith-redis + serviceAccountName: appsmith-redis + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 493 + name: appsmith-redis-scripts + name: start-scripts + - configMap: + defaultMode: 493 + name: appsmith-redis-health + name: health + - configMap: + defaultMode: 420 + name: appsmith-redis-configuration + name: config + - name: redis-tmp-conf + - name: tmp + updateStrategy: + rollingUpdate: + partition: 0 + type: RollingUpdate + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: master + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: redis + name: redis-data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + storageClassName: longhorn-fast + volumeMode: Filesystem + status: + phase: Pending diff --git a/apps-kustomized/appsmith/statefulsetappsmith-redis-replicas.yaml b/apps-kustomized/appsmith/statefulsetappsmith-redis-replicas.yaml new file mode 100644 index 0000000..c3b53ca --- /dev/null +++ b/apps-kustomized/appsmith/statefulsetappsmith-redis-replicas.yaml @@ -0,0 +1,171 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/component: replica + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + name: appsmith-redis-replicas + namespace: appsmith +spec: + persistentVolumeClaimRetentionPolicy: + whenDeleted: Retain + whenScaled: Retain + podManagementPolicy: OrderedReady + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: replica + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: redis + serviceName: appsmith-redis-headless + template: + metadata: + annotations: + checksum/configmap: 200ea504d6238919d0d307d6a9532731dc31f75b892c7c3aa5c0ac0e6d33989f + checksum/health: 773ea337f77df0444ffc318b00d3e78d6dab5a70ff1a5ba67bf18d98ad459fa9 + checksum/scripts: c8705e5003141308d45cbfb90346393c427657644ab7aea26bcb88fff444a244 + checksum/secret: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + creationTimestamp: null + labels: + app.kubernetes.io/component: replica + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + helm.sh/chart: redis-16.11.2 + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/component: replica + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: redis + namespaces: + - appsmith + topologyKey: kubernetes.io/hostname + weight: 1 + containers: + - args: + - -c + - /opt/bitnami/scripts/start-scripts/start-replica.sh + command: + - /bin/bash + env: + - name: BITNAMI_DEBUG + value: "false" + - name: REDIS_REPLICATION_MODE + value: slave + - name: REDIS_MASTER_HOST + value: appsmith-redis-master-0.appsmith-redis-headless.appsmith.svc.cluster.local + - name: REDIS_MASTER_PORT_NUMBER + value: "6379" + - name: ALLOW_EMPTY_PASSWORD + value: "yes" + - name: REDIS_TLS_ENABLED + value: "no" + - name: REDIS_PORT + value: "6379" + image: docker.io/redis:7.0.15 + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - sh + - -c + - /health/ping_liveness_local_and_master.sh 5 + failureThreshold: 5 + initialDelaySeconds: 20 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 6 + name: redis + ports: + - containerPort: 6379 + name: redis + protocol: TCP + readinessProbe: + exec: + command: + - sh + - -c + - /health/ping_readiness_local_and_master.sh 1 + failureThreshold: 5 + initialDelaySeconds: 20 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 2 + securityContext: + runAsUser: 1001 + startupProbe: + failureThreshold: 22 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + tcpSocket: + port: redis + timeoutSeconds: 5 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /opt/bitnami/scripts/start-scripts + name: start-scripts + - mountPath: /health + name: health + - mountPath: /data + name: redis-data + - mountPath: /opt/bitnami/redis/mounted-etc + name: config + - mountPath: /opt/bitnami/redis/etc + name: redis-tmp-conf + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: + fsGroup: 1001 + serviceAccount: appsmith-redis + serviceAccountName: appsmith-redis + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 493 + name: appsmith-redis-scripts + name: start-scripts + - configMap: + defaultMode: 493 + name: appsmith-redis-health + name: health + - configMap: + defaultMode: 420 + name: appsmith-redis-configuration + name: config + - name: redis-tmp-conf + updateStrategy: + rollingUpdate: + partition: 0 + type: RollingUpdate + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: replica + app.kubernetes.io/instance: release-name + app.kubernetes.io/name: redis + name: redis-data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + storageClassName: longhorn-fast + volumeMode: Filesystem + status: + phase: Pending