Add Google Cloud K3s infrastructure support
- Add Terraform configuration for GCP instance and storage - Add startup script for K3s installation and configuration - Add pipeline scripts for deployment and management - Add Forgejo deployment manifests and configuration
This commit is contained in:
parent
7384722305
commit
2ab7872af1
30 changed files with 1024 additions and 324 deletions
30
gcloud/tf/scripts/forgejo/create_ingress.sh
Executable file
30
gcloud/tf/scripts/forgejo/create_ingress.sh
Executable file
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -a
|
||||
|
||||
# read environment variables from .env file
|
||||
# for value of APP_DOMAIN_NAME
|
||||
|
||||
. .env
|
||||
|
||||
if [ -z "$APP_DOMAIN_NAME" ]; then
|
||||
echo "Error: APP_DOMAIN_NAME environment variable is not set. Please set it in the .env file."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the directory where the script is located
|
||||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
|
||||
cd "$SCRIPT_DIR" || { echo "Failed to change directory to $SCRIPT_DIR"; exit 1; }
|
||||
# Define the template file path and output file path
|
||||
TEMPLATE_FILE="../../k3s/forgejo/ingress.yaml.template"
|
||||
OUTPUT_FILE="../../k3s/forgejo/ingress.yaml"
|
||||
|
||||
|
||||
# Use envsubst to substitute the APP_DOMAIN_NAME variable into the template
|
||||
envsubst < "$TEMPLATE_FILE" > "$OUTPUT_FILE"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to substitute variables in the template."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Ingress configuration has been created at $OUTPUT_FILE"
|
||||
33
gcloud/tf/scripts/forgejo/create_issuer.sh
Executable file
33
gcloud/tf/scripts/forgejo/create_issuer.sh
Executable file
|
|
@ -0,0 +1,33 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -a
|
||||
|
||||
# read environment variables from .env file
|
||||
# for value of EMAIL
|
||||
|
||||
. .env
|
||||
|
||||
|
||||
# Check if EMAIL environment variable is set
|
||||
if [ -z "$EMAIL" ]; then
|
||||
echo "Error: EMAIL environment variable is not set."
|
||||
echo "Please set the EMAIL variable and try again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the directory where the script is located
|
||||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
|
||||
cd "$SCRIPT_DIR" || { echo "Failed to change directory to $SCRIPT_DIR"; exit 1; }
|
||||
# Define the template file path and output file path
|
||||
TEMPLATE_FILE="../../k3s/forgejo/issuer.yaml.template"
|
||||
OUTPUT_FILE="../../k3s/forgejo/issuer.yaml"
|
||||
|
||||
|
||||
# Use envsubst to substitute the EMAIL variable into the template
|
||||
envsubst < "$TEMPLATE_FILE" > "$OUTPUT_FILE"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to substitute variables in the template."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Issuer configuration has been created at $OUTPUT_FILE"
|
||||
45
gcloud/tf/scripts/forgejo/install_forgejo.sh
Executable file
45
gcloud/tf/scripts/forgejo/install_forgejo.sh
Executable file
|
|
@ -0,0 +1,45 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Installing Forgejo"
|
||||
|
||||
# Get the directory where the script is located
|
||||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
|
||||
# Define namespace
|
||||
NAMESPACE="forgejo"
|
||||
MANIFESTS_DIR="${SCRIPT_DIR}/../../k3s/forgejo"
|
||||
|
||||
echo "Creating namespace..."
|
||||
if ! kubectl get namespace "${NAMESPACE}" >/dev/null 2>&1; then
|
||||
kubectl create namespace "${NAMESPACE}"
|
||||
else
|
||||
echo "Namespace '${NAMESPACE}' already exists."
|
||||
fi
|
||||
|
||||
echo "Creating PersistentVolumeClaim..."
|
||||
kubectl apply -f ${MANIFESTS_DIR}/pvc.yaml
|
||||
|
||||
|
||||
echo "Creating Service..."
|
||||
kubectl apply -f ${MANIFESTS_DIR}/service.yaml
|
||||
|
||||
|
||||
echo "Creating Deployment..."
|
||||
kubectl apply -f ${MANIFESTS_DIR}/deployment.yaml
|
||||
|
||||
|
||||
echo "Creating Certificate Issuer..."
|
||||
kubectl apply -f ${MANIFESTS_DIR}/issuer.yaml
|
||||
|
||||
|
||||
echo "Creating Ingress..."
|
||||
kubectl apply -f ${MANIFESTS_DIR}/ingress.yaml
|
||||
|
||||
|
||||
echo "Forgejo installation complete."
|
||||
echo "Verify deployment with: kubectl -n ${NAMESPACE} get pods,svc,ingress,pvc"
|
||||
|
||||
exit;
|
||||
|
||||
# Note: The ingressTCP.yaml is for a different application (galene) and should be applied separately
|
||||
# echo "Note: The ingressTCP.yaml is for the galene application and has not been applied."
|
||||
Loading…
Add table
Add a link
Reference in a new issue