diff --git a/README.md b/README.md index cfa0766..c53216d 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ 1. [Ansible](#ansible) 1. [Containers](#containers) 1. [Docker](#docker) + 1. [Kubernetes](#kubernetes) 1. [Python](#python) 1. [Prometheus](#prometheus) 1. [Git](#git) @@ -41,11 +42,13 @@ * How to install Jenkins? * How to install a plugin? * How to install an agent? +* Explain CI/CD and how you implemented in Jenkins ###### Intermediate -- What type of jobs there are? what is the advantage of each type? -- What ways are you familiar with to notify users on build results? +* What type of jobs there are? what is the advantage of each type? +* What ways are you familiar with to notify users on build results? +* How to secure Jenkins? ###### Advanced @@ -64,23 +67,24 @@ ###### S3 - beginner -- Explain what is S3 and what is it used for -- What is a bucket? -- True or False? a bucket name must be globally unique -- What objects in S3 consists of? - - Another way to ask it: explain key, value, version id and metadata in context of objects -- Explain data consistency -- Can you host dynamic websites on s3? what about static websites? +* Explain what is S3 and what is it used for +* What is a bucket? +* True or False? a bucket name must be globally unique +* What objects in S3 consists of? + * Another way to ask it: explain key, value, version id and metadata in context of objects +* Explain data consistency +* Can you host dynamic websites on s3? what about static websites? +* What security measures have you taken in context of S3? ###### CloudFront -- Explain what is CloudFront and what is it used for -- Explain the following - - Origin - - Edge location - - Distribution -- What delivery methods available for the user with CDN? -- True or False? object are cached for the life of TTL +* Explain what is CloudFront and what is it used for +* Explain the following + * Origin + * Edge location + * Distribution +* What delivery methods available for the user with CDN? +* True or False? object are cached for the life of TTL ###### EC2 - beginner @@ -188,6 +192,8 @@ Playbook – One or more plays. Each play can be executed on the same or differe Role – Ansible roles allows you to group resources based on certain functionality/service such that they can be easily reused. In a role, you have directories for variables, defaults, files, templates, handlers, tasks, and metadata. You can then use the role by simply specifying it in your playbook. ``` +* You want to run Ansible playbook only on specific minor version of your OS, how would you achieve that? + * Write a task to create the directory ‘/tmp/new_directory’ ``` @@ -329,6 +335,16 @@ you with more options/features compared to Docker Hub. One example is Swarm management which means you can create new swarms in Docker Cloud. ``` +## Kubernetes + +* What is Kubernetes? +* Why Docker isn't enough? Why do we need Kubernetes? +* Describe the architecture of Kuberenets +* How do you monitor your Kuberenets? +* What is kubectl? How do you use it? +* What is kubconfig? What do you use it for? +* How do you create users? + ## Python @@ -413,7 +429,12 @@ Alert manager is responsible for alerts ;) ###### beginner * What is the difference between `git pull` and `git pull`? +* what is 'working tree'? what is 'staging area'? * How do you resolve git conflicts? +* What is the difference between `git reset` and `git reverse`? +* In what situations are you using `git rebase`? +* What branching strategies are you familiar with? +* Explain octopus strategy ## Scenarios @@ -422,3 +443,4 @@ require from you to design, plan and implement environments with different const and considerations. * [Elasticsearch & Kibana on AWS](scenarios/elk_kibana_aws.md) +* [Ansible, Minikube and Docker](scenarios/ansible_minikube_docker.md) diff --git a/scenarios/ansible_minikube_docker.md b/scenarios/ansible_minikube_docker.md new file mode 100644 index 0000000..3ba3ae7 --- /dev/null +++ b/scenarios/ansible_minikube_docker.md @@ -0,0 +1,6 @@ +## Ansible, Minikube and Docker + +* Write a simple program in any language you want that outputs "I'm on " +* Write a Dockerfile which will run your app +* Create the YAML files required for deploying the pods +* Write and run an Ansible playbook which will install Docker, Minikube and kubectl and then create a deployment in minikube with your app running. diff --git a/scenarios/elk_kibana_aws.md b/scenarios/elk_kibana_aws.md index 7951dce..799b448 100644 --- a/scenarios/elk_kibana_aws.md +++ b/scenarios/elk_kibana_aws.md @@ -15,3 +15,7 @@ Please describe in detail: - How you apply security policy for access control - How you transfer the logs from the app to ELK - How you deal with multi apps running in different regions + +## Solution + +One Possible solution can be found [here](solutions/elk_kibana_aws.md) diff --git a/scenarios/solutions/elk_kibana_aws.md b/scenarios/solutions/elk_kibana_aws.md new file mode 100644 index 0000000..186023d --- /dev/null +++ b/scenarios/solutions/elk_kibana_aws.md @@ -0,0 +1,22 @@ +# Elasticsearch, Kibana and AWS - Solution + +This one out of many possible solutions. This solution is relying heavily on AWS. + +* Create a VPC with subnet so we can place Elasticsearch node(s) in internal environment only. + If required, we will also setup NAT for public access. + +* Create an IAM role for the access to the cluster. Also, create a separate role for admin access. + +* To provision the solution quickly, we will use the elasticsearch service directly from AWS for production deployment. + This way we also cover multiple AZs. As for authentication, we either use Amazon cognito or the organization LDAP server. + +* To transfer data, we will have to install logstash agent on the instances. The agent will be responsible + for pushing the data to elasticsearch. + +* For monitoring we will use: + + * Cloud watch to monitor cluster resource utilization + * Cloud metrics dashboard + +* If access required from multiple regions we will transfer all the data to S3 which will allow us to view the data + from different regions and consolidate it in one dashboard