peridot/hack/setup_external_dev_services
root 7911485063 hack/setup_external_dev_services: Improve postgresql installation
The postgresql helm chart requires the cluster to provide a PersistentVolume
and places a PersisentVolumeClaim for this.
Ensure that the cluster provides PersistentVolumes.

Also set volumePermissions.enabled=true which helps to fix Permission denied
when trying to create the data directory in the PV mount directory
if the PV's permissions are not open enough:
https://github.com/bitnami/charts/issues/1210#issuecomment-1145923630
2023-03-10 17:04:40 +01:00

85 lines
4.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
#
# Copyright (c) All respective contributors to the Peridot Project. All rights reserved.
# Copyright (c) 2021-2022 Rocky Enterprise Software Foundation, Inc. All rights reserved.
# Copyright (c) 2021-2022 Ctrl IQ, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors
# may be used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# TODO: Setup an bash error trap, to make errors from failing commands more
# visible and draw attention of the user to these errors.
# Install postgres
helm repo add bitnami https://charts.bitnami.com/bitnami
# Documentation and source of the used chart with all configuration parameters:
# https://artifacthub.io/packages/helm/bitnami/postgresql
# https://github.com/helm/charts/tree/master/stable/postgresql
# The postgresql helm chart requires the cluster to provide a PersistentVolume
# and places a PersisentVolumeClaim for this.
# Ensure that the cluster provides PersistentVolumes:
if kubectl get PersistentVolume -o json
| jq -e '.items | .[].status | select(.phase == "Bound")' ; then
echo "Ok found at least one PersistentVolume"
else
echo "The postgresql helm chart has a PersistentVolumeClaim (PVC)."
echo "The cluster needs to provide at one PersistentVolume (PV) for this."
echo "For information how to create a PersistentVolume, see:"
echo "https://github.com/felipecruz91/k8s-postgresql-persistent-volume#create-persistent-volume"
exit 5
fi
# Note: The chart mounts the PV at persistence.mountPath,
# which defaults to /bitnami/postgresql and creates a directory /data in it.
# If it has no permission to create it, this error happens:
# mkdir: cannot create directory /bitnami/postgresql/data: Permission denied
# https://github.com/bitnami/charts/issues/1210
#
# Adding --set volumePermissions.enabled=true helps:
# https://github.com/bitnami/charts/issues/1210#issuecomment-1145923630
helm upgrade --install postgres bitnami/postgresql \
--set volumePermissions.enabled=true \
--set global.postgresql.auth.postgresPassword=postgres \
--set auth.postgresPassword=postgres \
--set auth.enablePostgresUser=true \
kubectl patch svc postgres-postgresql --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'
# Install localstack
helm repo add localstack-repo https://helm.localstack.cloud
helm upgrade --install localstack localstack-repo/localstack
# Install minio
helm install --set auth.rootUser=AKIAIOSFODNN7EXAMPLE,auth.rootPassword=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY minio bitnami/minio
# Install Temporal
helm install temporal infrastructure/dev-helm/temporal --timeout 15m -f infrastructure/dev-helm/temporal.values.yaml