DevOps Interview
1.Q. How are your day-to-day activities as a DevOps Engineer?
Monitoring infrastructure
Writing/maintaining IaC
Improving pipelines
Handling releases
Supporting dev teams
Troubleshooting incidents
On a typical day, I monitor production clusters, manage and improve our Jenkins pipelines, work on Terraform modules for resource provisioning, and collaborate with developers for application releases. I also handle incidents like pod failures or networking issues.โ
2.What is a ConfigMap, and how is it different from a Secret?
ChatGPT said:
๐น What is a ConfigMap in Kubernetes?
A ConfigMap is an object used to store non-sensitive configuration data in key-value pairs. It decouples configuration artifacts from container images so that your application can be more portable and environment-agnostic.
๐น What is a Secret in Kubernetes?
A Secret is also a key-value store, but it is specifically designed to store sensitive data such as passwords, tokens, SSH keys, and certificates. Secrets are base64-encoded and can be mounted as files or exposed as environment variables.
๐ธ Key Differences Between ConfigMap and Secret
| Feature | ConfigMap | Secret |
| Purpose | Store non-sensitive config data | Store sensitive data like credentials |
| Encoding | Plaintext | Base64-encoded (not encrypted by default) |
| Access Restrictions | Same as any resource | More restrictive access via RBAC |
| Default Storage | Stored in etcd as plain text | Stored in etcd but can be encrypted at rest |
| Use Cases | App settings, URLs, feature flags | Passwords, API keys, tokens |
๐ธ Example: ConfigMap YAML
yamlCopyEditapiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
APP_MODE: production
LOG_LEVEL: debug
๐ธ Example: Secret YAML
yamlCopyEditapiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
data:
DB_PASSWORD: cGFzc3dvcmQ= # "password" in base64
You can create a secret like this:
bashCopyEditkubectl create secret generic my-secret --from-literal=DB_PASSWORD=password
๐น How They're Used in Pods
As environment variables:env: - name: APP_MODE valueFrom: configMapKeyRef: name: my-config key: APP_MODE
For secrets:
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: DB_PASSWORD
๐ง TL;DR
| Use ConfigMap for: | Use Secret for: |
| App configs, flags | Passwords, tokens, keys |
| Log levels, URLs | SSH certs, DB credentials |
Let me know if you want a live example or need to mount these into a pod as volumes.
3.How do you check network connectivity between two servers?
ChatGPT said:
To check network connectivity between two servers, you can use a combination of basic and advanced tools depending on the depth of diagnostics you need.
๐น 1. Ping โ Check basic network reachability
ping <destination-ip-or-hostname>
Example:
ping server2.example.com
โ Verifies:
Network is reachable
ICMP is allowed (some firewalls block it)
๐น 2. Traceroute โ Show network path and latency per hop
traceroute <destination>
Example:
traceroute server2.example.com
โ Verifies:
Intermediate hops
Latency and where the path is breaking
๐ฆ Install if missing:
tsudo apt install traceroute # Debian/Ubuntu
sudo yum install traceroute # RHEL/CentOS
๐น 3. Telnet / Netcat (nc) โ Check if a port is open on a remote server
telnet <destination> <port>
Example:
telnet server2.example.com 22
Or use nc (netcat):
bashCopyEditnc -zv server2.example.com 22
โ Verifies:
- TCP port connectivity (SSH, HTTP, DB ports, etc.)
๐น 4. SSH โ Try to connect directly (if SSH is open)
ssh user@server2.example.com
โ Verifies:
- Network + port 22 + authentication
๐น 5. curl / wget โ Test web service or API endpoint
curl http://server2.example.com:8080
โ Verifies:
HTTP connectivity
Service response (status codes, headers)
๐น 6. nmap โ Scan ports on a remote server
nmap -p 1-65535 server2.example.com
โ Verifies:
- Which ports are open/filtered/closed
๐ฆ Install if needed:
sudo apt install nmap
๐น 7. ip/ifconfig + netstat/ss โ Debug local networking issues
Check local interfaces:
ip a
Check listening ports:
ss -tuln
๐ง Pro Tip: Combine tools
If ping works but telnet/nc to port fails โ likely a firewall or port blocking issue.
If telnet works but curl fails โ likely a service issue on the remote server.
Let me know the OS type and specific use case (e.g., Kubernetes node check, internal servers, across VPN) and I can tailor the commands more precisely.
4.Q. What is a NAT Gateway?
Allows private subnets to access the internet Without exposing resources to incoming trac Managed by AWS โ Scenarios โWe had EC2 instances in private subnets that needed to pull Docker images from public repos. We placed a NAT Gateway in a public subnet, routing private subnet trac through it so those instances could reach the internet safely.โ โIn my last project, the private subnets for EC2 instances needed to pull OS updates from the internet. I used a NAT gateway in the public subnet, routing trac through it, while blocking inbound access to those instances.โ Diagram Internet-> IGW โ NAT Gateway โ Private Subnet EC2 Advanced Q&A Q: Can a NAT Gateway receive inbound trac? A: No โ it only handles outbound requests from private subnets. Best practices Always place a NAT gateway in a public subnet Remember, private subnet routes point to the NAT
5.Frequently asked Kubernetes questions with practical ๐๐ฐ๐ฒ๐ป๐ฎ๐ฟ๐ถ๐ผ๐.. you must read once
๐ง ๐ญ. ๐๐ต๐ฒ๐ฐ๐ธ ๐ก๐ผ๐ฑ๐ฒ ๐๐ฒ๐ฎ๐น๐๐ต
โ๐๐ด ๐ต๐ฉ๐ฆ ๐ค๐ญ๐ถ๐ด๐ต๐ฆ๐ณ ๐ฉ๐ฆ๐ข๐ญ๐ต๐ฉ๐บ?โ
kubectl get nodes
kubectl describe node <node-name>
๐ฆ ๐ฎ. ๐๐ฒ๐ฏ๐๐ด ๐ฎ ๐๐ฟ๐ฎ๐๐ต๐ถ๐ป๐ด ๐ฃ๐ผ๐ฑ
โ๐๐ฉ๐บ ๐ช๐ด ๐ฎ๐บ ๐ฑ๐ฐ๐ฅ ๐ง๐ข๐ช๐ญ๐ช๐ฏ๐จ?โ
kubectl logs <pod-name>
kubectl logs <pod-name> --previous
๐ฅ๏ธ ๐ฏ. ๐๐
๐ฒ๐ฐ ๐ถ๐ป๐๐ผ ๐ฎ ๐ฃ๐ผ๐ฑ
โ๐๐ฆ๐ฆ๐ฅ ๐ด๐ฉ๐ฆ๐ญ๐ญ ๐ข๐ค๐ค๐ฆ๐ด๐ด ๐ง๐ฐ๐ณ ๐ฅ๐ฆ๐ฃ๐ถ๐จ๐จ๐ช๐ฏ๐จ.โ
kubectl exec -it <pod-name> -- /bin/bash
๐ ๐ฐ. ๐๐
๐ฝ๐ผ๐๐ฒ ๐ฎ ๐๐ฒ๐ฝ๐น๐ผ๐๐บ๐ฒ๐ป๐
โ๐๐น๐ฑ๐ฐ๐ด๐ฆ ๐ข๐ฑ๐ฑ ๐ท๐ช๐ข ๐๐ฐ๐ฅ๐ฆ๐๐ฐ๐ณ๐ต.โ
kubectl expose deployment <name> --port=80 --target-port=8080 --type=NodePort
๐ ๐ฑ. ๐ฆ๐ฐ๐ฎ๐น๐ฒ ๐ฌ๐ผ๐๐ฟ ๐๐ฝ๐ฝ
โ๐๐ฏ๐ค๐ณ๐ฆ๐ข๐ด๐ฆ ๐ฑ๐ฐ๐ฅ ๐ค๐ฐ๐ถ๐ฏ๐ต ๐ต๐ฐ ๐ฉ๐ข๐ฏ๐ฅ๐ญ๐ฆ ๐ต๐ณ๐ข๐ง๐ง๐ช๐ค.โ
kubectl scale deployment <name> --replicas=5
๐ ๐ฒ. ๐จ๐ฝ๐ฑ๐ฎ๐๐ฒ ๐๐ฒ๐ฝ๐น๐ผ๐๐บ๐ฒ๐ป๐ ๐๐บ๐ฎ๐ด๐ฒ
โ๐๐ฐ๐ญ๐ญ ๐ฐ๐ถ๐ต ๐ข ๐ฏ๐ฆ๐ธ ๐ข๐ฑ๐ฑ ๐ท๐ฆ๐ณ๐ด๐ช๐ฐ๐ฏ.โ
kubectl set image deployment/<name> <container>=<image>:<tag>
๐ ๐ณ. ๐ฃ๐ผ๐ฑ-๐๐ผ-๐ก๐ผ๐ฑ๐ฒ ๐ ๐ฎ๐ฝ๐ฝ๐ถ๐ป๐ด
โ๐๐ฉ๐ฆ๐ณ๐ฆ ๐ช๐ด ๐ต๐ฉ๐ช๐ด ๐ฑ๐ฐ๐ฅ ๐ณ๐ถ๐ฏ๐ฏ๐ช๐ฏ๐จ?โ
kubectl get pods -o wide
๐ ๐ด. ๐จ๐๐ฒ ๐ฆ๐ฒ๐ฐ๐ฟ๐ฒ๐๐ ๐ฆ๐ฒ๐ฐ๐๐ฟ๐ฒ๐น๐
โ๐๐ฏ๐ซ๐ฆ๐ค๐ต ๐๐ ๐ค๐ณ๐ฆ๐ฅ๐ฆ๐ฏ๐ต๐ช๐ข๐ญ๐ด ๐ช๐ฏ๐ต๐ฐ ๐ฑ๐ฐ๐ฅ๐ด.โ
kubectl create secret generic db-creds --from-literal=username=admin --from-literal=password=pass123
๐ ๐ต. ๐๐ฝ๐ฝ๐น๐ ๐ฌ๐๐ ๐ ๐๐ต๐ฎ๐ป๐ด๐ฒ๐
โ๐๐ฑ๐ฅ๐ข๐ต๐ฆ ๐ค๐ฐ๐ฏ๐ง๐ช๐จ ๐ท๐ช๐ข ๐ง๐ช๐ญ๐ฆ.โ
kubectl apply -f deployment.yaml
โฉ๏ธ ๐ญ๐ฌ. ๐ฅ๐ผ๐น๐น๐ฏ๐ฎ๐ฐ๐ธ ๐ฎ ๐๐ฎ๐ฑ ๐๐ฒ๐ฝ๐น๐ผ๐๐บ๐ฒ๐ป๐
โ๐๐ฏ๐ฅ๐ฐ ๐ข ๐ง๐ข๐ช๐ญ๐ฆ๐ฅ ๐ณ๐ฐ๐ญ๐ญ๐ฐ๐ถ๐ต.โ
kubectl rollout undo deployment/<name>
โ ๏ธ ๐ญ๐ญ. ๐๐ฟ๐ฎ๐ถ๐ป ๐ฎ ๐ก๐ผ๐ฑ๐ฒ
โ๐๐ณ๐ฆ๐ฑ ๐ฏ๐ฐ๐ฅ๐ฆ ๐ง๐ฐ๐ณ ๐ฎ๐ข๐ช๐ฏ๐ต๐ฆ๐ฏ๐ข๐ฏ๐ค๐ฆ.โ
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
๐ ๐ญ๐ฎ. ๐ง๐ฎ๐ถ๐ป๐ ๐ฎ ๐ก๐ผ๐ฑ๐ฒ
โ๐๐ฆ๐ด๐ฆ๐ณ๐ท๐ฆ ๐ข ๐ฏ๐ฐ๐ฅ๐ฆ ๐ง๐ฐ๐ณ ๐ด๐ฑ๐ฆ๐ค๐ช๐ข๐ญ ๐ธ๐ฐ๐ณ๐ฌ๐ญ๐ฐ๐ข๐ฅ๐ด.โ
kubectl taint nodes <name> key=value:NoSchedule
๐ ๐ญ๐ฏ. ๐ช๐ผ๐ฟ๐ธ ๐๐ถ๐๐ต ๐ก๐ฎ๐บ๐ฒ๐๐ฝ๐ฎ๐ฐ๐ฒ๐
โ๐๐ฆ๐ฑ๐ข๐ณ๐ข๐ต๐ฆ ๐ฆ๐ฏ๐ท๐ช๐ณ๐ฐ๐ฏ๐ฎ๐ฆ๐ฏ๐ต๐ด.โ
kubectl create namespace dev kubectl config set-context --current --namespace=dev
๐ ๐ญ๐ฐ. ๐๐ฟ๐ฎ๐๐ต๐๐ผ๐ผ๐ฝ๐๐ฎ๐ฐ๐ธ๐ข๐ณ๐ณ ๐๐ฒ๐ฏ๐๐ด
โ๐๐ฐ๐ฅ ๐ฌ๐ฆ๐ฆ๐ฑ๐ด ๐ณ๐ฆ๐ด๐ต๐ข๐ณ๐ต๐ช๐ฏ๐จ โ ๐ธ๐ฉ๐บ?โ
kubectl describe pod <name>
kubectl logs <name> --previous
๐ค. When auto-scaling instances, how do you manage the backend RDS database?
๐. To manage the backend RDS database during auto-scaling:
โ Enable Multi-AZ for high availability and automatic failover.
โ Use RDS Read Replicas to handle read-heavy traffic, reducing the load on the primary database.
โ Scale RDS vertically (instance size) or horizontally (read replicas) based on the database workload.
โ Monitor performance using Amazon CloudWatch and adjust as necessary.๐ค. Have you ever set up cross-account access for S3? For example, if the QA team needs access
to the production database.
-> Yes, I've set up cross-account access by:
โ Creating an IAM role in the production account with the necessary S3 permissions.
โ Establishing a trust relationship to allow the QA account to assume that role.
โ Using S3 bucket policies to grant access from the QA account.
โ QA team members can then assume the role using AWS STS (Security Token Service) to access the production S3 bucket.๐ค. How can an S3 account in Account A access an S3 account in Account B?
๐. Account A can access Account Bโs S3 bucket by:
โ Setting up a bucket policy in Account B that grants Account A the necessary permissions.
โ Creating an IAM role in Account B with permissions for S3 and allowing Account A to assume that role via a trust policy.
โ Using AWS STS to assume the role from Account A and access the S3 bucket in Account B.๐ค. Are you familiar with lifecycle management in S3 buckets? How do you set up lifecycle policies?
๐. Yes, lifecycle management in S3 allows you to define rules to transition objects between different storage classes or delete them after a certain period. Lifecycle policies can be set up using the S3 Management Console, AWS CLI, or Terraform by specifying the transitions and expiration actions in a JSON configuration file.๐ค. Can you explain the STS assume role policy?
๐. The STS (Security Token Service) AssumeRole policy allows a user or service to assume a
role in a different account or within the same account. This provides temporary security credentials with the permissions associated with the assumed role, enabling cross-account access or delegation of permissions.๐ค. What are the types of storage accounts in AWS S3?
๐. In AWS S3, the different storage classes include:
โ S3 Standard
โ S3 Intelligent-Tiering
โ S3 Standard-IA (Infrequent Access)
โ S3 One Zone-IA
โ S3 Glacier
โ S3 Glacier Deep Archive๐ค. What is the maximum number of S3 buckets you can
create?
Ans. 100๐ค. How many total VPCs per account/region and subnets per
VPC can you have?
Ans. 5, 200๐ค. ๐๐ฎ๐ป ๐๐ผ๐ ๐๐ต๐ฎ๐ฟ๐ฒ ๐ฎ๐ป ๐ถ๐ป๐๐๐ฎ๐ป๐ฐ๐ฒ ๐๐ต๐ฒ๐ฟ๐ฒ ๐๐ผ๐ ๐ฝ๐ฟ๐ผ๐๐ถ๐ฑ๐ฒ๐ฑ ๐ฎ ๐๐ผ๐น๐๐๐ถ๐ผ๐ป ๐ณ๐ผ๐ฟ ๐ฐ๐ผ๐๐ ๐ผ๐ฝ๐๐ถ๐บ๐ถ๐๐ฎ๐๐ถ๐ผ๐ป ๐๐ต๐ถ๐น๐ฒ ๐บ๐ฎ๐ป๐ฎ๐ด๐ถ๐ป๐ด ๐ฟ๐ฒ๐๐ผ๐๐ฟ๐ฐ๐ฒ ๐ฎ๐น๐น๐ผ๐ฐ๐ฎ๐๐ถ๐ผ๐ป?
Our cloud infrastructure was over-provisioned, leading to unnecessary costs.
I implemented auto-scaling based on actual usage metrics and utilized spot instances for non-critical workloads.
Additionally, I restructured the storage solution by moving infrequently accessed data to lower-cost storage classes. These changes resulted in a significant reduction in our monthly cloud expenses without compromising performance.๐ค. ๐๐ฎ๐ป๐ฎ๐ฟ๐ ๐๐ฒ๐ฝ๐น๐ผ๐๐บ๐ฒ๐ป๐: Gradually rolling out the new version to a small subset of users before a full deployment.
๐ค. ๐ฅ๐ผ๐น๐น๐ถ๐ป๐ด ๐๐ฒ๐ฝ๐น๐ผ๐๐บ๐ฒ๐ป๐: Incrementally updating instances or servers with the new version, ensuring at least some instances are always running the old version.
๐ค. ๐๐ฒ๐๐ฐ๐ฟ๐ถ๐ฏ๐ฒ ๐ฎ ๐๐ถ๐๐๐ฎ๐๐ถ๐ผ๐ป ๐๐ต๐ฒ๐ฟ๐ฒ ๐๐ต๐ฒ ๐ฒ๐ป๐๐ถ๐ฟ๐ฒ ๐ฝ๐ฟ๐ผ๐ฑ๐๐ฐ๐๐ถ๐ผ๐ป ๐ถ๐ป๐๐๐ฎ๐ป๐ฐ๐ฒ ๐ฐ๐ฟ๐ฎ๐๐ต๐ฒ๐ฑ, ๐ฎ๐ป๐ฑ ๐๐ผ๐ ๐ต๐ฎ๐ฑ ๐๐ผ ๐ณ๐ถ๐ ๐ถ๐ ๐พ๐๐ถ๐ฐ๐ธ๐น๐.
In one instance, our production server crashed due to a
memory leak in the application. I quickly identified the issue using monitoring tools like Prometheus and logs from ELK Stack.
To resolve it, I restarted the affected services and temporarily scaled up the infrastructure to handle the load. I then worked with the development team to identify and fix the memory leak, ensuring it didnโt happen again.๐ค.๐๐น๐ผ๐๐ฑ ๐ก๐๐ง ๐๐ฎ๐๐ฒ๐๐ฎ๐:
Provides outbound internet access for instances in a private network without exposing them to inbound traffic.
Used for secure, private instances that need internet access without being directly accessible from the internet.๐ค. ๐ฉ๐ฃ๐ ๐ฃ๐ฒ๐ฒ๐ฟ๐ถ๐ป๐ด: A network connection between two VPCs that allows traffic to be routed between them using private IP addresses. This is useful for connecting resources across different VPCs without going over the public internet.
๐ค. ๐๐ฎ๐ป๐ฑ๐น๐ถ๐ป๐ด ๐ ๐๐น๐๐ถ๐ฝ๐น๐ฒ ๐ ๐ถ๐ฐ๐ฟ๐ผ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ๐: Use Kubernetes namespaces to isolate microservices, and manage their deployment using Helm charts or a CI/CD tool like Jenkins, ArgoCD, or GitLab CI/CD. Implement service discovery, networking, and security policies to ensure seamless communication between microservices.
๐ค. ๐๐ฎ๐๐ฒ ๐๐ผ๐ ๐๐ผ๐ฟ๐ธ๐ฒ๐ฑ ๐๐ถ๐๐ต ๐๐๐๐ผ ๐ฆ๐ฐ๐ฎ๐น๐ถ๐ป๐ด ๐๐ฟ๐ผ๐๐ฝ๐ (๐๐ฆ๐)?
Yes, I have worked with ASGs to automatically scale the number of instances in response to demand. ASGs are configured with policies that adjust the desired capacity based on metrics such as CPU utilization, helping to maintain application performance and optimize costs.Member-only story
Kubernetes Troubleshooting โUnderstanding ImagePullBackOff (The Right Way!)
One of the first errors most beginners encounter (and even experienced engineers sometimes dread) in Kubernetes Cluster is:
๐จ
ImagePullBackOffSounds scary? Itโs actually not โ once you understand whatโs going on.
In this post, Iโll walk you through what this error means, how to reproduce it on your local cluster, and most importantly, how to fix it โ whether itโs caused by a bad image name, a private registry, or a simple copy-paste mistake.
What Is ImagePullBackOff in Kubernetes?
The name says it all โ this error is related to pulling a container image in your Kubernetes cluster. When you deploy a pod (whether through a
Pod,Deployment,StatefulSet, etc.), Kubernetes needs to pull the container image from a registry like Docker Hub, ECR, or ACR.When that fails for any reason, Kubernetes throws this error.
Thatโs where the name comes from:
ImagePull: Kubernetes is trying to download the image.BackOff: It's backing off between retries.
Put them together: ImagePullBackOff.
Two Common Scenarios That Cause ImagePullBackOff
Scenario 1: Invalid or Non-Existent Image Name
Letโs say you meant to use the image nginx:1.14.2, but you accidentally typed:
image: ngiNY:1.14.2 # typo!
That image doesnโt exist on Docker Hub (or anywhere). Kubernetes will try to pull it, fail, and eventually hit ImagePullBackOff.
The same goes for specifying the wrong tag. If foolapp:1.1.1 was deleted from your registry, referencing it will cause the same error.
Scenario 2: Private Images Without Access
Letโs say youโre trying to pull an image from your private Docker Hub repo or ECR.
Unless Kubernetes has the right credentials, it wonโt be able to access that image. That leads to โ you guessed it โ ImagePullBackOff.
Letโs Solve ImagePullBackOff (The Fun Part)
If you want to play around with this error and troubleshoot it yourself:
Start a local cluster with Minikube or at KillerCoda.
Create a deployment with a non-existent image:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: ngiNY:1.14.2 # <-- typo on purpose
kubectl apply -f nginx-deploy.yaml
kubectl get pods -w
Youโll first see ErrImagePull, and after a few retries, Kubernetes will enter ImagePullBackOff.

