Skip to content

Commit 8db5e50

Browse files
author
abregman
committed
Fix Kubernetes questions format
Was using 4 backticks instead of 3.
1 parent 682aaa4 commit 8db5e50

File tree

4 files changed

+112
-65
lines changed

4 files changed

+112
-65
lines changed

topics/aws/README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ Failover | Route 53 | [Exercise](exercises/route_53_failover/exercise.md) | [Sol
157157
|--------|--------|------|----|----|
158158
| Hello Function | Lambda | [Exercise](exercises/hello_function/exercise.md) | [Solution](exercises/hello_function/solution.md) | |
159159
| URL Function | Lambda | [Exercise](exercises/url_function/exercise.md) | [Solution](exercises/url_function/solution.md) | |
160+
| Web App with DB | Lambda, DynamoDB | [Exercise](exercises/web_app_dynamodb/exercise.md) | [Solution](exercises/web_app_dynamodb/solution.md) | |
160161

161162
### Elastic Beanstalk
162163

@@ -1211,18 +1212,20 @@ Read more on it [here](https://aws.amazon.com/lambda)
12111212
<details>
12121213
<summary>True or False? In AWS Lambda, you are charged as long as a function exists, regardless of whether it's running or not</summary><br><b>
12131214

1214-
False. Charges are being made when the code is executed.
1215+
False. Charges are being made when the function is executed for the time it takes to execute and compute resources it uses.
12151216
</b></details>
12161217

12171218
<details>
12181219
<summary>Which of the following set of languages Lambda supports?
12191220

12201221
- R, Swift, Rust, Kotlin
1221-
- Python, Ruby, Go
1222-
- Python, Ruby, PHP
1222+
- Python, Ruby, Go, Kotlin, Bash
1223+
- Python, Ruby, PHP, PowerShell, C#, Perl
1224+
- Python, Ruby, Go, Node.js, Groovy, C++
1225+
- Python, Ruby, Go, Node.js, PowerShell, C#
12231226
</summary><br><b>
12241227

1225-
- Python, Ruby, Go
1228+
- Python, Ruby, Go, Node.js, PowerShell, C#
12261229
</b></details>
12271230

12281231
<details>
@@ -3466,4 +3469,4 @@ More details are missing to determine for sure but it might be better to decoupl
34663469

34673470
ARN (Amazon Resources Names) used for uniquely identifying different AWS resources.
34683471
It is used when you would like to identify resource uniqely across all AWS infra.
3469-
</b></details>
3472+
</b></details>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Web App with DB
2+
3+
## Objectives
4+
5+
Implement the following architecture:
6+
7+
<TODO>
8+
9+
## Solution
10+
11+
Click [here](solution.md) to view the solution
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
provider "aws" {
2+
region = "us-west-1"
3+
}
4+
5+
resource "aws_dynamodb_table" "users" {
6+
name = "users"
7+
hash_key = "id"
8+
9+
attribute {
10+
name = "id"
11+
type = "S"
12+
}
13+
14+
attribute {
15+
name = "login"
16+
type = "S"
17+
}
18+
19+
global_secondary_index {
20+
hash_key =
21+
22+
}
23+
}

topics/kubernetes/README.md

Lines changed: 70 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,65 @@
11
# Kubernetes
22

3+
- [Kubernetes](#kubernetes)
4+
- [Kubernetes Exercises](#kubernetes-exercises)
5+
- [Pods](#pods)
6+
- [Service](#service)
7+
- [ReplicaSet](#replicaset)
8+
- [Kubernetes Questions](#kubernetes-questions)
9+
- [Kubernetes 101](#kubernetes-101)
10+
- [Kubernetes - Hands-On Basics](#kubernetes---hands-on-basics)
11+
- [Cluster](#cluster)
12+
- [Pods](#pods-1)
13+
- [Deployments](#deployments)
14+
- [Services](#services)
15+
- [Ingress](#ingress)
16+
- [ReplicaSets](#replicasets)
17+
- [Storage](#storage)
18+
- [Network Policies](#network-policies)
19+
- [Configuration File](#configuration-file)
20+
- [etcd](#etcd)
21+
- [Namespaces](#namespaces)
22+
- [Operators](#operators)
23+
- [Secrets](#secrets)
24+
- [Volumes](#volumes)
25+
- [Access Control](#access-control)
26+
- [Patterns](#patterns)
27+
- [CronJob](#cronjob)
28+
- [Misc](#misc)
29+
- [Gatekeeper](#gatekeeper)
30+
- [Policy Testing](#policy-testing)
31+
- [Helm](#helm)
32+
- [Security](#security)
33+
- [Troubleshooting Scenarios](#troubleshooting-scenarios)
34+
- [Istio](#istio)
35+
- [Scenarios](#scenarios)
36+
337
## Kubernetes Exercises
438

39+
### Pods
40+
541
|Name|Topic|Objective & Instructions|Solution|Comments|
642
|--------|--------|------|----|----|
743
| My First Pod | Pods | [Exercise](pods_01.md) | [Solution](solutions/pods_01_solution.md)
844
| "Killing" Containers | Pods | [Exercise](killing_containers.md) | [Solution](solutions/killing_containers.md)
45+
46+
### Service
47+
48+
|Name|Topic|Objective & Instructions|Solution|Comments|
49+
|--------|--------|------|----|----|
950
| Creating a Service | Service | [Exercise](services_01.md) | [Solution](solutions/services_01_solution.md)
51+
52+
### ReplicaSet
53+
54+
|Name|Topic|Objective & Instructions|Solution|Comments|
55+
|--------|--------|------|----|----|
1056
| Creating a ReplicaSet | ReplicaSet | [Exercise](replicaset_01.md) | [Solution](solutions/replicaset_01_solution.md)
1157
| Operating ReplicaSets | ReplicaSet | [Exercise](replicaset_02.md) | [Solution](solutions/replicaset_02_solution.md)
1258
| ReplicaSets Selectors | ReplicaSet | [Exercise](replicaset_03.md) | [Solution](solutions/replicaset_03_solution.md)
1359

1460
## Kubernetes Questions
1561

16-
- [Kubernetes](#kubernetes)
17-
- [Kubernetes Exercises](#kubernetes-exercises)
18-
- [Kubernetes Questions](#kubernetes-questions)
19-
- [Kubernetes 101](#kubernetes-101)
20-
- [Kubernetes - Hands-On Basics](#kubernetes---hands-on-basics)
21-
- [Kubernetes - Cluster](#kubernetes---cluster)
22-
- [Pods](#pods)
23-
- [Deployments](#deployments)
24-
- [Services](#services)
25-
- [Ingress](#ingress)
26-
- [Kubernetes - Security](#kubernetes---security)
27-
- [Kubernetes - Troubleshooting Scenarios](#kubernetes---troubleshooting-scenarios)
28-
- [Kubernetes - Submariner](#kubernetes---submariner)
29-
- [Kubernetes - Istio](#kubernetes---istio)
30-
- [Kubernetes - Scenarios](#kubernetes---scenarios)
31-
32-
## Kubernetes 101
62+
### Kubernetes 101
3363

3464
<details>
3565
<summary>What is Kubernetes? Why organizations are using it?</summary><br><b>
@@ -110,8 +140,7 @@ Becaused container is not a Kubernetes object. The smallest object unit in Kuber
110140
- Always specify requests and limits to prevent situation where containers are using the entire cluster memory which may lead to OOM issue
111141
</b></details>
112142

113-
<a name="kubernetes-cluster"></a>
114-
#### Kubernetes - Cluster
143+
### Cluster
115144

116145
<details>
117146
<summary>What is a Kubernetes Cluster?</summary><br><b>
@@ -204,7 +233,7 @@ Apply requests and limits, especially on third party applications (where the unc
204233
`kubectl api-resources`
205234
</b></details>
206235

207-
#### Pods
236+
### Pods
208237

209238
<details>
210239
<summary>Explain what is a Pod</summary><br><b>
@@ -445,7 +474,7 @@ To make a Pod externally accessible, we need to use an object called Service in
445474
`kubectl get pods -o wide`
446475
</b></details>
447476

448-
#### Deployments
477+
### Deployments
449478

450479
<details>
451480
<summary>What is a "Deployment" in Kubernetes?</summary><br><b>
@@ -874,7 +903,7 @@ spec:
874903
- hosts:
875904
- some_app.com
876905
secretName: someapp-secret-tls
877-
````
906+
```
878907
</b></details>
879908

880909
<details>
@@ -1060,7 +1089,7 @@ A ReplicaSet's purpose is to maintain a stable set of replica Pods running at an
10601089
A DaemonSet ensures that all Nodes run a copy of a Pod.
10611090
</b></details>
10621091

1063-
#### Kubernetes - Storage
1092+
### Storage
10641093

10651094
<details>
10661095
<summary>What is a volume in regards to Kubernetes?</summary><br><b>
@@ -1081,7 +1110,7 @@ A directory accessible by the containers inside a certain Pod. The mechanism res
10811110
Ephemeral volume types have the lifetime of a pod as opposed to persistent volumes which exist beyond the lifetime of a Pod.
10821111
</b></details>
10831112

1084-
#### Kubernetes - Network Policies
1113+
### Network Policies
10851114

10861115
<details>
10871116
<summary>Explain Network Policies</summary><br><b>
@@ -1110,7 +1139,7 @@ False. By default pods are non-isolated.
11101139
Denied. Both source and destination policies has to allow traffic for it to be allowed.
11111140
</b></details>
11121141

1113-
#### Kubernetes - Configuration File
1142+
#### Configuration File
11141143

11151144
<details>
11161145
<summary>Which parts a configuration file has?</summary><br><b>
@@ -1139,7 +1168,7 @@ YAML
11391168
etcd
11401169
</b></details>
11411170

1142-
#### Kubernetes - etcd
1171+
### etcd
11431172

11441173
<details>
11451174
<summary>What is etcd?</summary><br><b>
@@ -1168,7 +1197,7 @@ True
11681197
<summary>Why etcd? Why not some SQL or NoSQL database?</summary><br><b>
11691198
</b></details>
11701199

1171-
#### Kubernetes - Namespaces
1200+
### Namespaces
11721201

11731202
<details>
11741203
<summary>What are namespaces?</summary><br><b>
@@ -1452,7 +1481,7 @@ False. CPU is a compressible resource while memory is a non compressible resourc
14521481
Explained [here](https://www.youtube.com/watch?v=i9V4oCa5f9I)
14531482
</b></details>
14541483

1455-
#### Kubernetes - Operators
1484+
### Operators
14561485

14571486
<details>
14581487
<summary>What is an Operator?</summary><br><b>
@@ -1537,7 +1566,7 @@ Use kubeconfig files to organize information about clusters, users, namespaces,
15371566
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/)
15381567
</b></details>
15391568

1540-
#### Kubernetes - Secrets
1569+
### Secrets
15411570

15421571
<details>
15431572
<summary>Explain Kubernetes Secrets</summary><br><b>
@@ -1609,7 +1638,7 @@ USER_PASSWORD environment variable will store the value from password key in the
16091638
In other words, you reference a value from a Kubernetes Secret.
16101639
</b></details>
16111640

1612-
#### Kubernetes - Volumes
1641+
### Volumes
16131642

16141643
<details>
16151644
<summary>True or False? Kubernetes provides data persistence out of the box, so when you restart a pod, data is saved</summary><br><b>
@@ -1692,7 +1721,7 @@ The main difference relies on the moment when you want to configure storage. For
16921721
* Delete
16931722
</b></details>
16941723

1695-
#### Kubernetes - Access Control
1724+
### Access Control
16961725

16971726
<details>
16981727
<summary>What is RBAC?</summary><br><b>
@@ -1744,7 +1773,7 @@ The pod is automatically assigned with the default service account (in the names
17441773
[kubernetes.io](https://kubernetes.io/docs/tasks/configure-pod-container/security-context): "A security context defines privilege and access control settings for a Pod or Container."
17451774
</b></details>
17461775

1747-
#### Kubernetes - Patterns
1776+
### Patterns
17481777

17491778
<details>
17501779
<summary>Explain the sidecar container pattern</summary><br><b>
@@ -1753,7 +1782,7 @@ The sidecar pattern is a single-node pattern made up of two containers. The firs
17531782
Without this container, the application would not exist. In addition to the application container, there is a sidecar container.
17541783
</b></details>
17551784

1756-
#### Kubernetes - CronJob
1785+
### CronJob
17571786

17581787
<details>
17591788
<summary>Explain what is CronJob and what is it used for</summary><br><b>
@@ -1813,7 +1842,7 @@ As a result this configuration isn't part of the cron job spec hence the cron jo
18131842
To fix it, these lines should placed in the spec of the cron job, above or under the "schedule" directive in the above example.
18141843
</b></details>
18151844

1816-
#### Kubernetes - Misc
1845+
### Misc
18171846

18181847
<details>
18191848
<summary>Explain Imperative Management vs. Declarative Management</summary><br><b>
@@ -1931,7 +1960,7 @@ Kubernetes labels are key-value pairs that can connect identifying metadata with
19311960
<summary>What is Kubeconfig?</summary><br><b>
19321961
</b></details>
19331962

1934-
#### Kubernetes - Gatekeeper
1963+
### Gatekeeper
19351964

19361965
<details>
19371966
<summary>What is Gatekeeper?</summary><br><b>
@@ -1945,7 +1974,7 @@ Kubernetes labels are key-value pairs that can connect identifying metadata with
19451974
On every request sent to the Kubernetes cluster, Gatekeeper sends the policies and the resources to OPA (Open Policy Agent) to check if it violates any policy. If it does, Gatekeeper will return the policy error message back. If it isn't violates any policy, the request will reach the cluster.
19461975
</b></details>
19471976

1948-
#### Kubernetes - Policy Testing
1977+
### Policy Testing
19491978

19501979
<details>
19511980
<summary>What is Conftest?</summary><br><b>
@@ -1960,7 +1989,7 @@ It is mostly used in testing environments such as CI pipelines or local hooks.
19601989
Same as Conftest, it is used for policy testing and enforcement. The difference is that it comes with built-in policies.
19611990
</b></details>
19621991

1963-
#### Kubernetes - Helm
1992+
### Helm
19641993

19651994
<details>
19661995
<summary>What is Helm?</summary><br><b>
@@ -2047,7 +2076,7 @@ Or directly on the command line: `helm install --set some_key=some_value`
20472076
Helm allows you to upgrade, remove and rollback to previous versions of charts. In version 2 of Helm it was with what is known as "Tiller". In version 3, it was removed due to security concerns.
20482077
</b></details>
20492078

2050-
#### Kubernetes - Security
2079+
### Security
20512080

20522081
<details>
20532082
<summary>What security best practices do you follow in regards to the Kubernetes cluster?</summary><br><b>
@@ -2061,7 +2090,7 @@ Helm allows you to upgrade, remove and rollback to previous versions of charts.
20612090
* Consider using tools (e.g. Falco) for monitoring threats
20622091
</b></details>
20632092

2064-
#### Kubernetes - Troubleshooting Scenarios
2093+
### Troubleshooting Scenarios
20652094

20662095
<details>
20672096
<summary>Running <code>kubectl get pods</code> you see Pods in "Pending" status. What would you do?</summary><br><b>
@@ -2083,34 +2112,15 @@ One possible path is to start with checking the Pod status.
20832112
TODO: finish this...
20842113
</b></details>
20852114

2086-
#### Kubernetes - Submariner
2087-
2088-
<details>
2089-
<summary>Explain what is Submariner and what is it used for</summary><br><b>
2090-
2091-
"Submariner enables direct networking between pods and services in different Kubernetes clusters, either on premise or in the cloud."
2092-
2093-
You can learn more [here](https://submariner-io.github.io)
2094-
</b></details>
2095-
2096-
<details>
2097-
<summary>What each of the following components does?:
2098-
2099-
* Lighthouse
2100-
* Broker
2101-
* Gateway Engine
2102-
* Route Agent</summary><br><b>
2103-
</b></details>
2104-
2105-
#### Kubernetes - Istio
2115+
### Istio
21062116

21072117
<details>
21082118
<summary>What is Istio? What is it used for?</summary><br><b>
21092119

21102120
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.
21112121
</b></details>
21122122

2113-
#### Kubernetes - Scenarios
2123+
### Scenarios
21142124

21152125
<details>
21162126
<summary>An engineer form your organization told you he is interested only in seeing his team resources in Kubernetes. Instead, in reality, he sees resources of the whole organization, from multiple different teams. What Kubernetes concept can you use in order to deal with it?</summary><br><b>

0 commit comments

Comments
 (0)