Skip to content

add demo for almajni-rezkalla End-to-End CI/CD (Continuous Deployment) pipeline with Jenkins, ansible, and Kubernetes Minikube - #810

Merged
monperrus merged 14 commits into
KTH:masterfrom
georgewbar:master
May 5, 2020
Merged

add demo for almajni-rezkalla End-to-End CI/CD (Continuous Deployment) pipeline with Jenkins, ansible, and Kubernetes Minikube#810
monperrus merged 14 commits into
KTH:masterfrom
georgewbar:master

Conversation

@georgewbar

Copy link
Copy Markdown

Final Submission v1: End-to-End CI/CD (Continuous Deployment) pipeline with Jenkins, ansible, and Kubernetes Minikube

Contributors

Link to the video on Youtube

https://youtu.be/voUTfV1wIgo

Github repo link

https://github.com/demo-cicd-k8s/datetimeserver_demo_cicd_kubernetes

Description

We will create an End-to-End CI/CD pipeline with Continuous Deployment (Zero-Downtime Deployment) using Jenkins, Ansible and Kubernetes Minikube. The deployed application will be a Java application that shows the current Date and Time together with the current version of the application to show that a new version of the application was deployed with Zero-Down time.

To be more concrete, we will create a local cluster consisting of one node in a virtual machine on a macOS laptop using Minikube. Moreover, we will use Kubectl to show debugging information. Then, we will create a pipeline (i.e Declarative Pipeline that has some blocks of Scripted pipeline) in Jenkins that is triggered when new code is pushed to Github. This Pipeline will create a Docker image, and build the app and test it, and if it passes all the tests, it will continue to deploy it on the Kubernetes cluster using Ansible playbook that defines a Deployment and a NodePort service to be deployed on the Minikube cluster.

As beginners in Kubernetes, this Demo was difficult because we needed to understand Kubernetes at first, and it took some time to decide which environment to choose to install Kubernetes and then install Kubernetes locally. Then, it took some time to know how to integrate Ansible with Jenkins and Kubernetes.

Criteria that we want to fulfill

  • The demonstration screencast is clearly motivated (why it matters for Devops?).
  • The demonstration screencast is difficult to do.
  • The demonstration screencast is original. -> (Every demo or tutorial does things in other ways, and there is no one way to do things. We mixed things from different references).
  • The demonstration screencast is sublime (eg visually appealing).
  • The demonstration screencast contains an easter egg.
  • An accompanying Github repository has been made (optional).

@monperrus monperrus changed the title # Final Submission v1: End-to-End CI/CD (Continuous Deployment) pipeline with Jenkins, ansible, and Kubernetes Minikube add demo for almajni-rezkalla May 5, 2020
@monperrus
monperrus merged commit a475cdd into KTH:master May 5, 2020
@christinerosquist

Copy link
Copy Markdown

I can give you feedback on the demo! :)

@keivanm

keivanm commented May 5, 2020

Copy link
Copy Markdown

I'll give feedback on this demo

@ashgreyship

Copy link
Copy Markdown

I will give you feedback on the demo! :)

@valsen

valsen commented May 5, 2020

Copy link
Copy Markdown

ill give feedback here:)

@jrutqvist

Copy link
Copy Markdown

I'll give feedback as well!

@zen93

zen93 commented May 5, 2020

Copy link
Copy Markdown

I will give feedback to your demo

@hittesharma

Copy link
Copy Markdown

I will give feedback here

@zen93

zen93 commented May 5, 2020

Copy link
Copy Markdown

Feedback: Add music credits to the video for the soundtrack at 4:08. Also, the demo was quite fast. Difficult to follow. Of course, time constraints also need to be heeded. I would like to add, like others, that it was unclear on what ngrok is and the role of ansible in your demo.

@hittesharma

hittesharma commented May 5, 2020

Copy link
Copy Markdown

The demo was interesting and well presented. You tried to cover all the essential DevOps tools in 5 mins (approx.). However, you missed presenting Ansible to that extent in the video, viewer may not even realise you have used Ansible anywhere. That could be made better.

@keivanm

keivanm commented May 5, 2020

Copy link
Copy Markdown

Feedback: The demo was interesting and the presentation was nicely made. I did feel a bit lost though. It was hard to follow along the demo. I would of liked to have it take us from the very start instead of jumping right into the forked repo. And sometimes it went too fast (I think with the way the video was cut?). And I personally would of liked more background information. I do recognise it is hard to give a thorough demo in under five minutes.

@juliuscc

juliuscc commented May 5, 2020

Copy link
Copy Markdown

I think you have matched all criteria, and your repo looks great! It is an important skill to be able to create nice readmes and the addition of the picture makes the repo and demo much more understandable. Even though you might think it is simple to add a picture, a lot of good developers don't dedicate that level of effort to their readmes.

