1. DevOps project එකක් කලා. මේක තමා workflow එක.
2. Git repo දෙකක් හැදුවා එකක් CI අනික CD.
3. Microservices 5 ක් හදාගත්තා. Frontend, Trending, News, Categories, FreeAds. Use කලේ Python.
4. ඊට පස්සෙ Google Cloud එකේ VM එකක් හදලා ඒකේ Jenkins server එක හැදුවා. Terraform, AWS CLI install කලා. AWS account එක configure කරගත්තා.
5. Jenkins server එකේ multibranch pipeline එකක් හැදුවා. Commit එකක් දාපු ගමන් pipeline එකේ, ඒ ඒ microservice එකට අදාළ branch එක trigger වෙන්න හැදුවා. ඊට පස්සෙ Docker image එක build වෙලා අලුත් version tag එකක් එක්ක Docker Hub එකට image එක pull වෙන්න හැදුවා.
6. CI පයිප්පේ අන්තිම step එක විදියට CD repository එක GitHub එකෙන් clone කරලා අරං එකේ තියන manifest.yaml එකේ අලුත් image tag එක update කරලා push කරනවා. මෙතනින් CI පයිප්පේ ඉවරයි.
7. CD පයිප්පේ Terraform use කරලා AWS account එකේ EKS cluster එකක් හදාගත්තා. Kubeconfig file එක update කරලා Jenkins server එකයි හදපු cluster එකයි connect කලා.
8. ඊට පස්සෙ Argo CD, Argo Rollout deploy කලා. Official YAML file use කරල.
9. Istio ලා එයාල දීලා තියන YAML file use කරලා Prometheus, Grafana, Kiali cluster එකේ deploy කරගත්තා.
10. Jenkins VM එකට manually log වෙලා cluster එකේ Istio deploy කලා. Microservice ටික deploy කරන්න වෙනම namespace එකක් හදලා. ඒ namespace එක label කලා automatic Istio sidecar proxy injection වෙන්න.
11. Deploy වෙලා තියන Argo CD, Argo Rollout, Grafana, Kiali tools වල service YAML එක ClusterIP to LoadBalancer විදියට edit කරලා LoadBalancer එක through access කලා.
12. Argo CD dashboard එකට log වෙලා CD repository එකේ manifest.yaml එක configure කරගත්තා.
13. අලුත් version tag එකක් එක්ක CD පයිප්පේ manifest.yaml එක update වෙන හැම වෙලාවකම අලුත් deployment එක යන්නෙ canary deployment එකක් විදියට.
14. අලුත් version එක අවුල් නම් Argo Rollout dashboard එක through rollback කරගන්න පුළුවන්.
15. Traffic එක වැඩි වෙද්දී pod ගාන automatically වැඩි වෙන්න HorizontalPodAutoscaler එකක් දාල තියෙන්නෙ.
16. එහෙම Traffic එක වැඩි වෙලා pod අලුතෙන් හැදෙනකොට Traffic එක අලුත් version එකටයි, පරණ version එකටයි බෙදිලා යනවා.
17. වැරදි අඩුපාඩු අවුල් ඕන දෙයක් කියං යන්න.
2. Git repo දෙකක් හැදුවා එකක් CI අනික CD.
3. Microservices 5 ක් හදාගත්තා. Frontend, Trending, News, Categories, FreeAds. Use කලේ Python.
4. ඊට පස්සෙ Google Cloud එකේ VM එකක් හදලා ඒකේ Jenkins server එක හැදුවා. Terraform, AWS CLI install කලා. AWS account එක configure කරගත්තා.
5. Jenkins server එකේ multibranch pipeline එකක් හැදුවා. Commit එකක් දාපු ගමන් pipeline එකේ, ඒ ඒ microservice එකට අදාළ branch එක trigger වෙන්න හැදුවා. ඊට පස්සෙ Docker image එක build වෙලා අලුත් version tag එකක් එක්ක Docker Hub එකට image එක pull වෙන්න හැදුවා.
6. CI පයිප්පේ අන්තිම step එක විදියට CD repository එක GitHub එකෙන් clone කරලා අරං එකේ තියන manifest.yaml එකේ අලුත් image tag එක update කරලා push කරනවා. මෙතනින් CI පයිප්පේ ඉවරයි.
7. CD පයිප්පේ Terraform use කරලා AWS account එකේ EKS cluster එකක් හදාගත්තා. Kubeconfig file එක update කරලා Jenkins server එකයි හදපු cluster එකයි connect කලා.
8. ඊට පස්සෙ Argo CD, Argo Rollout deploy කලා. Official YAML file use කරල.
9. Istio ලා එයාල දීලා තියන YAML file use කරලා Prometheus, Grafana, Kiali cluster එකේ deploy කරගත්තා.
10. Jenkins VM එකට manually log වෙලා cluster එකේ Istio deploy කලා. Microservice ටික deploy කරන්න වෙනම namespace එකක් හදලා. ඒ namespace එක label කලා automatic Istio sidecar proxy injection වෙන්න.
11. Deploy වෙලා තියන Argo CD, Argo Rollout, Grafana, Kiali tools වල service YAML එක ClusterIP to LoadBalancer විදියට edit කරලා LoadBalancer එක through access කලා.
12. Argo CD dashboard එකට log වෙලා CD repository එකේ manifest.yaml එක configure කරගත්තා.
13. අලුත් version tag එකක් එක්ක CD පයිප්පේ manifest.yaml එක update වෙන හැම වෙලාවකම අලුත් deployment එක යන්නෙ canary deployment එකක් විදියට.
14. අලුත් version එක අවුල් නම් Argo Rollout dashboard එක through rollback කරගන්න පුළුවන්.
15. Traffic එක වැඩි වෙද්දී pod ගාන automatically වැඩි වෙන්න HorizontalPodAutoscaler එකක් දාල තියෙන්නෙ.
16. එහෙම Traffic එක වැඩි වෙලා pod අලුතෙන් හැදෙනකොට Traffic එක අලුත් version එකටයි, පරණ version එකටයි බෙදිලා යනවා.
17. වැරදි අඩුපාඩු අවුල් ඕන දෙයක් කියං යන්න.
