This commit introduces a complete setup for deploying the Phoenix application
to a K3s Kubernetes cluster, along with a GitHub Actions workflow for
automated builds and deployments.
Key changes include:
- **Kubernetes Manifests (`k8s/`)**:
- Namespace (`aprs-app`) for isolating application resources.
- PostgreSQL setup: PersistentVolumeClaim, Deployment, and Service.
- Application setup: Deployment (with init container for migrations) and
Service (NodePort).
- An example secrets file (`k8s/secrets.yaml.example`) for configuration.
- `.gitignore` updated to exclude `k8s/secrets.yaml`.
- **GitHub Actions Workflow (`.github/workflows/deploy-k3s.yaml`)**:
- Builds the Docker image on pushes to the main branch.
- Pushes the image to GitHub Container Registry (GHCR).
- Deploys the application to K3s by applying the manifests.
- Dynamically updates the application deployment with the correct image tag.
- Requires `KUBE_CONFIG_DATA` GitHub secret for K3s authentication.
- **Application Configuration (`config/runtime.exs`)**:
- Commented out `libcluster` configuration specific to Fly.io to prevent
issues in a standard K3s environment.
- **Documentation (`README.md`)**:
- Added a new "Kubernetes (K3s) Deployment" section detailing:
- Prerequisites and initial setup (GitHub & K8s secrets).
- Workflow overview.
- Application configuration notes (health checks, migrations).
- Instructions for accessing the application.
This setup provides a robust foundation for CI/CD and running the
application in a self-hosted K3s environment.
39 lines
883 B
Text
39 lines
883 B
Text
# The directory Mix will write compiled artifacts to.
|
|
/_build/
|
|
|
|
# If you run "mix test --cover", coverage assets end up here.
|
|
/cover/
|
|
|
|
# The directory Mix downloads your dependencies sources to.
|
|
/deps/
|
|
|
|
# Where 3rd-party dependencies like ExDoc output generated docs.
|
|
/doc/
|
|
|
|
# Ignore .fetch files in case you like to edit your project deps locally.
|
|
/.fetch
|
|
|
|
# If the VM crashes, it generates a dump, let's ignore it too.
|
|
erl_crash.dump
|
|
|
|
# Also ignore archive artifacts (built via "mix archive.build").
|
|
*.ez
|
|
|
|
# Ignore package tarball (built via "mix hex.build").
|
|
aprs-*.tar
|
|
|
|
# Ignore assets that are produced by build tools.
|
|
/priv/static/assets/
|
|
|
|
# Ignore digested assets cache.
|
|
/priv/static/cache_manifest.json
|
|
|
|
# In case you use Node.js/npm, you want to ignore these.
|
|
npm-debug.log
|
|
/assets/node_modules/
|
|
|
|
/.lexical
|
|
/badpackets.txt
|
|
|
|
# Ignore Kubernetes secrets file
|
|
k8s/secrets.yaml
|