What Does โBackOffโ Mean in Kubernetes?
Kubernetes doesnโt give up easily.
When an image pull fails, it waits a bit and retries. If it fails again, it waits a little longer, and so on.
That increasing delay between retries is called backoff โ hence the term ImagePullBackOff.
Itโs a retry loop, where the interval increases exponentially to avoid hammering the registry unnecessarily.
How to Troubleshoot
Here are a few simple but powerful commands to troubleshoot image pull errors:
Check Events of Pods in detail in Kubernetes Cluster
kubectl describe pod <pod-name>
This gives you the exact reason why the image couldnโt be pulled โ wrong name, unauthorized access, etc.
Watch Status of Pods
kubectl get pods -w
This keeps you updated on the status of the pod in real time.
Fixing Private Image Pull Issues (The Right Way)
If your image is in a private repo, Kubernetes needs a secret to access it.
Step 1: Create a Docker Registry Secret
kubectl create secret docker-registry demo-secret \
--docker-username=<your-username> \
--docker-password=<your-password> \
--docker-email=<your-email> \
--docker-server=https://index.docker.io/v1/

For AWS ECR or Azure, change the docker-server accordingly.
Step 2: Reference the Secret in Your YAML
spec:
imagePullSecrets:
- name: demo-secret
Kubernetes now knows how to authenticate and pull your private image.
Recap: When You See ImagePullBackOffโฆ
Check your image name โ typos and wrong tags are super common.
Is the image private? โ use
imagePullSecretsto fix auth issues.Use
kubectl describe podto get the real reason.BackOff means retry loop โ Kubernetes is trying its best for you
Your Kubernetes Troubleshooting Toolkit
Here are some go-to commands always useful for me:
kubectl get pods -w # live watch
kubectl describe pod <pod> # detailed debug info
kubectl get events # useful for checking what Kubernetes is doing

