No description
Find a file
Guillaume B.B. Van Hemmen d162d7651d #0000 - Add Kubernetes manifests for PrivateBin deployment
Introduced Kubernetes YAML configurations for deploying PrivateBin. This includes namespace, PVC, deployment, service, ingress, and a utility pod for data restoration. Updated README with instructions and added an MIT license file.
2024-12-28 23:34:57 +01:00
00-namespace.yaml #0000 - Add Kubernetes manifests for PrivateBin deployment 2024-12-28 23:34:57 +01:00
01-pvc.yaml #0000 - Add Kubernetes manifests for PrivateBin deployment 2024-12-28 23:34:57 +01:00
02-deployments.yaml #0000 - Add Kubernetes manifests for PrivateBin deployment 2024-12-28 23:34:57 +01:00
03-service.yaml #0000 - Add Kubernetes manifests for PrivateBin deployment 2024-12-28 23:34:57 +01:00
04-ingress.yaml #0000 - Add Kubernetes manifests for PrivateBin deployment 2024-12-28 23:34:57 +01:00
99-restore-pod.yaml #0000 - Add Kubernetes manifests for PrivateBin deployment 2024-12-28 23:34:57 +01:00
LICENSE #0000 - Add Kubernetes manifests for PrivateBin deployment 2024-12-28 23:34:57 +01:00
README.md #0000 - Add Kubernetes manifests for PrivateBin deployment 2024-12-28 23:34:57 +01:00

K8s PrivateBin Deployment

This repository contains Kubernetes manifests for deploying PrivateBin, an open-source minimalist, encrypted pastebin, into a Kubernetes cluster. The deployment is configured with Persistent Volumes, namespaces, services, and ingress for external access.

Project Structure

The project consists of the following Kubernetes YAML manifests:

  • 00-namespace.yaml: Specifies the namespace for isolating the PrivateBin deployment.
  • 01-pvc.yaml: Configures the Persistent Volume Claim (PVC) to store PrivateBin data persistently.
  • 02-deployments.yaml: Contains the deployment configuration for the PrivateBin pod(s).
  • 03-service.yaml: Defines the service for exposing the deployment internally within the cluster.
  • 04-ingress.yaml: Configures the ingress resource for routing external traffic to the PrivateBin service.

Prerequisites

Before deploying this project, ensure the following are already set up:

  1. A Kubernetes cluster (e.g., Minikube, AKS, GKE, EKS, etc.).
  2. kubectl CLI configured to interact with your cluster.
  3. An ingress controller installed in your cluster (e.g., NGINX/Traefik).

Deployment Instructions

Follow the steps below to deploy PrivateBin:

1. Clone the Repository

git clone https://git.van-hemmen.com/GuillaumeHemmen-k8s/privateBin.git
cd privateBin

2. Apply Kubernetes Manifests

Run the following commands to apply the manifests sequentially:

# Step 1: Create the namespace
kubectl apply -f 00-namespace.yaml

# Step 2: Apply Persistent Volume Claim
kubectl apply -f 01-pvc.yaml

# Step 3: Deploy PrivateBin
kubectl apply -f 02-deployments.yaml

# Step 4: Apply Service configuration
kubectl apply -f 03-service.yaml

# Step 5: Configure Ingress
kubectl apply -f 04-ingress.yaml

3. Verify the Deployment

  • Check if all pods are running:
    kubectl get pods -n privatebin
    
  • Check the ingress details:
    kubectl get ingress -n privatebin
    

4. Access PrivateBin

  • Access your PrivateBin instance using the URL configured in the 04-ingress.yaml file. Ensure the DNS or host settings are properly configured to route traffic appropriately.

Customization

Modify Namespace

If needed, update the namespace in each .yaml file to match your cluster's organization.

Update Ingress Configuration

Set your desired domain or hostname in 04-ingress.yaml under the host field.

Persistent Volume Storage Class

Update the storageClassName in 01-pvc.yaml if necessary to match your cluster's storage configuration.

Cleanup

To remove the deployment, run:

kubectl delete -f 04-ingress.yaml
kubectl delete -f 03-service.yaml
kubectl delete -f 02-deployments.yaml
kubectl delete -f 01-pvc.yaml
kubectl delete -f 00-namespace.yaml

Notes

  • Ensure ingress is properly configured, as it is dependent on your cluster's ingress controller setup.
  • Persistent storage is configured to ensure your data is kept even if the pod restarts.

License

This project is licensed under the MIT License.