Skip to content

Commit c469c84

Browse files
author
abregman
committed
Add Argo and k8s questions
Also updated Datadog questions.
1 parent cbdcfa3 commit c469c84

File tree

12 files changed

+460
-4
lines changed

12 files changed

+460
-4
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
:information_source:  This repo contains questions and exercises on various technical topics, sometimes related to DevOps and SRE
44

5-
:bar_chart:  There are currently **2466** exercises and questions
5+
:bar_chart:  There are currently **2487** exercises and questions
66

77
:warning:  You can use these for preparing for an interview but most of the questions and exercises don't represent an actual interview. Please read [FAQ page](faq.md) for more details
88

topics/argo/README.md

+71-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
- [ArgoCD 101](#argocd-101)
66
- [ArgoCD Secrets](#argocd-secrets)
77
- [ArgoCD Helm](#argocd-helm)
8-
- [Argo Questions](#argo-questions)
8+
- [Argo Rollouts](#argo-rollouts)
9+
- [ArgoCD Questions](#argocd-questions)
910
- [ArgoCD 101](#argocd-101-1)
1011
- [Practical ArgoCD 101](#practical-argocd-101)
1112
- [CLI](#cli)
@@ -14,6 +15,9 @@
1415
- [ArgoCD Application Health](#argocd-application-health)
1516
- [ArgoCD Syncs](#argocd-syncs)
1617
- [ArgoCD and Helm](#argocd-and-helm)
18+
- [Argo Rollouts Questions](#argo-rollouts-questions)
19+
- [Argo Rollouts 101](#argo-rollouts-101)
20+
- [Argo Rollouts Commands](#argo-rollouts-commands)
1721

1822
## ArgoCD Exercises
1923

@@ -37,7 +41,14 @@
3741
|--------|--------|------|----|----|
3842
| Helm ArgoCD App | Secrets | [Exercise](exercises/argocd_helm_app/exercise.md) | [Solution](exercises/argocd_helm_app/solution.md)
3943

40-
## Argo Questions
44+
### Argo Rollouts
45+
46+
|Name|Topic|Objective & Instructions|Solution|Comments|
47+
|--------|--------|------|----|----|
48+
| Blue/Green Rollout | Rollouts | [Exercise](exercises/blue_green_rollout/exercise.md) | [Solution](exercises/blue_green_rollout/solution.md)
49+
| Canary Rollout | Rollouts | [Exercise](exercises/canary_rollout/exercise.md) | [Solution](exercises/canary_rollout/solution.md)
50+
51+
## ArgoCD Questions
4152

4253
### ArgoCD 101
4354

@@ -340,4 +351,62 @@ ArgoCD is able to track packaged Helm chart in a sense where it will monitor for
340351
<summary>True or False? When ArgoCD tracks Helm chart the chart is no longer an Helm application and it's a ArgoCD app</summary><br><b>
341352

342353
True. Trying to execute commands like `helm ls` will fail because helm metadata doesn't exist anymore and the application is tracked as ArgoCD app.
354+
</b></details>
355+
356+
## Argo Rollouts Questions
357+
358+
### Argo Rollouts 101
359+
360+
<details>
361+
<summary>What is Argo Rollouts?</summary><br><b>
362+
363+
A controller for Kubernetes to perform application deployments using different strategies like Blue/Green deployments, Canary deployments, etc.
364+
365+
In addition, it supports A/B tests, automatic rollbacks and integrated metric analysis.
366+
</b></details>
367+
368+
<details>
369+
<summary>What happens when you rollout a new version of your app with argo rollouts?</summary><br><b>
370+
371+
- Argo Rollouts creates a new replicaset (that is the new app version)
372+
- Old version is still alive
373+
- ArgoCD marks the app as out-ofsync
374+
</b></details>
375+
376+
### Argo Rollouts Commands
377+
378+
<details>
379+
<summary>How to list rollouts?</summary><br><b>
380+
381+
`kubectl argo rollouts list rollouts`
382+
</b></details>
383+
384+
<details>
385+
<summary>How to list the rollouts of a given application?</summary><br><b>
386+
387+
`kubectl argo rollouts get rollout SOME-APP`
388+
</b></details>
389+
390+
<details>
391+
<summary>How to check the status of a rollout?</summary><br><b>
392+
393+
`kubectl argo rollouts status SOME-APP`
394+
</b></details>
395+
396+
<details>
397+
<summary>How to rollout a new version (with new container tag)?</summary><br><b>
398+
399+
`kubectl argo rollouts set image SOME-APP web-app=some/registry/and/image:v2.0`
400+
</b></details>
401+
402+
<details>
403+
<summary>How to manually promote to new app version?</summary><br><b>
404+
405+
`kubectl argo rollouts promote SOME-APP`
406+
</b></details>
407+
408+
<details>
409+
<summary>How do you monitor a rollout?</summary><br><b>
410+
411+
`kubectl argo rollouts get rollout SOME-APP --watch`
343412
</b></details>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Argo Rollouts - Blue/Green
2+
3+
## Requirements
4+
5+
1. Running Kubernetes cluster
6+
2. Argo Rollouts CLI
7+
3. Deployed app in specific version
8+
9+
## Objectives
10+
11+
1. Install Argo Rollouts controller
12+
2. Write a rollout manifest that use blue/green deployment and apply it
13+
1. Set it to 3 replicas
14+
2. Disable auto-promotions
15+
3. Check the rollout list
16+
4. Rollout a new version of your app in any way you prefer
17+
1. Check the status of the rollout
18+
19+
## Solutions
20+
21+
Click [here](solution.md) to view the solution.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Argo Rollouts - Blue/Green
2+
3+
## Requirements
4+
5+
1. Running Kubernetes cluster
6+
2. Argo Rollouts CLI
7+
3. Deployed app in specific version
8+
9+
## Objectives
10+
11+
1. Install Argo Rollouts controller
12+
2. Write a rollout manifest that use blue/green deployment and apply it
13+
1. Set it to 3 replicas
14+
2. Disable auto-promotions
15+
3. Check the rollout list
16+
4. Rollout a new version of your app in any way you prefer
17+
1. Check the status of the rollout
18+
19+
## Solution
20+
21+
Installation:
22+
23+
1. `kubectl create namespace argo-rollouts`
24+
1. `kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml`
25+
26+
2. Rollout resource:
27+
28+
```
29+
---
30+
apiVersion: argoproj.io/v1alpha1
31+
kind: Rollout
32+
metadata:
33+
name: some-app
34+
spec:
35+
replicas: 3
36+
strategy:
37+
blueGreen:
38+
autoPromotionEnabled: false
39+
selector:
40+
matchLabels:
41+
app: some-web-app
42+
template:
43+
metadata:
44+
labels:
45+
app: some-web-app
46+
spec:
47+
containers:
48+
- name: web-app
49+
image: some/registry/and/image:v1.0
50+
ports:
51+
- name: http
52+
containerPort: 8080
53+
protocol: TCP
54+
```
55+
56+
3. `kubectl argo rollouts list rollouts`
57+
4. `kubectl argo rollouts set image SOME-APP web-app=some/registry/and/image:v2.0`
58+
1. `kubectl argo rollouts get rollout some-app --watch`
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Argo Rollouts - Canary
2+
3+
## Requirements
4+
5+
1. Running Kubernetes cluster
6+
2. Argo Rollouts CLI
7+
3. Deployed app in a specific version
8+
9+
## Objectives
10+
11+
1. Install Argo Rollouts controller
12+
2. Write a rollout manifest that use canary rollout strategy and apply it
13+
1. Set it to 3 replicas
14+
2. Disable auto-promotions
15+
3. Check the rollout list
16+
4. Rollout a new version of your app in any way you prefer
17+
1. Check the status of the rollout
18+
19+
## Solutions
20+
21+
Click [here](solution.md) to view the solution.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Argo Rollouts - Canary
2+
3+
## Requirements
4+
5+
1. Running Kubernetes cluster
6+
2. Argo Rollouts CLI
7+
3. Deployed app in a specific version
8+
9+
## Objectives
10+
11+
1. Install Argo Rollouts controller
12+
2. Write a rollout manifest that use canary rollout strategy and apply it
13+
1. Set it to 6 replicas
14+
2. Disable auto-promotions
15+
3. Check the rollout list
16+
4. Rollout a new version of your app in any way you prefer
17+
1. Check the status of the rollout
18+
19+
## Solution
20+
21+
Installation:
22+
23+
1. `kubectl create namespace argo-rollouts`
24+
1. `kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml`
25+
26+
2. Rollout resource:
27+
28+
```
29+
---
30+
apiVersion: argoproj.io/v1alpha1
31+
kind: Rollout
32+
metadata:
33+
name: some-app
34+
spec:
35+
replicas: 6
36+
strategy:
37+
canary:
38+
stableService: k8s-service-stable
39+
canaryService: k8s-service-canary
40+
trafficRouting:
41+
ambassador:
42+
mappings:
43+
- k8s-mapping
44+
steps:
45+
- setWeight: 30
46+
- pause: {}
47+
- setWeight: 60
48+
- pause: {}
49+
- setWeight: 100
50+
- pause: {}
51+
selector:
52+
matchLabels:
53+
app: some-web-app
54+
template:
55+
metadata:
56+
labels:
57+
app: some-web-app
58+
spec:
59+
containers:
60+
- name: web-app
61+
image: some/registry/and/image:v1.0
62+
ports:
63+
- name: http
64+
containerPort: 8080
65+
protocol: TCP
66+
```
67+
68+
3. `kubectl argo rollouts list rollouts`
69+
4. `kubectl argo rollouts set image SOME-APP web-app=some/registry/and/image:v2.0`
70+
1. `kubectl argo rollouts get rollout some-app --watch`

topics/datadog/README.md

+32-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
- [DataDog](#datadog)
44
- [Questions](#questions)
55
- [Basics](#basics)
6+
- [Datadog Agent](#datadog-agent)
7+
- [Datadog Integrations](#datadog-integrations)
68

79
## Questions
810

@@ -41,8 +43,37 @@ Basically any device or location that has Datadog agent installed and running on
4143

4244
<details>
4345
<summary>What is a Datadog agent?</summary><br><b>
46+
47+
A software runs on a Datadog host. Its purpose is to collect data from the host and sent it to Datadog (data like metrics, logs, etc.)
4448
</b></details>
4549

4650
<details>
47-
<summary>What are Datadog agents?</summary><br><b>
51+
<summary>What are Datadog tags?</summary><br><b>
52+
53+
Datadog tags are used to mark different information with unique properties. For example, you might want to tag some data with "environment: production" while tagging information from staging or dev environment with "environment: staging".
54+
</b></details>
55+
56+
## Datadog Agent
57+
58+
<details>
59+
<summary>What are the component of a Datadog agent?</summary><br><b>
60+
61+
* Collector: its role is to collect data from the host on which it's installed. The default period of time as of today is every 15 seconds.
62+
* Forwarder: responsible for sending the data to Datadog over HTTPS
63+
</b></details>
64+
65+
## Datadog Integrations
66+
67+
68+
<details>
69+
<summary>What can you tell about Datadog integrations?</summary><br><b>
70+
71+
- Datadog has many supported integrations with different services, platforms, etc.
72+
- Each integration includes information on how to apply it, how to use it and what configuration options it supports
73+
</b></details>
74+
75+
<details>
76+
<summary>What opening some of the integrations windows/pages, there is a ection called "Monitors". What can be found there?</summary><br><b>
77+
78+
Usually you can find there some anomaly types that Datadog suggests to monitor and track.
4879
</b></details>

0 commit comments

Comments
 (0)