Consider the following below topics and sub-topics to learn and understand to get into Devops.
Kubernetes
- Architecture
- Api Server - REST, watched by multiple items(kubelet, k-proxy), certificate for request
- etcd - key-value store, cluster in eks for HA
- Scheduler - taints, tolerations, affinity based scheduling
- Kube Controller Manager - state of pods and changes, both watch api server
- kubelet(run on each node) and interaction with containerd(it creates the container asked by scheduler)
- k-proxy - runs on each node, handles networking and DNS. Flat networking
- Deployment, pod, service, secret, configmaps (understand their working and connection)
- Ingress Controller and ingress resource (ingress, egress etc and what they are)
- commands to run inside container
- pod lifecycles
- pod, node networking(DNS, fqdn)
- Service Account, roles, clusterrole, rolebinding and clusterrolebinding
- NetworkPolicies and how they work
- Volumes (types, mount location) important
- Authorization, authentication and Admission controller
- Flow of request (refer to image in Documents/devops folder)
- CRDs
- Go deeper into more topics and its API conventions
AWS
- Knowledge of cloud practitioner course
- Working and knowledge of EC2
- Setup
- Patching
- Security Groups
- subnets
- userdata
- Networking Knowledge
- Public and private subnets(internet access to private subnets)
- NAT and gateways
- VPC endpoints
- ALB vs NLB
- vpc peering vs transit gateway
- Security groups and their port mapping
- CIDR block
- Route53
- record types
- working and health checks(setting them up)
- monitoring route53
- Cloudwatch
- logs
- creating dashboard
- understanding metrics and querying
Web Server(Apache and Nginx)
- need of web server
- virtual hosting
- allow/deny IPs
- .htaccess and htpasswd
- reverse proxy
- Implement thread and other directives
- configure logging
- understand various log formats
- server logs, audit logs enable, check tracking of users
Docker (containerization)
- need of docker
- docker networking (types of docker networks)
- docker commands and creating dockerfile
- Docker compose
- docker swarm
- volume mounts and their types
- port mapping (left host: right container)
- Meaning of commands like -
- ENTRYPOINT
- ARG (how its used)
- WORKDIR etc
Jenkins and Gitlab
- Pipeline setup
- understand groovy syntax
- understand .gitlab-ci.yml file as well
- create own groovy scripts
terraform
- what is IAAC and why IAAC is needed?
- create own tf code and store locally
ADHOC
- iops and throughput
- mail configure, smtp, send mail
- redirects
- openSSL
- postfix(similar to sendMail)
- sftp in linux, add user
- ipsec, ACL, port forwarding
- port forwarding in nginx
- jumpbox private to public network
- understand kernel, patching
Consul and Istio
- setup and service mesh
- store env in consul and update them
- try istio for more like request tracing
ArgoCD: TODO
- Setup Argo later for CD as CI needs its own jenkins/gitlab pipeline
- First learn pipelines and then use ArgoCD later
Programming
Python
- Automate anything and everything with this. Create and focus on logic with this
Golang
- learn this for long time future
- complex solution sbuild from python to this
Things to be good at
- Linux Administration
- Monitoring
- CI & CD Pipelines
- Some sort of scripting
- General cloud knowledge of a specific provider
- Communication
- Integrations
- Development workflows
- Performance tuning (web server, network, database)