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
kindto spin up a cluster from acluster.ymlconfiguration file. -
Inspect Nodes for Labels and Taints
-
Taint nodes labeled with
app=mysqlwithapp=mysql:NoSchedule -
Create a helm chart named
todoappinside ahelm-chartdirectory -
todoapphelm chart requirements:- Namespace name should be controlled from a
values.yamlfile - Use
.Chart.Nameas a prefix for all resources names - Secrets should be controlled from a
values.yamlfile - Secrets
datashould be popualted by arangefunction - Inside the deployment use
rangeto map secrets as environment variables - Resources requests and limits should controlled from a
values.yamlfile - RollingUpdate parameters should be controlled from a
values.yamlfile - Image repository and tag should be controlled from a
values.yamlfile - Deployment node affinity parameters should be controlled from a
values.yamlfile (key and values) hpamin and max replicas should be controlled from avalues.yamlfilehpaaverage CPU and Memory utilization should be controlled from avalues.yamlfilepvcapacity should be controlled from avalues.yamlfilepvcrequests storage should be controlled from avalues.yamlfile- Service Account Name inside both
Deploymentand all rbac objects should be controlled from avalues.yamlfile
- Namespace name should be controlled from a
-
Create a sub-chart called
mysqlinside achartsdirectory of thetodoapphelm chart -
mysqlhelm chart requirements:- Namespace name should be controlled from a
values.yamlfile - Use
.Chart.Nameas a prefix for all resource names - Secrets should be controlled from a
values.yamlfile - Secrets
datashould be populated by arangefunction - StateFulSet's Replicas should be controlled from a
values.yamlfile - Image repository and tag should be controlled from a
values.yamlfile pvcrequests storage should be controlled from avalues.yamlfile- Affinity and Toleration parameters should be controlled from a
values.yamlfile - Resource requests and limits should controlled from a
values.yamlfile
- Namespace name should be controlled from a
-
Add explicit dependencies between
todoappandmysqlcharts- Inside the
Chart.yamlfile of todoapp chart, add linesdependencies: - name: mysql
- Inside the
-
bootstrap.shshould contain all commands to deploy prerequisites and thetodoapphelm chart -
Deploy the helm chart to your
kindcluster -
Run the command
kubectl get all,cm,secret,ing -Aand put the output in a file calledoutput.login the root of the repository -
Create the
INSTRUCTION.mdfile with instructions on how to validate the changes -
Create PR with your changes and attach it for validation on a platform.