- LOGIN MICROSERVICE (nodejs ---> to assure auth with jwt)
- SONG API MICROSERVICE (nodejs ---> will send the music info like the image and song title)
- MUSIC FRONTEND (frontend exposed to the internet as ui for all users)
- There is images for tests environments
- There is images for dev environments
- There is images for prod environments
WORKED ON AZURE AS WELL AS ON KIND (locally)
LOCALLY THERE IS THE CONFIGURATION FOR THE CLUSTER USING KIND
.main/infrastructure/cluster-config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
WE CAN PORTFORAWRD TO THE PROMETHEUS BY CREATING A TUNNEL (IF WE FOLLOW THE GOOD PRACTICIES WE MUST ENABLE RBAC OR SET PERMISSION KEY )
WE USED 3 HELM SHARDS :
- MUSIC APP
- PROMETHEUS ( to SET OUR VALUES WHEN INSTALLING PROMETHEUS HELM + SAVED THE OUTPUT )
- DATADOGS ( to SET OUR VALUES WHEN INSTALLING DATA DOG )
WE USE ALSO HELM SHARDS TO CHANGE BETWEEN DIFFERENT ENVIRONMENTS:
- DEV
- TEST
- PROD
WE ALSO USE SHARDS VALUE TO PICK BETWEEN BETWEEN BLUE AND GREEN AS LABELS
BECAUSE USED BLUE GREEN ROLL OUT ALL AT ONCE (TRIED argoproj.io/v1alpha1)
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: rollout-bluegreen
spec:
[...] # this part of the template is identical to a regular Deployment
strategy:
blueGreen:
activeService: rollout-bluegreen-active
previewService: rollout-bluegreen-preview
autoPromotionEnabled: false ```
THE BLUE GREEN DEPLOYEMENT DIDN'T WORK OUT
TERRAFORM MICRO STACKS (2 stacks to create cluster and to install helm sharts in the clusters itself)
WE ALSO AUTOMATED THE PROVISION OF A STAND ALONE VIRTUAL MACHINE THAT'S SUPPOSED TO RUN A PYTHON SCRIPT TO SCRAPE ALL SONGS DATA (NAME ARTIST IMAGE)
WE ALSO AUTOMATED THE CONFIGURATION OF THAT MACHIBE USING ANSIBLE PLAYBOOK TO INSTALL ALL DEPENDANCIES FOR PYTHON AND RUNNING THE SCRIPT
- name: WebserverPlaybook
hosts: webserver
become: true
tasks:
- name: Install BeautifulSoup python package
ansible.builtin.pip:
name: beautifulsoup4
- name: Install pandas python package
ansible.builtin.pip:
name: pandas
- name: Install request python package
ansible.builtin.pip:
name: requests
- name: Copy the script
template:
src: ./server/scrape-script.py
dest: /home/{{ ansible_user }}/scrape-script.py
- name: launch script
ansible.builtin.command: python3 /home/{{ ansible_user }}/scrape-script.py
- name: log script
ansible.builtin.command: echo "this script has finished"
```