From e56bf576dfdd231dae2eefb3a37cdc565ddc0b88 Mon Sep 17 00:00:00 2001 From: abregman Date: Wed, 14 Sep 2022 21:39:47 +0300 Subject: [PATCH] Add questions on ArgoCD As well as on other topics. --- README.md | 18 ++++++ images/logos/argo.png | Bin 0 -> 87565 bytes topics/argo/README.md | 115 ++++++++++++++++++++++++++++++++++++ topics/containers/README.md | 58 ++++++++---------- topics/devops/README.md | 9 +++ topics/kubernetes/README.md | 79 +++++++++++++++++++++---- topics/terraform/README.md | 10 +++- 7 files changed, 243 insertions(+), 46 deletions(-) create mode 100644 images/logos/argo.png create mode 100644 topics/argo/README.md diff --git a/README.md b/README.md index d6e8b8d..b5b3c01 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ Kafka
Kafka
+ Argo
Argo
@@ -5548,6 +5549,23 @@ A configuration->deployment which has some advantages like: 2. More immutable infrastructure - with configuration->deployment it's not likely to have very different deployments since most of the configuration is done prior to the deployment. Issues like dependencies errors are handled/discovered prior to deployment in this model. +## Release + +
+Explain Semantic Versioning
+ +[This](https://semver.org/) page explains it perfectly: + +``` +Given a version number MAJOR.MINOR.PATCH, increment the: + +MAJOR version when you make incompatible API changes +MINOR version when you add functionality in a backwards compatible manner +PATCH version when you make backwards compatible bug fixes +Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format. +``` +
+ ## Certificates If you are looking for a way to prepare for a certain exam this is the section for you. Here you'll find a list of certificates, each references to a separate file with focused questions that will help you to prepare to the exam. Good luck :) diff --git a/images/logos/argo.png b/images/logos/argo.png new file mode 100644 index 0000000000000000000000000000000000000000..6d1819bd2b8e2d925188180a41b8f19c16bc3189 GIT binary patch literal 87565 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]u`u1=r>CTcjz593?>xG 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

WhUxmNp;_61H2Zx6_<+p#vJ8h+ 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 +

What is Argo CD?
+ +[ArgoCD](https://argo-cd.readthedocs.io/en/stable): "Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes." + +As to why Argo CD, they provide the following explanation: "Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand." + + + +
+There been a lot of CI/CD systems before ArgoCD (Jenkins, Teamcity, CircleCI, etc.) What added value ArgoCD brought?
+ +Simply said, ArgoCD is running on Kubernetes, it's part of its ecosystem, as opposed to some other CI/CD systems. + +Easier to explain the need for ArgoCD by direct comparison to another CI/CD system. Let's use Jenkins for this. + +With Jenkins, you need make sure to install k8s related tools and set access for commands like kubectl. +With ArgoCD you simply need to install it in your namespace but no need to install additional tools as it's part of k8s. + +With Jenkins, managing access is usually done per pipeline and even if set globally in Jenkins, you still need to configure each pipeline to use that access configuration. +With ArgoCD access management to k8s and other resources is given as it runs already on the cluster, in one or multiple namespaces. + +With Jenkins, tracking the status of what got deployed to k8s can be done only as an extra step, by running the pipeline. This is because Jenkins isn't part of the k8s cluster. +With ArgoCD you get much better tracking and visibility of what gets deployed as it runs in the same cluster and the same namespace. + +With ArgoCD it's really easy to roll back to a previous version because all the changes done, are done to git which is a versioned source control. So it's enough to get to a previous commit for ArgoCD to detect a change and sync to the cluster. Worth to mention, this point specifically is true for Jenkins as well :) +
+ +
+Describe an example of workflow where ArgoCD is used
+ +1. A developer submitted change to an application repository +2. Jenkins pipeline is triggered to run CI on the change +3. If the Jenkins Pipeline completed successfully, build an image out of the new code +4. Push to image to a registry +5. Update K8S manifest file(s) in a separate app config repository +6. ArgoCD tracks changes in the app config repository. Since there was a change in the repository, it will apply the changes from the repo +7. +
+ +
+True or False? ArgoCD support Kubernetes YAML files but not other manifests formats like Helm Charts and Kustomize
+ +False. It supports Kubernetes YAML files as well as Helm Charts and Kustomize. + +
+ +
+What "GitOps Repository" means in regards to ArgoCD?
+ +It's the repository that holds app configuration, the one updated most of the time by CI/CD processes or DevOps, SRE engineers. In regards to ArgoCD it's the repository ArgoCD tracks for changes and apply them when they are detected. + +
+ +
+What are the advantages in using GitOps approach/repository?
+ +* Your whole configuration is one place, defined as code so it's completely transparent, adjustable for changes and easily reproducible +* Everyone go through the same interface hence you have more people experiencing and testing the code, even if not intentionally +* Engineers can use it for testing, development, ... there is no more running manual commands and hoping to reach the same status as in the cluster/cloud. +* +
+ +
+What are the advantages in using GitOps approach/repository?
+ +* Your whole configuration is one place, defined as code so it's completely transparent, adjustable for changes and easily reproducible +* Everyone go through the same interface hence you have more people experiencing and testing the code, even if not intentionally +* Engineers can use it for testing, development, ... there is no more running manual commands and hoping to reach the same status as in the cluster/cloud. +* Single source of truth: you know that your GitOps is the repo from which changes can be done to the cluster. So even if someone tries to manually override it, it won't work. +
+ +
+Sorina, one of the engineers in your team, made manual changes to the cluster that override some of the configuration in a repo traced by ArgoCD. What will happen?
+ +Once Sorina made the modifications, ArgoCD will detect the state diverged and will sync the changes from the GitOps repository, overwriting the manual changes done by Sorina. + +
+ +
+Nate, one of the engineers in your organization, asked whether it's possible if ArgoCD didn't sync for changes done manually to the cluster. What would be your answer?
+ +The answer is yes, it's possible. You can configure ArgoCD to sync to desired state when changes done manually and instead do something like sending alerts. + +
+ +
+How cluster disaster recovery becomes easier with ArgoCD?
+ +Imagine you have a cluster in the cloud, in one of the regions. Something happens to that cluster and it's either crashes or simply no longer opertional. + +If you have all your cluster configuration in a GitOps repository, ArgoCD can be pointed to that repository while be configured to use a new cluster you've set up and apply that configuration so your cluster is again up and running with the same status as o +
+ + +### Access Control + +
+What is Argo CD?
+ +[ArgoCD](https://argo-cd.readthedocs.io/en/stable): "Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes." + +As to why Argo CD, they provide the following explanation: "Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand." + +
diff --git a/topics/containers/README.md b/topics/containers/README.md index 5c5944b..9f5b625 100644 --- a/topics/containers/README.md +++ b/topics/containers/README.md @@ -1,32 +1,30 @@ # Containers -## Exercises - Index +- [Containers](#containers) + - [Exercises](#exercises) + - [Running Containers](#running-containers) + - [Images](#images) + - [Misc](#misc) + - [Questions](#questions) + - [Containers 101](#containers-101) + - [Commands Commands](#commands-commands) + - [Images](#images-1) + - [Registry](#registry) + - [Tags](#tags) + - [Containerfile](#containerfile) + - [Storage](#storage) + - [Architecture](#architecture) + - [Docker Architecture](#docker-architecture) + - [Docker Compose](#docker-compose) + - [Networking](#networking) + - [Docker Networking](#docker-networking) + - [Security](#security) + - [Docker in Production](#docker-in-production) + - [OCI](#oci) + - [Scenarios](#scenarios) -* [Running Containers](#exercises-running-containers) -* [Images](#exercises-containers-images) -* [Misc](#exercises-containers-misc) -## Questions - Index - -* [Containers 101](#questions-containers-101) -* [Common Commands](#questions-common-commands) -* [Images](#questions-containers-images) - * [Tags](#questions-containers-images-tags) - * [Registry](#questions-containers-images-registry) -* [Storage](#questions-containers-storage) -* [Containerfile](#questions-containerfile) -* [Architecture](#questions-architecture) -* [Docker Architecture](#questions-docker-architecture) -* [Docker Compose](#questions-docker-compose) -* [Networking](#questions-networking) -* [Docker Networking](#questions-docker-networking) -* [Security](#questions-security) -* [Docker In Production](#questions-docker-in-production) -* [Rootless Containers](#questions-rootless-containers) -* [OCI](#questions-oci) -* [Scenarios](#questions-scenarios) - -## Containers Exercises +## Exercises ### Running Containers @@ -514,8 +512,7 @@ True. For mounted files you can use `podman inspec CONTAINER_NAMD/ID` Registry
- -#### Images - Registry +#### Registry
What is a Registry?
@@ -582,8 +579,7 @@ You can specify a specific registry: `podman push IMAGE REGISTRY_ADDRESS` 2. Using `podman commit` on a running container after making changes to it
- -#### Images - Tags +#### Tags
What are image tags? Why is it recommended to use tags when supporting multiple releases/versions of a project?
@@ -613,7 +609,7 @@ False. You can run `podman rmi IMAGE:TAG`. True.
-### Containerfile +#### Containerfile
What is a Containerfile/Dockerfile?
@@ -660,8 +656,6 @@ It specifies the base layer of the image to be used. Every other instruction is COPY takes in a source and destination. It lets you copy in a file or directory from the build context into the Docker image itself.
ADD lets you do the same, but it also supports two other sources. You can use a URL instead of a file or directory from the build context. In addition, you can extract a tar file from the source directly into the destination. - -Although ADD and COPY are functionally similar, generally speaking, COPY is preferred. That’s because it’s more transparent than ADD. COPY only supports the basic copying of files from build context into the container, while ADD has some features (like local-only tar extraction and remote URL support) that are not immediately obvious.
diff --git a/topics/devops/README.md b/topics/devops/README.md index 3a80dff..0b27fd0 100644 --- a/topics/devops/README.md +++ b/topics/devops/README.md @@ -433,6 +433,7 @@ Read more [here](https://about.gitlab.com/topics/gitops) * It introduces limited/granular access to infrastructure * It makes it easier to trace who makes changes to infrastructure +
@@ -442,6 +443,14 @@ Read more [here](https://about.gitlab.com/topics/gitops) * Apply review/approval process for changes
+
+Two engineers in your team argue on where to put the configuration and infra related files of a certain application. One of them suggests to put it in the same repo as the application repository and the other one suggests to put to put it in its own separate repository. What's your take on that?
+ +One might say we need more details as to what these configuration and infra files look like exactly and how complex the application and its CI/CD pipeline(s), but in general, most of the time you will want to put configuration and infra related files in their own separate repository and not in the repository of the application for multiple reasons: + +* Every change submitted to the configuration, shouldn't trigger the CI/CD of the application, it should be testing out and applying the modified configuration +
+ #### SRE
diff --git a/topics/kubernetes/README.md b/topics/kubernetes/README.md index 0f88f04..28454da 100644 --- a/topics/kubernetes/README.md +++ b/topics/kubernetes/README.md @@ -14,6 +14,7 @@ - [Services](#services) - [Ingress](#ingress) - [ReplicaSets](#replicasets) + - [StatefulSet](#statefulset) - [Storage](#storage) - [Network Policies](#network-policies) - [Configuration File](#configuration-file) @@ -32,6 +33,7 @@ - [Security](#security) - [Troubleshooting Scenarios](#troubleshooting-scenarios) - [Istio](#istio) + - [Controllers](#controllers) - [Scenarios](#scenarios) ## Kubernetes Exercises @@ -558,6 +560,10 @@ The following occurs when you run `kubectl create deployment some_deployment --i Using a Service.
+
+Can you use a Deployment for stateful applications?
+
+ ### Services
@@ -1089,6 +1095,14 @@ A ReplicaSet's purpose is to maintain a stable set of replica Pods running at an A DaemonSet ensures that all Nodes run a copy of a Pod.
+## StatefulSet + +
+Explain StatefulSet
+ +StatefulSet is the workload API object used to manage stateful applications. Manages the deployment and scaling of a set of Pods, and provides guarantees about the ordering and uniqueness of these Pods.[Learn more](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) +
+ ### Storage
@@ -1475,12 +1489,6 @@ They become candidates to for termination. False. CPU is a compressible resource while memory is a non compressible resource - once a container reached the memory limit, it will be terminated.
-
-What is the control loop? How it works?
- -Explained [here](https://www.youtube.com/watch?v=i9V4oCa5f9I) -
- ### Operators
@@ -1489,6 +1497,8 @@ Explained [here](https://www.youtube.com/watch?v=i9V4oCa5f9I) Explained [here](https://kubernetes.io/docs/concepts/extend-kubernetes/operator) "Operators are software extensions to Kubernetes that make use of custom resources to manage applications and their components. Operators follow Kubernetes principles, notably the control loop." + +In simpler words, you can think about an operator as a custom control loop in Kubernetes.
@@ -1502,17 +1512,27 @@ This also help with automating a standard process on multiple Kubernetes cluster
What components the Operator consists of?
-1. CRD (custom resource definition) +1. CRD (Custom Resource Definition) - You are fanmiliar with Kubernetes resources like Deployment, Pod, Service, etc. CRD is also a resource, but one that you or the developer the operator defines. 2. Controller - Custom control loop which runs against the CRD + +
+ +
+Explain CRD
+ +CRD is Custom Resource Definitions. It's custom Kubernetes component which extends K8s API. + +TODO(abregman): add more info. +
How Operator works?
It uses the control loop used by Kubernetes in general. It watches for changes in the application state. The difference is that is uses a custom control loop. -In additions. In addition, it also makes use of CRD's (Custom Resources Definitions) so basically it extends Kubernetes API. +
@@ -1521,10 +1541,16 @@ In addition, it also makes use of CRD's (Custom Resources Definitions) so basica True
+
+Explain what is the OLM (Operator Lifecycle Manager) and what is it used for
+ +
+
What is the Operator Framework?
open source toolkit used to manage k8s native applications, called operators, in an automated and efficient way. +
@@ -1533,12 +1559,14 @@ open source toolkit used to manage k8s native applications, called operators, in 1. Operator SDK - allows developers to build operators 2. Operator Lifecycle Manager - helps to install, update and generally manage the lifecycle of all operators 3. Operator Metering - Enables usage reporting for operators that provide specialized services +4.
Describe in detail what is the Operator Lifecycle Manager
It's part of the Operator Framework, used for managing the lifecycle of operators. It basically extends Kubernetes so a user can use a declarative way to manage operators (installation, upgrade, ...). +
@@ -1548,6 +1576,7 @@ It includes: * catalog-operator - Resolving and installing ClusterServiceVersions the resource they specify. * olm-operator - Deploys applications defined by ClusterServiceVersion resource +
@@ -1558,12 +1587,20 @@ Use kubeconfig files to organize information about clusters, users, namespaces,
-Can you use a Deployment for stateful applications?
+Would you use Helm, Go or something else for creating an Operator?
+ +Depends on the scope and maturity of the Operator. If it mainly covers installation and upgrades, Helm might be enough. If you want to go for Lifecycle management, insights and auto-pilot, this is where you'd probably use Go.
-Explain StatefulSet
- StatefulSet is the workload API object used to manage stateful applications. Manages the deployment and scaling of a set of Pods, and provides guarantees about the ordering and uniqueness of these Pods.[Learn more](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) +Are there any tools, projects you are using for building Operators?
+ +This one is based more on a personal experience and taste... + +* Operator Framework +* Kubebuilder +* Controller Runtime +...
### Secrets @@ -1994,7 +2031,7 @@ Same as Conftest, it is used for policy testing and enforcement. The difference
What is Helm?
-Package manager for Kubernetes. Basically the ability to package YAML files and distribute them to other users and apply them in different clusters. +Package manager for Kubernetes. Basically the ability to package YAML files and distribute them to other users and apply them in the cluster(s).
@@ -2003,6 +2040,8 @@ Package manager for Kubernetes. Basically the ability to package YAML files and Sometimes when you would like to deploy a certain application to your cluster, you need to create multiple YAML files/components like: Secret, Service, ConfigMap, etc. This can be tedious task. So it would make sense to ease the process by introducing something that will allow us to share these bundle of YAMLs every time we would like to add an application to our cluster. This something is called Helm. A common scenario is having multiple Kubernetes clusters (prod, dev, staging). Instead of individually applying different YAMLs in each cluster, it makes more sense to create one Chart and install it in every cluster. + +Another scenario is, you would like to share what you've created with the community. For people and companies to easily deploy your application in their cluster.
@@ -2120,6 +2159,22 @@ TODO: finish this... Istio is an open source service mesh that helps organizations run distributed, microservices-based apps anywhere. Istio enables organizations to secure, connect, and monitor microservices, so they can modernize their enterprise apps more swiftly and securely.
+### Controllers + +
+What is the control loop? How it works?
+ +Explained [here](https://www.youtube.com/watch?v=i9V4oCa5f9I) +
+ +
+What are all the phases/steps of a control loop?
+ +- Observe - identify the cluster current state +- Diff - Identify whether a diff exists between current state and desired state +- Act - Bring current cluster state to the desired state (basically reach a state where there is no diff) +
+ ### Scenarios
diff --git a/topics/terraform/README.md b/topics/terraform/README.md index ceb3b86..5d7c9c7 100644 --- a/topics/terraform/README.md +++ b/topics/terraform/README.md @@ -276,15 +276,21 @@ resource "aws_instance" "tf_aws_instance" {
How do you test a terraform module?
-Many examples are acceptable, but the most common answer would likely to be using the tool terratest, and to test that a module can be initialized, can create resources, and can destroy those resources cleanly. +There are multiple answers, but the most common answer would likely to be using the tool terratest, and to test that a module can be initialized, can create resources, and can destroy those resources cleanly.
-Where can you obtain Terraform modules?
+Where can you obtain Terraform modules?
Terraform modules can be found at the [Terrafrom registry](https://registry.terraform.io/browse/modules)
+
+There's a discussion in your team whether to store modules in one centralized location/repository or have them in each of the projects/repositories where they are used. What's your take on that?
+ +You might have a different opinion but my personal take on that, is to keep modules in one centralized repository as any maintenance or updates to the module you need to perform, are done in one place instead of multiple times in different repositories. +
+ ### Variables