This is a to-do list web application with the basic features of most web apps, i.e., accounts/login, API, and interactive UI. To do this task, you will need:
Try it out by installing the requirements (the following commands work only with Python 3.8 and higher, due to Django 4):
pip install -r requirements.txt
Create a database schema:
python manage.py migrate
And then start the server (default is http://localhost:8000):
python manage.py runserver
You can now browse the API or start on the landing page.
Create a Kubernetes manifest for a pod that will contain a ToDo app container:
-
Fork this repository.
-
Use
kind
to spin up a cluster from acluster.yml
configuration file. -
Inspect Nodes for Labels and Taints
-
Taint nodes labeled with
app=mysql
withapp=mysql:NoSchedule
-
Create a helm chart named
todoapp
inside ahelm-chart
directory -
todoapp
helm chart requirements:- Namespace name should be controlled from a
values.yaml
file - Use
.Chart.Name
as a prefix for all resources names - Secrets should be controlled from a
values.yaml
file - Secrets
data
should be popualted by arange
function - Inside the deployment use
range
to map secrets as environment variables - Resources requests and limits should controlled from a
values.yaml
file - RollingUpdate parameters should be controlled from a
values.yaml
file - Image repository and tag should be controlled from a
values.yaml
file - Deployment node affinity parameters should be controlled from a
values.yaml
file (key and values) hpa
min and max replicas should be controlled from avalues.yaml
filehpa
average CPU and Memory utilization should be controlled from avalues.yaml
filepv
capacity should be controlled from avalues.yaml
filepvc
requests storage should be controlled from avalues.yaml
file- Service Account Name inside both
Deployment
and all rbac objects should be controlled from avalues.yaml
file
- Namespace name should be controlled from a
-
Create a sub-chart called
mysql
inside acharts
directory of thetodoapp
helm chart -
mysql
helm chart requirements:- Namespace name should be controlled from a
values.yaml
file - Use
.Chart.Name
as a prefix for all resource names - Secrets should be controlled from a
values.yaml
file - Secrets
data
should be populated by arange
function - StateFulSet's Replicas should be controlled from a
values.yaml
file - Image repository and tag should be controlled from a
values.yaml
file pvc
requests storage should be controlled from avalues.yaml
file- Affinity and Toleration parameters should be controlled from a
values.yaml
file - Resource requests and limits should controlled from a
values.yaml
file
- Namespace name should be controlled from a
-
Add explicit dependencies between
todoapp
andmysql
charts- Inside the
Chart.yaml
file of todoapp chart, add linesdependencies: - name: mysql
- Inside the
-
bootstrap.sh
should contain all commands to deploy prerequisites and thetodoapp
helm chart -
Deploy the helm chart to your
kind
cluster -
Run the command
kubectl get all,cm,secret,ing -A
and put the output in a file calledoutput.log
in the root of the repository -
Create the
INSTRUCTION.md
file with instructions on how to validate the changes -
Create PR with your changes and attach it for validation on a platform.