And if youโre ever stuck, this kubectl cheat sheet is your best friend.

Bonus: Pulling from AWS ECR
Pulling from AWS ECR if working with AWS Cloud? Itโs the same concept โ just with a different --docker-server and a special command to get your token:
aws ecr get-login-password | kubectl create secret docker-registry ecr-secret \
--docker-server=<your-registry-url> \
--docker-username=AWS \
--docker-password-stdi
Update your deployment just like before to reference ecr-secret.
Pro Tips: Remember for ImagePullBackOff
Always double-check your image name and tag before deploying.
Use
kubectl describeto get clear info on what went wrong.Remember,
ImagePullBackOffusually starts asErrImagePullโ it just means Kubernetes is retrying.
Wrapping Up
ImagePullBackOff = Either your image doesnโt exist, or you donโt have access to it.
Fixing it is usually a matter of checking names, tags, or credentials. Simple โ once you know what to look for.
๐๐ป๐๐ฒ๐ฟ๐๐ถ๐ฒ๐ ๐ค๐๐ฒ๐๐๐ถ๐ผ๐ป๐ ๐ณ๐ผ๐ฟ ๐๐ถ๐ป๐๐ / ๐๐ฒ๐๐ข๐ฝ๐ ๐๐ป๐๐ฒ๐ฟ๐๐ถ๐ฒ๐ hashtag#MustCheck
๐ญ. ๐จ๐๐ฒ๐ฟ ๐ฟ๏ฟฝ๏ฟฝ๐ฝ๐ผ๐ฟ๐๐ ๐ต๐ถ๐ด๐ต ๐๐ฃ๐จ ๐๐๐ฎ๐ด๐ฒ. ๐ช๐ต๐ฎ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ฑ๐ผ?
๐ฆ๐๐ฒ๐ฝ๐:
โข Run top or htop to see real-time CPU usage.
โข Use ps aux --sort=-%cpu | head to find the top processes.
โข Investigate the PID using strace -p <pid> or lsof -p <pid>.Check if itโs a normal load (e.g., backup, cron job) or a runaway process.
๐ฎ. ๐๐ถ๐๐ธ ๐๐ฝ๐ฎ๐ฐ๐ฒ ๐ถ๐ ๐ณ๐๐น๐น. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐๐ฟ๐ผ๐๐ฏ๐น๐ฒ๐๐ต๐ผ๐ผ๐ ๐ฎ๐ป๐ฑ ๐ณ๐ถ๐ ๐ถ๐?๐ฆ๐๐ฒ๐ฝ๐:
โข Run df -h to find which partition is full.
โข Use du -sh /* and then du -sh /var/* etc. to drill down.
โข Check /var/log/, /tmp, large files with find / -size +500M.Clean up logs, old files, or move/archive if needed.
๐ฏ. ๐ฌ๐ผ๐ ๐ฐ๐ฎ๐ป'๐ ๐ฆ๐ฆ๐ ๐ถ๐ป๐๐ผ ๐ฎ ๐๐ฒ๐ฟ๐๐ฒ๐ฟ. ๐ช๐ต๐ฎ๐ ๐ฐ๐ผ๐๐น๐ฑ ๐ฏ๐ฒ ๐๐ต๐ฒ ๐ถ๐๐๐๐ฒ?๐๐ต๐ฒ๐ฐ๐ธ๐:
โข Network: ping server_ip, traceroute.
โข Port: nc -zv server_ip 22 or telnet server_ip 22.
โข Firewall: Check iptables, firewalld, security groups (cloud).
โข Service: Is sshd running? systemctl status sshdAuth: Are permissions on ~/.ssh/authorized_keys correct?
๐ฐ. ๐ ๐๐๐ฒ๐ฟ ๐ฐ๐ฎ๐ปโ๐ ๐ฟ๐๐ป ๐๐๐ฑ๐ผ. ๐ช๐ต๐ฎ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ฐ๐ต๐ฒ๐ฐ๐ธ?๐ฆ๐๐ฒ๐ฝ๐:
โข Check with groups username โ is the user in sudo group?
โข Check /etc/sudoers and /etc/sudoers.d/.
โข Use sudo -l -U username to list allowed sudo commands.Check /etc/passwd and /etc/shadow for account issues.
๐ฑ. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ด๐ถ๐๐ฒ ๐ฎ ๐๐๐ฒ๐ฟ ๐ฝ๐ฒ๐ฟ๐บ๐ถ๐๐๐ถ๐ผ๐ป ๐๐ผ ๐ฟ๐๐ป ๐ผ๐ป๐น๐ ๐ผ๐ป๐ฒ ๐ฐ๐ผ๐บ๐บ๐ฎ๐ป๐ฑ ๐๐ถ๐๐ต ๐๐๐ฑ๐ผ?
๐๐ป๐๐๐ฒ๐ฟ:
Edit sudoers with visudo:
username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart apache2This allows only restarting Apache with sudo.
๐ฒ. ๐ง๐ต๐ฒ ๐๐ฒ๐ฏ๐๐ถ๐๐ฒ ๐ต๐ผ๐๐๐ฒ๐ฑ ๐ผ๐ป ๐๐ผ๐๐ฟ ๐๐ถ๐ป๐๐ ๐๐ฒ๐ฟ๐๐ฒ๐ฟ ๐ถ๐ ๐ฑ๐ผ๐๐ป. ๐ช๐ต๐ฎ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ฐ๐ต๐ฒ๐ฐ๐ธ?๐๐ต๐ฒ๐ฐ๐ธ๐น๐ถ๐๐:
โข Ping the server.
โข Check systemctl status apache2 or nginx.
โข Confirm the port is open: netstat -tuln | grep 80
โข Check firewall: ufw status, iptables -L.Check logs: /var/log/nginx/error.log or /var/log/apache2/error.log
๐ณ. ๐ก๐ฒ๐๐๐ผ๐ฟ๐ธ ๐ถ๐ ๐๐น๐ผ๐. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ฑ๐ถ๐ฎ๐ด๐ป๐ผ๐๐ฒ ๐ถ๐?๐ง๐ผ๐ผ๐น๐:
โข ping, traceroute, mtr โ path and packet loss.
โข iftop, nload โ bandwidth usage.
โข ss -tuln โ open ports and connections.
โข Look for high RX/TX errors: ifconfig or ip -s link.โข ๐ด. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ณ๐ถ๐ป๐ฑ ๐ผ๐๐ ๐๐ต๐ถ๐ฐ๐ต ๐ฝ๐ฟ๐ผ๐ฐ๐ฒ๐๐ ๐ถ๐ ๐๐๐ถ๐ป๐ด ๐ฎ ๐๐ฝ๐ฒ๐ฐ๐ถ๐ณ๐ถ๐ฐ ๐ฝ๐ผ๐ฟ๐?
sudo lsof -i :<port>sudo netstat -tulnp | grep <port>๐ต. ๐ ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ ๐ณ๐ฎ๐ถ๐น๐ ๐๐ผ ๐๐๐ฎ๐ฟ๐. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ฑ๐ฒ๐ฏ๐๐ด ๐ถ๐?
โข systemctl status servicename
โข journalctl -xe for system logs
โข Check config syntax: nginx -t, named-checkconf, etc.
Check port conflicts: netstat -tuln๐ค. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ณ๐ผ๐ฟ๐บ๐ฎ๐ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐ฐ๐ผ๐ป๐ณ๐ถ๐ด๐๐ฟ๐ฎ๐๐ถ๐ผ๐ป ๐ณ๐ถ๐น๐ฒ๐?
๐ต๐ฆ๐ณ๐ณ๐ข๐ง๐ฐ๐ณ๐ฎ ๐ง๐ฎ๐ต๐ค. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐๐๐ฒ ๐๐ฒ๐ป๐๐ถ๐๐ถ๐๐ฒ ๐ฑ๐ฎ๐๐ฎ ๐น๐ถ๐ธ๐ฒ ๐ฐ๐ฟ๐ฒ๐ฑ๐ฒ๐ป๐๐ถ๐ฎ๐น๐ ๐ถ๐ป ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ?
Sensitive data can be managed securely in Terraform using environment variables, secret management tools, or Terraform variables with the sensitive attribute. Avoid hardcoding sensitive values in .tf files. Tools like HashiCorp Vault or AWS Secrets Manager can store and retrieve credentials. Secure your state file as it may contain sensitive outputs. Use .gitignore to exclude sensitive files from version control.
๐ค. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐๐ฎ๐น๐ถ๐ฑ๐ฎ๐๐ฒ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐ฐ๐ผ๐ป๐ณ๐ถ๐ด๐๐ฟ๐ฎ๐๐ถ๐ผ๐ป ๐ณ๐ถ๐น๐ฒ๐?
๐ต๐ฆ๐ณ๐ณ๐ข๐ง๐ฐ๐ณ๐ฎ ๐ท๐ข๐ญ๐ช๐ฅ๐ข๐ต๐ฆ๐ค. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐น๐ถ๐๐ ๐ฎ๐น๐น ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐๐ผ๐ฟ๐ธ๐๐ฝ๐ฎ๐ฐ๐ฒ๐?
๐ต๐ฆ๐ณ๐ณ๐ข๐ง๐ฐ๐ณ๐ฎ ๐ธ๐ฐ๐ณ๐ฌ๐ด๐ฑ๐ข๐ค๐ฆ ๐ญ๐ช๐ด๐ต๐ค. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ฟ๐ฒ๐บ๐ผ๐๐ฒ ๐ฎ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐ฟ๐ฒ๐๐ผ๐๐ฟ๐ฐ๐ฒ ๐๐ถ๐๐ต๐ผ๐๐ ๐ฑ๐ฒ๐น๐ฒ๐๐ถ๐ป๐ด ๐ถ๐ ๐ณ๐ฟ๐ผ๐บ ๐๐ต๐ฒ ๐ถ๐ป๐ณ๐ฟ๐ฎ๐๐๐ฟ๐๐ฐ๐๐๐ฟ๐ฒ?
๐ต๐ฆ๐ณ๐ณ๐ข๐ง๐ฐ๐ณ๐ฎ ๐ด๐ต๐ข๐ต๐ฆ ๐ณ๐ฎ <๐ณ๐ฆ๐ด๐ฐ๐ถ๐ณ๐ค๐ฆ_๐ฏ๐ข๐ฎ๐ฆ>๐ค. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ฐ๐ฟ๐ฒ๐ฎ๐๐ฒ ๐ฎ ๐ป๐ฒ๐ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐๐ผ๐ฟ๐ธ๐๐ฝ๐ฎ๐ฐ๐ฒ?
๐ต๐ฆ๐ณ๐ณ๐ข๐ง๐ฐ๐ณ๐ฎ ๐ธ๐ฐ๐ณ๐ฌ๐ด๐ฑ๐ข๐ค๐ฆ ๐ฏ๐ฆ๐ธ <๐ธ๐ฐ๐ณ๐ฌ๐ด๐ฑ๐ข๐ค๐ฆ_๐ฏ๐ข๐ฎ๐ฆ>๐ค. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ฟ๐ฒ๐ณ๐ฟ๐ฒ๐๐ต ๐๐ต๐ฒ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐๐๐ฎ๐๐ฒ ๐ณ๐ถ๐น๐ฒ ๐๐ถ๐๐ต ๐๐ต๐ฒ ๐ฐ๐๐ฟ๐ฟ๐ฒ๐ป๐ ๐ฟ๐ฒ๐๐ผ๐๐ฟ๐ฐ๐ฒ ๐๐๐ฎ๐๐ฒ๐?
๐ต๐ฆ๐ณ๐ณ๐ข๐ง๐ฐ๐ณ๐ฎ ๐ณ๐ฆ๐ง๐ณ๐ฆ๐ด๐ฉ๐ค. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐น๐ผ๐ฐ๐ธ ๐๐ต๐ฒ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐๐๐ฎ๐๐ฒ ๐ณ๐ถ๐น๐ฒ?
State locking is enabled by default in remote backends like S3 with DynamoDB. Ensure your backend configuration supports locking. But now you can do state locking with just S3 and dynamoDB is not required.๐ค. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐๐๐ถ๐๐ฐ๐ต ๐ฏ๐ฒ๐๐๐ฒ๐ฒ๐ป ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐๐ผ๐ฟ๐ธ๐๐ฝ๐ฎ๐ฐ๐ฒ๐?
๐ต๐ฆ๐ณ๐ณ๐ข๐ง๐ฐ๐ณ๐ฎ ๐ธ๐ฐ๐ณ๐ฌ๐ด๐ฑ๐ข๐ค๐ฆ ๐ด๐ฆ๐ญ๐ฆ๐ค๐ต <๐ธ๐ฐ๐ณ๐ฌ๐ด๐ฑ๐ข๐ค๐ฆ_๐ฏ๐ข๐ฎ๐ฆ>๐ค1. ๐๐ผ๐ ๐ต๐ฎ๐๐ฒ ๐๐ผ๐ ๐ถ๐ป๐ท๐ฒ๐ฐ๐๐ฒ๐ฑ ๐๐ต๐ฒ ๐๐ฒ๐ฐ๐ฟ๐ฒ๐๐ ๐ถ๐ป ๐๐ผ๐ป๐ณ๐ถ๐ด๐ ๐ฎ๐ฝ๐?
๐๐ป๐๐๐ฒ๐ฟ: Secrets should not be injected in ConfigMaps as ConfigMaps are not designed for sensitive data. Instead, Kubernetes Secrets should be used. Secrets can be injected into pods via environment variables or mounted as files.๐ค2. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ณ๐ถ๐ป๐ฑ ๐๐ต๐ถ๐ฐ๐ต ๐ฝ๐ผ๐ฑ ๐ถ๐ ๐๐ฎ๐ธ๐ถ๐ป๐ด ๐บ๐ผ๐ฟ๐ฒ ๐๐๐๐๐ฒ๐บ ๐ฟ๐ฒ๐๐ผ๐๐ฟ๐ฐ๐ฒ๐ ๐ฎ๐ฐ๐ฟ๐ผ๐๐ ๐ป๐ผ๐ฑ๐ฒ๐ ๐๐๐ถ๐ป๐ด ๐ธ๐๐ฏ๐ฒ๐ฐ๐๐น?
๐๐ป๐๐๐ฒ๐ฟ: Use ๐ฌ๐ถ๐ฃ๐ฆ๐ค๐ต๐ญ ๐ต๐ฐ๐ฑ ๐ฑ๐ฐ๐ฅ --๐ข๐ญ๐ญ-๐ฏ๐ข๐ฎ๐ฆ๐ด๐ฑ๐ข๐ค๐ฆ๐ด to list resource usage by pods.
Combine it with ๐ฌ๐ถ๐ฃ๐ฆ๐ค๐ต๐ญ ๐ฅ๐ฆ๐ด๐ค๐ณ๐ช๐ฃ๐ฆ ๐ฑ๐ฐ๐ฅ <๐ฑ๐ฐ๐ฅ-๐ฏ๐ข๐ฎ๐ฆ> to get detailed resource usage.๐ค3. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ธ๐ป๐ผ๐ ๐๐ต๐ถ๐ฐ๐ต ๐๐ผ๐ฟ๐ธ๐ฒ๐ฟ ๐ป๐ผ๐ฑ๐ฒ ๐ถ๐ ๐ฐ๐ผ๐ป๐๐๐บ๐ถ๐ป๐ด ๐บ๐ผ๐ฟ๐ฒ ๐ฟ๐ฒ๐๐ผ๐๐ฟ๐ฐ๐ฒ๐ ๐ฎ๐ฐ๐ฟ๐ผ๐๐ ๐๐ต๐ฒ ๐ฐ๐น๐๐๐๐ฒ๐ฟ๐ ๐๐๐ถ๐ป๐ด ๐ธ๐๐ฏ๐ฒ๐ฐ๐๐น?
๐๐ป๐๐๐ฒ๐ฟ: Use kubectl top nodes to see resource consumption across nodes. This will show CPU and memory usage on each node.๐ค4. ๐ช๐ต๐ฎ๐ ๐ฎ๐ฟ๐ฒ ๐๐ต๐ฒ ๐๐๐ฒ๐ฝ๐ ๐ณ๐ผ๐ฟ ๐ฐ๐ผ๐ป๐ณ๐ถ๐ด๐๐ฟ๐ถ๐ป๐ด ๐ฃ๐ฟ๐ผ๐บ๐ฒ๐๐ต๐ฒ๐๐ ๐ฎ๐ป๐ฑ ๐๐ฟ๐ฎ๐ณ๐ฎ๐ป๐ฎ ๐ณ๐ผ๐ฟ ๐บ๐ผ๐ป๐ถ๐๐ผ๐ฟ๐ถ๐ป๐ด ๐๐๐ฏ๐ฒ๐ฟ๐ป๐ฒ๐๐ฒ๐ ๐ฐ๐น๐๐๐๐ฒ๐ฟ๐?
๐๐ป๐๐๐ฒ๐ฟ:
1. Deploy Prometheus using Helm or a custom YAML configuration.
2. Set up Kubernetes service discovery for Prometheus.
3. Deploy Grafana and configure it to use Prometheus as a data source.
4. Import Kubernetes monitoring dashboards in Grafana.
5. Set up alerting rules in Prometheus as needed.๐ค5. ๐ช๐ต๐ฎ๐ ๐ถ๐ ๐๐ฒ๐๐๐ถ๐ผ๐ป ๐ฎ๐ณ๐ณ๐ถ๐ป๐ถ๐๐?
๐๐ป๐๐๐ฒ๐ฟ: Session affinity, also known as sticky sessions, is a concept in load balancing where requests from a particular user are consistently directed to the same server (or pod) in a multi-server environment.
This ensures that the user's session data, which might be stored locally on the server, remains accessible throughout the session.๐ค6. ๐ช๐ต๐ฎ๐ ๐ถ๐ ๐ฝ๐ผ๐ฑ ๐ฎ๐ณ๐ณ๐ถ๐ป๐ถ๐๐ ๐ฎ๐ป๐ฑ ๐ถ๐๐ ๐๐๐ฒ ๐ฐ๐ฎ๐๐ฒ?
๐๐ป๐๐๐ฒ๐ฟ: Pod affinity is a feature in Kubernetes that allows you to specify rules for scheduling pods to run on
nodes that have other specified pods running on them. This can be useful when you want certain
pods to be located together due to factors like data locality, network latency, or shared resources.
๐จ๐๐ฒ ๐๐ฎ๐๐ฒ: An application where the frontend and backend services communicate frequently might
use pod affinity to ensure that both are scheduled on the same node to reduce network latency.1. ๐ช๐ต๐ฎ๐ ๐ถ๐ ๐ฟ๐ฒ๐บ๐ผ๐๐ฒ ๐๐๐ฎ๐๐ฒ ๐ถ๐ป ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ?
Remote state in Terraform refers to storing the state file on a remote backend, such as Amazon S3, instead of locally. This facilitates collaboration and enables locking.2. ๐๐ผ๐ ๐ฐ๐ฎ๐ป ๐๐ผ๐ ๐บ๐ฎ๐ป๐ฎ๐ด๐ฒ ๐บ๐๐น๐๐ถ๐ฝ๐น๐ฒ ๐ฒ๐ป๐๐ถ๐ฟ๐ผ๐ป๐บ๐ฒ๐ป๐๐ (๐ฑ๐ฒ๐, ๐ฝ๐ฟ๐ผ๐ฑ) ๐๐ถ๐๐ต ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ?
You can use Terraform workspaces or create separate directories for each environment, each with its own state file and variables.3. ๐๐ผ๐ ๐ฑ๐ผ ๐๐ผ๐ ๐ต๐ฎ๐ป๐ฑ๐น๐ฒ ๐ฑ๐ฒ๐ฝ๐ฒ๐ป๐ฑ๐ฒ๐ป๐ฐ๐ถ๐ฒ๐ ๐ฏ๐ฒ๐๐๐ฒ๐ฒ๐ป ๐ฟ๐ฒ๐๐ผ๐๐ฟ๐ฐ๐ฒ๐ ๐ถ๐ป ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ?
Terraform automatically handles dependencies based on the resource definitions in your configuration. It will create resources in the correct order.
4. ๐ช๐ต๐ฎ๐ ๐ถ๐ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ'๐ "๐ฎ๐ฝ๐ฝ๐น๐" ๐ฝ๐ฟ๐ผ๐ฐ๐ฒ๐๐?
The "apply" process in Terraform involves comparing the desired state from your configuration to the current state, generating an execution plan, and then applying the changes.5. ๐๐ผ๐ ๐ฐ๐ฎ๐ป ๐๐ผ๐ ๐บ๐ฎ๐ป๐ฎ๐ด๐ฒ ๐๐ฒ๐ฟ๐๐ถ๐ผ๐ป๐ถ๐ป๐ด ๐ผ๐ณ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐ฐ๐ผ๐ป๐ณ๐ถ๐ด๐๐ฟ๐ฎ๐๐ถ๐ผ๐ป๐?
You can use version control systems like Git to track changes to your Terraform configurations. Additionally, Terraform Cloud and Enterprise offer versioning features.6. ๐ช๐ต๐ฎ๐ ๐ถ๐ ๐๐ต๐ฒ ๐ฑ๐ถ๐ณ๐ณ๐ฒ๐ฟ๐ฒ๐ป๐ฐ๐ฒ ๐ฏ๐ฒ๐๐๐ฒ๐ฒ๐ป ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐ฎ๐ป๐ฑ ๐๐น๐ผ๐๐ฑ๐๐ผ๐ฟ๐บ๐ฎ๐๐ถ๐ผ๐ป?
Terraform is a multi-cloud IaC tool that supports various cloud providers, including AWS. CloudFormation is AWS-specific and focuses on AWS resource provisioning.7. ๐ช๐ต๐ฎ๐ ๐ถ๐ ๐ฎ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐บ๐ผ๐ฑ๐๐น๐ฒ?
A Terraform module is a reusable set of configurations that can be used to create multiple resources with a consistent configuration.8. ๐๐ผ๐ ๐ฐ๐ฎ๐ป ๐๐ผ๐ ๐ฑ๐ฒ๐๐๐ฟ๐ผ๐ ๐ถ๐ป๐ณ๐ฟ๐ฎ๐๐๐ฟ๐๐ฐ๐๐๐ฟ๐ฒ ๐ฐ๐ฟ๐ฒ๐ฎ๐๐ฒ๐ฑ ๐ฏ๐ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ?
You can use the terraform destroy command to remove all resources defined in your Terraform configuration.9. ๐๐ผ๐ ๐ฑ๐ผ๐ฒ๐ ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐บ๐ฎ๐ป๐ฎ๐ด๐ฒ ๐๐ฝ๐ฑ๐ฎ๐๐ฒ๐ ๐๐ผ ๐ฒ๐ ๐ถ๐๐๐ถ๐ป๐ด ๐ฟ๐ฒ๐๐ผ๐๐ฟ๐ฐ๐ฒ๐?
Terraform applies updates by modifying existing resources rather than recreating them. This helps preserve data and configurations.10. ๐๐ฎ๐ป ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ ๐ฏ๐ฒ ๐๐๐ฒ๐ฑ ๐ณ๐ผ๐ฟ ๐บ๐ฎ๐ป๐ฎ๐ด๐ถ๐ป๐ด ๐๐ต๐ถ๐ฟ๐ฑ-๐ฝ๐ฎ๐ฟ๐๐ ๐ฟ๐ฒ๐๐ผ๐๐ฟ๐ฐ๐ฒ๐?
Yes, Terraform has the capability to manage resources beyond AWS. It supports multiple providers, making it versatile for managing various cloud and on-premises resources.