I agree with hittesharma that I didn't fully understand what ansible does. The same goes for ngrok, but when I googled what ngrok is it was clear. I understand that there is a limited time in the demo, but I would love a small explanation of ansibles role in your repo. You could consider adding a small note in your architecture diagram, explaining its role.

@juliuscc

juliuscc commented May 5, 2020

Copy link
Copy Markdown

I think the screencast looked great also!

@ashgreyship

Copy link
Copy Markdown

The required knowledge and introduction at the beginning of the demo are quite helpful. This demonstration contains a list of tools. It can be the advantage because it covers all the steps from creating a project to deploy it. However, it is hard to discuss all those tools in depth within a limited time of demonstration. Therefore, the demo is too general especially when the author discusses ansible. I suggest the author talks more about the interaction between Jenkins and Kubernetes Minikube.

@christinerosquist

Copy link
Copy Markdown

Feedback

Good job with your demo! It is a demo that is difficult to do, and it is well motivated why it matters in DevOps. However, I did not always understand everything that was happening in the screencast. I think that it might be that the topic is quite complicated, and that there are a lot of prerequisites needed. I found it hard to understand everything in the illustration of the pipeline, for example when you use different terms like “Pod”. I do not know what that is and it is not being explained so I did not always keep up with the information. I know that the time-limit is short and that you have a lot to cover, but you could at least consider trying to make it a bit easier to follow. My last comment is that I don’t really understand the easter-egg, isn’t it supposed to be something that is hidden from the user? Anyway, nice job!

@gluckzhang

Copy link
Copy Markdown

Hi, @nicolai-h is absent today, but he also gives his feedback on this demo. Here is what we received from him.

The demo is about End-to-End CI/CD pipeline. To show this this demo used Jenkins, Aansible, and Kubernetes. I feel that the speed is too fast, both in talking speed and the speed of showing the content, but that is not something playback speed can’t fix. The visuals are good but can at points become too cluttered and some slides contain too much information. I did not like that the first half of the video had voice narration and the second part of the videos did not have any voice narration. I think that either the whole video should have voice narration or the whole video should just have captions. Overall you can understand what the demo is about and it's doable to follow along as long as you pause a couple of times.

@monperrus monperrus changed the title add demo for almajni-rezkalla add demo for almajni-rezkalla End-to-End CI/CD (Continuous Deployment) pipeline with Jenkins, ansible, and Kubernetes Minikube May 5, 2020
@jrutqvist

Copy link
Copy Markdown

Great demo, you have a perfect mix of explanation through the diagrams in the beginning and hands on demonstration later. It is quite a complicated project for such a short demo, but I think you succeeded in giving a good overview of it all without rushing.

@valsen

valsen commented May 5, 2020

Copy link
Copy Markdown

Great job with this demo! You managed to cover a lot of ground with different DevOps tools and it was interesting to see those tools working alongside each other. I liked the graphics in the beginning of the demo and appreciated that you overlayed some graphics/markings on the screencast. My only constructive criticism would be that the topic might be a little too vast to cover in just 5 minutes, which you surely realized too and therefore needed to speed up the video quite a lot to fit within the timeframe. It would have been easier to follow along without constantly pausing and rewinding if you narrowed down the scope a little to allow a slower general flow.

@georgewbar

georgewbar commented May 9, 2020

Copy link
Copy Markdown
Author

@zen93 @hittesharma @keivanm @juliuscc @ashgreyship @christinasunnegardh @nicolai-h @jrutqvist @valsen

Thanks everyone for your constructive feedback! The main concerns seem to be about Ansible and Ngrok.

We will try fixing the following

  • We will highlight and explain in more detail where and how Ansible is used in the Jenkinsfile pipeline to show how Jenkins deploys code to K8s using Ansible. We will also add in the slides in the beginning that Ansible is an Infrastructure-as-Code tool.
  • For ngrok, we will add in the slides at the beginning that it is a Tunneling software.
  • We will add credits of the music used in the easter egg in the description.

Some of the issues are harder to fix with a reason and a compromise will be done

Issues

Regarding the speed of the demo and the concepts needed as a background, the demo covers a lot of concepts with hands-on demonstration in such a short time. Not all the concepts can be clarified. Only the necessary can be clarified. We try at the beginning to show the bigger picture in order to understand the interactions among the different parts of the demo. As hinted by @nicolai-h, one can pause and rewind the parts that were not understood, which is an advantage of screencasts.

Compromises

In the description of the video, we will add links to

  • the tutorial that covers the basics of K8s and what pods are.
  • ngrok.
  • Ansible documentation.
  • tutorial on creating Jenkins pipeline using Jenkinsfile.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.