You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+28-3
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,7 @@
2
2
3
3
:information_source: This repo contains questions and exercises on various technical topics, sometimes related to DevOps and SRE
4
4
5
-
:bar_chart: There are currently **2415** exercises and questions
6
-
7
-
:books: To learn more about DevOps and SRE, check the resources in [devops-resources](https://github.com/bregman-arie/devops-resources) repository
5
+
:bar_chart: There are currently **2466** exercises and questions
8
6
9
7
: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
10
8
@@ -799,6 +797,33 @@ Logging<br>
799
797
<summary>What is the difference between infrastructure monitoring and application monitoring? (methods, tools, ...)</summary><br><b>
800
798
</b></details>
801
799
800
+
### Application Performance Management
801
+
802
+
<details>
803
+
<summary>What is Application Performance Management?</summary><br><b>
804
+
805
+
- IT metrics translated into business insights
806
+
- Practices for monitoring applications insights so we can improve performances, reduce issues and improve overall user experience
807
+
</b></details>
808
+
809
+
<details>
810
+
<summary>Name three aspects of a project you can monitor with APM (e.g. backend)</summary><br><b>
811
+
812
+
- Frontend
813
+
- Backend
814
+
- Infra
815
+
- ...
816
+
</b></details>
817
+
818
+
<details>
819
+
<summary>What can be collected/monitored to perform APM monitoring?</summary><br><b>
@@ -53,11 +78,10 @@ With ArgoCD it's really easy to roll back to a previous version because all the
53
78
4. Push to image to a registry
54
79
5. Update K8S manifest file(s) in a separate app config repository
55
80
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
56
-
7.
57
81
</b></details>
58
82
59
83
<details>
60
-
<summary>True or False? ArgoCD support Kubernetes YAML files but not other manifests formats like Helm Charts and Kustomize</summary><br><b>
84
+
<summary>True or False? ArgoCD supports Kubernetes YAML files but not other manifests formats like Helm Charts and Kustomize</summary><br><b>
61
85
62
86
False. It supports Kubernetes YAML files as well as Helm Charts and Kustomize.
63
87
@@ -113,6 +137,13 @@ Ella is right, ArgoCD is an extension of the cluster, that is very different fro
113
137
"Application"
114
138
</b></details>
115
139
140
+
<details>
141
+
<summary>How ArgoCD makes access management in the cluster easier?</summary><br><b>
142
+
143
+
Instead of creating Kubernetes resources, you can use Git to manage who is allowed to push code, to review it, merge it, etc - either human users or 3rd party systems and services. There is no need to use ClusterRole or User resources in Kubernetes hence the management of access is much more simplified.
144
+
145
+
</b></details>
146
+
116
147
### Practical ArgoCD 101
117
148
118
149
<details>
@@ -148,6 +179,77 @@ This section defines with which Kubernetes cluster the app in the tracked Git re
148
179
AddProject
149
180
</b></details>
150
181
182
+
<details>
183
+
<summary>True or False? ArgoCD sync period is 3 hours</summary><br><b>
184
+
185
+
False. ArgoCD sync period is 3 minutes as of today (and not hours).
186
+
</b></details>
187
+
188
+
<details>
189
+
<summary>Describe shortly what ArgoCD does every sync period</summary><br><b>
190
+
191
+
1. Gathers list of all the apps to sync (those that are marked with "auto-sync")
192
+
2. Gets Git state for each repository
193
+
3. Performs comparison between the repository Git state and the Kubernetes cluster state
194
+
1. If states are different, the application marked as "out-of-sync" and further action might be taken (based on the configuration)
195
+
2. If states are equal, the application marked as "synced"
196
+
</b></details>
197
+
198
+
#### CLI
199
+
200
+
<details>
201
+
<summary>Create a new application with the following properties:
202
+
203
+
* app name: some-app
204
+
* repo: https://fake.repo.address
205
+
* app path: ./app_path
206
+
* namespace: default
207
+
* cluster: my.kubernetes.cluster
208
+
</summary><br><b>
209
+
210
+
```
211
+
argocd app create some-app \
212
+
--project \
213
+
--repo https://fake.repo.address \
214
+
--path ./app_path \
215
+
--dest-namespace default \
216
+
--dest-server my.kubernetes.cluster
217
+
```
218
+
219
+
</b></details>
220
+
221
+
<details>
222
+
<summary>List all argocd apps</summary><br><b>
223
+
224
+
`argocd app list`
225
+
</b></details>
226
+
227
+
<details>
228
+
<summary>Print detailed information on the app called "some-app"</summary><br><b>
229
+
230
+
`argocd app get some-app`
231
+
</b></details>
232
+
233
+
### ArgoCD Configuration
234
+
235
+
<details>
236
+
<summary>Is it possible to change default sync period of ArgoCD?</summary><br><b>
237
+
238
+
Yes, it is possible by adding the following to the argocd-cm (ConfigMap):
239
+
240
+
```
241
+
data:
242
+
timeout.reconciliation: 300s
243
+
```
244
+
245
+
The value can be any number of seconds you would like to set.
246
+
</b></details>
247
+
248
+
<details>
249
+
<summary>What will be the result of setting <code>timeout.reconciliation: 0s</code>?</summary><br><b>
250
+
251
+
sync functionality will be disabled.
252
+
</b></details>
151
253
152
254
### Multi-Cluster Environment
153
255
@@ -169,11 +271,73 @@ There are multiple ways to deal with it:
169
271
2. Use overlays and Kustomize to control the context of where your changes synced based on the CI process/pipeline used.
170
272
</b></details>
171
273
172
-
### Access Control
274
+
### ArgoCD Application Health
173
275
174
276
<details>
175
-
<summary>How ArgoCD makes access management in the cluster easier?</summary><br><b>
277
+
<summary>What are some possible health statuses for an ArgoCD application?</summary><br><b>
278
+
279
+
* Healthy
280
+
* Missing: resource doesn't exist in the cluser
281
+
* Suspended: resource is paused
282
+
* Progressing: resources isn't healthy but will become healthy or has the chance to become healthy
283
+
* Degraded: resource isn't healthy
284
+
* Unknown: it's not known what's the app health
285
+
</b></details>
176
286
177
-
Instead of creating Kubernetes resources, you can use Git to manage who is allowed to push code, to review it, merge it, etc - either human users or 3rd party systems and services. There is no need to use ClusterRole or User resources in Kubernetes hence the management of access is much more simplified.
287
+
<details>
288
+
<summary>True or False? A Deployment considered to be healthy if the Pods are running</summary><br><b>
289
+
290
+
Not exactly. A Deployment (as well as StatefulSet, ReplicaSet and DaemonSet) considered healthy if the desired state equals to actual/current state (this includes the number of replicas).
291
+
</b></details>
292
+
293
+
<details>
294
+
<summary>True or False? An ingress is considered healthy if status.loadBalancer.ingress list includes at least one value</summary><br><b>
295
+
296
+
True.
297
+
</b></details>
298
+
299
+
<details>
300
+
<summary>What can you tell about the health of custom Kubernetes resources?</summary><br><b>
301
+
302
+
The health of custom Kubernetes resources is defined by writing Lua scripts.
303
+
304
+
You find such list of scripts here: https://github.com/argoproj/argo-cd/tree/master/resource_customizations
305
+
</b></details>
306
+
307
+
### ArgoCD Syncs
308
+
309
+
<details>
310
+
<summary>Explain manual syncs vs. automatic syncs</summary><br><b>
311
+
312
+
Automatic syncs means that once ArgoCD detected a change or a new version of your app in Git, it will apply the changes so the current/actual state can be equal to desired state.
313
+
314
+
With manual syncs, ArgoCD will identify there is a difference, but will do nothing to correct it.
315
+
</b></details>
316
+
317
+
<details>
318
+
<summary>Explain auto-pruning</summary><br><b>
319
+
320
+
If enabled, auto-pruning will remove resources when files or content is removed from a tracked Git repository.
321
+
322
+
If disabled, ArgoCD will not remove anything, even when content or files are removed.
323
+
</b></details>
324
+
325
+
<details>
326
+
<summary>Explain self-heal in regards to ArgoCD</summary><br><b>
178
327
328
+
Self-heal is the process of correcting the cluster state based on the desired state, when someone makes manual changes to the cluster.
179
329
</b></details>
330
+
331
+
### ArgoCD and Helm
332
+
333
+
<details>
334
+
<summary>What support is provided in ArgoCD for Helm?</summary><br><b>
335
+
336
+
ArgoCD is able to track packaged Helm chart in a sense where it will monitor for new versions.
337
+
</b></details>
338
+
339
+
<details>
340
+
<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>
341
+
342
+
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.
0 commit comments