This project is KubeZephyr backend based on fastapi+mongodb. It can operate kubernetes resources with web API.
Clone git repo and run pip3 install
git clone https://github.com/zephyrxvxx7/KubeZephyr-Backend.git
cd kubezephyr-backend
pip3 install -f requirements.txt
Then create .env file in project root and set environment variables for application:
touch .env
echo "PROJECT_NAME=KubeZephyr" >> .env
echo MONGODB_URL=mongo://$MONGO_USER:$MONGO_PASSWORD@$MONGO_HOST:$MONGO_PORT/$MONGO_DB >> .env
echo SECRET_KEY=$(openssl rand -hex 32) >> .env
echo ALLOWED_HOSTS='"127.0.0.1", "localhost"' >> .env
echo K8S_DOMAIN=$DOMAIN >> .env
echo K8S_CLUSTER_ISSUER=$ISSUER >> .env
echo GRAFANA_API_KEY=$API_KEY >> .env
echo GRAFANA_SERVER=$SERVER_URL >> .env
To run the web application in debug use:
python3 start_server.py
The build file includes the builds and uploads to the Docker Hub. Just exec this command line:
./build_docker.sh
You must have docker and docker-compose tools installed to work with material in this section. First, create .env file like in Quickstart section or modify .env.example. MONGO_HOST must be specified as db or modified in docker-compose.yml also. Then just run:
docker-compose up -d
Application will be available on localhost
or 127.0.0.1
in your browser.
This project also can deployment in the Kubernetes cluster. If you want to use. Just to modify file deploy-k8s.yaml
with your config to deployment.
Then run:
kubectl apply -f deploy-k8s.yaml
Note: The image needs to push to the Docker hub before deployment.
All routes are available on /docs
or /redoc
paths with Swagger or ReDoc.
Files related to application are in the app directory
models - pydantic models that used in crud or handlers
crud - CRUD for types from models (create new user/article/comment, check if user is followed by another, etc)
db - db specific utils
core - some general components (jwt, security, configuration)
api - handlers for routes
kubernetes - Operate kubernetes API resources with Python client
grafana - Operate Grafana API
main.py - FastAPI application instance, CORS configuration and api router including
- datamodel-code-generator - The Kubernetes pydantic model is generated by this repositorie.