Difficulty
- A: Basic, concept (a 1st year CS student can learn)
- B: Intermediate (a fresh CS graduate can learn)
- C: Advanced topic
- D: Expert
Courses
Concepts
Golang
- Syntax
- ๐งต Concurrency (B)
- Goroutines (B)
- Mutex (B)
- Channels (B)
- Context (B)
- HTTP
- Client (
net/http
) (B)
- Request
- Setting/Getting Header
- Setting/Getting Query Parameters
- Custom Client
- Custom Timeout
- HTTP-trace
- Custom transport
- Dump response
- Server
net/http
gorilla/mux
labstack/echo
- Advanced request multiplexing
- Group register
- Middlewares
- JSON marshal/unmarshal
- Config Management (
spf13/viper
/koanf
/spf13/pflag
)
- Environment Variables
- YAML/JSON/TOML
- CLI (cobra)
- gRPC (d)
- Protobuf
- Code generation (which should be communicated well)
- interceptors
- Databases
- Testing
- Jaeger tracing (d)
- Prometheus Exporter SDK
Network
- ๐ Network Warrior (first 12 chapters)
- ๐ Networking for Systems Administrators (IT Mastery)
- ๐ The complete flow of entering a URL in your browser
- OSI layers (a)
- L1:
- L2:
- MAC (a)
- vLAN (b)
- vrrp (b)
- ARP (a)
- L3
- sub-netting, gw (a)
- ip classes (A,B,C) private/public (a)
- localhost (a)
- link local (b)
- Routing protocol (a)
- routing table (a)
- OSPF (b)
- BGP (c)
- iBGP, eBGP (c)
- BGP params (d)
- BGP loop prevention mechanism (d)
- BGP communities (d)
- L4
- TCP handshake (a)
- NAT (a)
- TCP flow (b)
- VxLAN
- L5
- TLS handshake
- asymmetric crypto (a) somehow
- digital signature (a)
- CA and verification (a)
- SNI (c)
- ALPN (c)
- L6
- L7
- HTTP (a)
- Methods (GET/POST/โฆ)
- Headers
- URI, Path and Query parameter
- CORS (c)
- HTTP2 (b)
- gRPC (c)
- DNS (a)
- recursive resolution
- records: A,AAAA, CNAME
- Network bonding
- 0, 1 (b)
- 4 lacp 802.3ad (c)
- Packet NIC flow (d)
- dram
- ring buffer
- driver
- XDP
- MPLS (d)
- FRR (d)
- VRF (d)
Linux
- TODO: add LPIC topic + LinuxFun
- systemd (a)
- iptables https://iximiuz.com/en/posts/laymans-iptables-101/
- eBPF (d)
- Netfilter
- vrf (d)
- route tables, pbr (c)
- route (b)
netns
(b)
veth
pair (b)
- bridge (b)
- vlan aware bridge (c)
- 802.1q (c)
- namespaces
- nsenter
- lsns
- types:
- mnt
- pid
- net
- ipc
- uts
- user
- cgroup
- time
- cgroups (c)
- kexec (d)
- io_urun (d)
- storage
- file
- ACL
- UID, GID
- SELinux ls -Z
- Docker
Kubernetes
- Kubernetes SDK
- Controller / Operator
- controller-runtime
- kubebuilder
- operator-sdk
- reconcile loop
- k8s error checking
- Finalizer
- status
- printable columns
- default values / validations (tags)
- Admission / Mutation Webhook
- tests
- OKD:
- The complete flow of creating a deployment
- Book: Kubernetes in action by Marka Luksa ( Part3 - especially chapter 11 understanding kubernetes internals )
- components (a)
- kubelet, scheduler, kube-proxy
- api
- api server
- authN
- authZ
- mutation
- what is it (b)
- objects in k8s (c)
- writing a custom webhook (c)
- admission
- what is it (b)
- object in k8s (c)
- writing a custom webhook (c)
- etcd watch
- api server watch
- controller pattern
- scheduling pipeline
- extension:
- etcd:
- raft / consensus
- watch
- persistence
- why not redis?
- cri
- kubelet watch
- cri grpc call
- crio
- oci
- runc
- workload
- deployment, sts, daemonset (a)
- sts features (b)
- daemonset:
- no count
- not drain
- even if node restart ??
- probe
- liveness, readiness (a)
- startup probe (b)
- network:
- kube-proxy, service
- service (headless/none, clusterip, loadbalancer, node port, external name) (a)
- endpoint (b)
- endpointslice (c)
- kube proxy iptables chains
- cni (b)
- ingress controller (b)
- dns
kubelet
dns, dnsPolicy
- CoreDNS: learning CoreDNS book
- life of a packet North south
- life of a packet East West
- CSI:
- Console
- Console customization
- Dynamic plugins
Automation
- concepts:
- Reusable modules (roles, scripts, โฆ)
- Idempotency (know the concept in rest but not in ansible)
- Remote parallel execution
- Inventory and discovery
- DSL
- Tools:
- Ansible
- roles (b)
- playbook (a)
- tasks (a)
- inventory (a)
- group vars(b)
- env (a)
- ansible.cfg (b)
- callbacks (d)
- plugins (c)
- dynamic inventory (c)
- writing a module (d)
- ansible-galaxy (c)
- raw (c)
- handlers (c)
- jinja (b)
- Terraform (Terraform up and running)
- state (a)
- storage backend state (b)
- modules (b)
- locals, vs variab