আগের Tutorial-এ আমরা দেখেছি কীভাবে vim Editor ব্যবহার করে একটি Kubernetes Pod YAML File তৈরি করতে হয়।
যেমন:
vim pod.yaml
তারপর সেই File-এর মধ্যে Pod Configuration লিখেছি এবং kubectl ব্যবহার করে Kubernetes Cluster-এ Pod Create করেছি।
কিন্তু একটি বিষয় চিন্তা করো।
ছোট একটি YAML File লেখা খুব কঠিন নয়। কিন্তু যখন Kubernetes Configuration বড় হতে শুরু করবে, তখন কী হবে?
ধরো, একটি YAML File-এর মধ্যে অনেক Nested Properties, Lists, Dictionaries এবং Kubernetes-specific Fields রয়েছে।
সেখানে ছোট একটি Indentation Mistake-এর কারণেও পুরো Configuration Invalid হয়ে যেতে পারে।
এই সমস্যা কমানোর জন্য আমরা একটি IDE (Integrated Development Environment) ব্যবহার করতে পারি।
এই Tutorial-এ আমরা দেখব কীভাবে Visual Studio Code (VS Code) এবং Red Hat YAML Extension ব্যবহার করে Kubernetes YAML Files আরও সহজে লেখা যায়।
1. এই Tutorial-এর মূল উদ্দেশ্য
এই Demo-এর মূল উদ্দেশ্য হলো Kubernetes YAML Files লেখার জন্য একটি ভালো Development Environment Configure করা।
আগের Demo-তে আমরা ব্যবহার করেছি:
vim pod.yaml
এটি অবশ্যই কাজ করে।
কিন্তু বড় Kubernetes Manifests-এর জন্য সাধারণ Text Editors ব্যবহার করলে অনেক সময় ভুল Identify করা কঠিন হয়ে যায়।
মূল ধারণা হলো: YAML এবং Kubernetes Support আছে এমন IDE ব্যবহার করলে Configuration দ্রুত লেখা যায় এবং অনেক Syntax ও Structure Mistakes আগেই Detect করা সম্ভব হয়।
এই Demo-তে আমরা শিখব:
- IDE কী এবং কেন ব্যবহার করা হয়
- VS Code কেন Useful
- Red Hat YAML Extension Install করা
- Kubernetes Schema Support Configure করা
- Auto-Completion ব্যবহার করা
- YAML Indentation Errors Identify করা
- YAML Outline View ব্যবহার করা
- YAML File দিয়ে Kubernetes Pod Create করা
2. Basic Text Editors ব্যবহার করলে কী সমস্যা হতে পারে?
Kubernetes YAML Files সাধারণ Text Editor দিয়েও লেখা যায়।
যেমন:
- Vim
- Notepad
- Plain Text Editors
কিন্তু Basic Editing Setup-এ সবসময় Advanced Validation বা Auto-Completion পাওয়া যায় না।
ফলে নিচের সমস্যাগুলো Identify করা কঠিন হতে পারে:
- Wrong Indentation
- Incorrect YAML Structure
- Invalid Kubernetes Fields
- Wrong Field Types
- Missing Required Sections
Example
spec:
containers:
- name: nginx
image: nginx
এই YAML Structure Incorrect।
কারণ image এবং name একই Container-এর Properties।
তাই তাদের Alignment সঠিক হতে হবে।
Correct:
spec:
containers:
- name: nginx
image: nginx
ছোট YAML File-এ এই Mistake সহজে চোখে পড়তে পারে।
কিন্তু বড় Configuration File-এর মধ্যে এমন Mistake Identify করা অনেক কঠিন।
তাই IDE ব্যবহার করা Helpful।
3. IDE কী?
IDE-এর Full Form হলো Integrated Development Environment।
IDE হলো এমন একটি Software, যেখানে Code বা Configuration Files লেখা, Edit করা এবং Manage করার জন্য বিভিন্ন Development Features একসঙ্গে পাওয়া যায়।
Popular IDEs এবং Code Editors:
- Visual Studio Code
- IntelliJ IDEA
- PyCharm
- Eclipse
- NetBeans
IDE ব্যবহার করার সুবিধা
| Feature | কাজ |
|---|---|
| Syntax Highlighting | বিভিন্ন Syntax আলাদা করে Highlight করে |
| Auto-Completion | Code এবং Configuration Suggestions দেয় |
| Error Detection | Syntax অথবা Configuration Mistakes Detect করতে সাহায্য করে |
| File Navigation | Project Files Navigate করা সহজ করে |
| Extensions / Plugins | Additional Features Add করা যায় |
| Better Editing Experience | বড় Files Read এবং Edit করা সহজ হয় |
Kubernetes YAML Files লেখার সময় এগুলো খুব Useful।
4. Kubernetes YAML-এর জন্য VS Code কেন Recommended?
এই Tutorial-এ Microsoft Visual Studio Code (VS Code) Recommended করা হয়েছে।
কারণ এটি:
- Free
- Open-source ভিত্তিক Code Editor
- Linux, Windows এবং macOS-এ Available
- Install করা সহজ
- Extensions Support করে
- YAML এবং Kubernetes Manifests লেখার জন্য Useful
VS Code-এর Microsoft Distribution এবং Open-source Code-OSS Project-এর মধ্যে কিছু Licensing ও Distribution Differences রয়েছে।
তবে Kubernetes YAML Development-এর জন্য VS Code একটি Beginner-Friendly Choice।
VS Code Download
Official Website:
https://code.visualstudio.com/
VS Code ব্যবহার করা বাধ্যতামূলক নয়।
তুমি IntelliJ IDEA, PyCharm বা অন্য Supported Editor ব্যবহার করতে পারো।
তবে এই Demo-তে VS Code ব্যবহার করব।
5. VS Code-এ YAML Extension Install করা
VS Code Install করার পর YAML Support Configure করতে হবে।
Step 1: VS Code Open করো
VS Code Launch করো।
Step 2: Extensions Section-এ যাও
Left Sidebar থেকে Extensions Icon Select করো।
Keyboard Shortcut:
Windows / Linux → Ctrl + Shift + X
macOS → Cmd + Shift + X
Step 3: YAML Search করো
Extensions Search Box-এ লিখো:
YAML
এই Tutorial-এ Recommended Extension:
YAML — Red Hat
Extension ID:
redhat.vscode-yaml
Step 4: Extension Install করো
Extension Select করে Install করো।
এই Extension YAML Files লেখার সময় বিভিন্ন Helpful Features Provide করে।
যেমন:
- YAML Validation
- YAML Formatting
- Auto-Completion
- Kubernetes Schema Support
কিছু Development Environments-এ Extension আগে থেকেই Installed থাকতে পারে।
6. Kubernetes Schema Support Enable করা
Basic YAML Validation থাকলেই সবসময় Kubernetes YAML সম্পর্কে Editor যথেষ্ট Information পায় না।
কারণ সাধারণ YAML Syntax এবং Kubernetes-specific Fields এক জিনিস নয়।
Kubernetes Manifests-এ আমরা Fields ব্যবহার করি:
apiVersion:
kind:
metadata:
spec:
containers:
image:
VS Code যেন এই Fields-এর Expected Structure এবং Data Types বুঝতে পারে, তার জন্য Kubernetes Schema Support Configure করা যায়।
Step 1: VS Code Settings Open করা
VS Code-এর Settings Open করো।
তারপর settings.json File Edit করার Option Select করো।
Command Palette থেকেও Open করা যায়:
Preferences: Open User Settings (JSON)
Step 2: Kubernetes Schema Configure করা
settings.json-এর মধ্যে নিচের Configuration Add করো:
{
"yaml.schemas": {
"kubernetes": "*.yaml"
}
}
এই Configuration-এর Meaning কী?
yaml.schemas
|
▼
Kubernetes Schema
|
▼
*.yaml Files
এখানে VS Code-কে বলা হচ্ছে:
.yamlExtension-এর Files Kubernetes Schema ব্যবহার করে Validate করো।
Important
Schema Name:
kubernetes
Lowercase ব্যবহার করতে হবে।
Configuration পরিবর্তন করার পর VS Code Reload অথবা Restart করলে নতুন Settings Apply হওয়া নিশ্চিত করা যায়।
Practical Note
এই Demo-এর Setting সব .yaml Files-এর সঙ্গে Kubernetes Schema Associate করে।
অর্থাৎ Kubernetes ছাড়া অন্য YAML Files থাকলেও সেগুলোর ওপর একই Schema Apply হতে পারে।
শুধুমাত্র Kubernetes Files-এর জন্য Configuration চাইলে File Patterns আরও Specific করা যায়।
আর অনেক ক্ষেত্রে Red Hat YAML Extension Kubernetes Manifests Automatically Detect করতে পারে, তাই সব Environment-এ Manual Schema Mapping প্রয়োজন নাও হতে পারে।
7. নতুন Kubernetes YAML File Create করা
এখন VS Code-এ একটি নতুন YAML File Create করব।
File Name:
nginx.yaml
Step 1: New File Create করো
VS Code-এ একটি New File Create করে Save করো:
nginx.yaml
Step 2: apiVersion দিয়ে শুরু করো
File-এর মধ্যে লিখো:
apiVersion: v1
এখন Kubernetes-aware YAML Extension Configured থাকলে Editor Kubernetes Schema অনুযায়ী Suggestions Provide করতে পারে।
এতে Kubernetes YAML-এর Fields লেখা সহজ হয়।
8. Auto-Completion কীভাবে সাহায্য করে?
VS Code-এর একটি গুরুত্বপূর্ণ Feature হলো Auto-Completion।
ধরো, তুমি লিখেছ:
apiVersion: v1
এখন পরবর্তী Field লেখার সময় Editor Suggestions দিতে পারে।
যেমন:
kind
metadata
spec
Example
তুমি k Type করলে Editor Suggest করতে পারে:
kind:
এবার kind-এর Value লেখার সময় Kubernetes Resource Types Suggest করতে পারে।
যেমন:
Pod
Deployment
Service
তুমি Pod Create করতে চাইলে:
kind: Pod
ব্যবহার করবে।
Auto-Completion কেন Useful?
Auto-Completion ব্যবহার করলে:
- Field Names মনে রাখতে সহজ হয়।
- Spelling Mistakes কমে।
- Kubernetes Object Types সম্পর্কে Suggestions পাওয়া যায়।
- Configuration দ্রুত লেখা যায়।
- Supported Fields Identify করা সহজ হয়।
তবে Suggestions Schema Association এবং Extension Configuration-এর ওপর নির্ভর করে।
9. VS Code Kubernetes Field Types বুঝতে পারে
Kubernetes YAML-এর প্রতিটি Field নির্দিষ্ট ধরনের Value Expect করতে পারে।
যেমন:
metadata:
name:
এখানে name Field একটি String Value Expect করে।
কিন্তু Value Empty রয়েছে।
Schema Validation Configured থাকলে VS Code এই ধরনের Problem Highlight করতে পারে।
Correct Example
metadata:
name: nginx-2
এখন name Field-এর একটি Valid String Value রয়েছে।
Structure
metadata
|
▼
name
|
▼
nginx-2
এই Feature Useful, কারণ Kubernetes YAML Files-এ বিভিন্ন Fields-এর Expected Data Types আলাদা হতে পারে।
যেমন:
- String
- Integer
- Boolean
- Dictionary
- List
Editor Schema অনুযায়ী Error Detection এবং Suggestions Provide করতে পারে।
10. Complete Kubernetes Pod YAML Example
এবার আমরা Demo-এর Complete YAML File লিখব।
File Name:
nginx.yaml
Complete Configuration
apiVersion: v1
kind: Pod
metadata:
name: nginx-2
labels:
env: production
spec:
containers:
- name: nginx
image: nginx
এই YAML File Kubernetes-কে বলছে:
nginx-2নামে একটি Pod Create করো, সেটির সঙ্গেenv=productionLabel Attach করো এবং Pod-এর মধ্যেnginxImage ব্যবহার করে একটি Container Run করো।
YAML Breakdown
| Field | Meaning |
|---|---|
apiVersion: v1 | Kubernetes API Version |
kind: Pod | Pod Object Create করতে হবে |
metadata.name | Pod Name হবে nginx-2 |
labels.env | Environment Label হবে production |
spec.containers | Containers-এর List |
name: nginx | Container Name |
image: nginx | Container Image |
Structure
Kubernetes Pod YAML
|
├── apiVersion: v1
|
├── kind: Pod
|
├── metadata
| |
| ├── name: nginx-2
| |
| └── labels
| |
| └── env: production
|
└── spec
|
└── containers
|
└── Container
|
├── name: nginx
|
└── image: nginx
11. YAML Indentation Mistakes Detect করা
YAML লেখার সময় Indentation Mistakes খুব Common।
ধরো, তুমি নিচের Configuration লিখেছ:
spec:
containers:
- name: nginx
image: nginx
এটি Incorrect।
কারণ image Field ভুল Indentation Level-এ রয়েছে।
name এবং image একই Container Dictionary-এর Properties।
তাই তাদের একই Level-এ Align হতে হবে।
Correct Example
spec:
containers:
- name: nginx
image: nginx
Incorrect vs Correct Structure
Incorrect:
containers
|
├── - name: nginx
|
└── image: nginx
Correct:
containers
|
└── Container
|
├── name: nginx
|
└── image: nginx
Red Hat YAML Extension এই ধরনের Problems Detect করে Error অথবা Warning দেখাতে পারে।
Example Error:
Bad indentation of a mapping entry
এভাবে Kubernetes Cluster-এ YAML Apply করার আগেই অনেক Syntax Mistakes ঠিক করা সম্ভব।
12. YAML Extension কী Validate করতে পারে না?
VS Code-এর YAML এবং Kubernetes Extension খুব Useful হলেও এটি সব ধরনের Problems Detect করতে পারে না।
ধরো, তুমি লিখেছ:
image: nginx
অথবা:
image: fake-image-name
দ্বিতীয় Example-এর Image Name দেখতে Syntactically Valid হতে পারে।
কিন্তু Image Registry-তে সেই Image আদৌ Exists করে কি না, তা YAML Schema Validation নিশ্চিত করতে পারে না।
Extension সাধারণত কী Check করে?
- YAML Syntax
- Indentation
- Expected Kubernetes Fields
- Data Types
- Schema-based Required Properties
Extension কী Confirm করে না?
- Container Image Registry-তে Exists করছে কি না
- Image Tag Valid এবং Available কি না
- Private Registry Credentials Correct কি না
- Kubernetes Cluster Image Pull করতে পারবে কি না
- Application Successfully Start হবে কি না
Example
spec:
containers:
- name: nginx
image: fake-image-name
YAML Structure Valid হলেও Kubernetes Image Pull করার সময় Failure হতে পারে।
তাই YAML Validation Successful হওয়া মানেই Application Successfully Running হবে — এমন নয়।
YAML Validation এবং Kubernetes Runtime Validation আলাদা বিষয়।
13. Multiple Containers Add করা
আগের Tutorials-এ আমরা শিখেছি একটি Pod-এর মধ্যে একাধিক Containers থাকতে পারে।
কারণ containers Field একটি List।
Example
spec:
containers:
- name: nginx
image: nginx
- name: busybox
image: busybox
এখানে দুটি Containers Define করা হয়েছে।
Pod
|
├── NGINX Container
|
└── BusyBox Container
প্রতিটি List Item Dash (-) দিয়ে শুরু হয়েছে।
আর প্রতিটি Container-এর নিজস্ব name এবং image রয়েছে।
এই Demo-তে Multiple Containers-এর Structure সংক্ষেপে দেখানো হয়েছে।
তারপর দ্বিতীয় Container Remove করে Simple Single-Container Pod ব্যবহার করা হয়েছে।
Final Configuration:
spec:
containers:
- name: nginx
image: nginx
Note: শুধু BusyBox Image Add করলেই Container Long-Running হবে — এমন নয়। এর জন্য উপযুক্ত Process বা Command Configure করার প্রয়োজন হতে পারে।
14. VS Code Outline View
VS Code-এর আরেকটি Useful Feature হলো Outline View।
Outline View YAML File-এর Structure Hierarchical Format-এ দেখাতে পারে।
Example
আমাদের nginx.yaml File-এর Outline এমন হতে পারে:
apiVersion
kind
metadata
|
├── labels
| |
| └── env
|
└── name
spec
|
└── containers
|
└── [0]
|
├── name
|
└── image
এখানে:
metadataএকটি Dictionary।labelsএকটি Nested Dictionary।specএকটি Dictionary।containersএকটি List।[0]হলো List-এর First Item।nameএবংimageহলো Container-এর Properties।
Outline View কেন Helpful?
যখন YAML File বড় হবে, তখন Nested Structure Follow করা কঠিন হতে পারে।
Outline View ব্যবহার করে:
- Parent-Child Relationships বোঝা যায়।
- Nested Fields Identify করা যায়।
- Large YAML Files Navigate করা সহজ হয়।
- Configuration Structure Visualize করা যায়।
বিশেষ করে Kubernetes Deployments এবং অন্যান্য Complex Manifests-এর জন্য এটি Useful।
15. YAML File দিয়ে Kubernetes Pod Create করা
এখন আমাদের nginx.yaml File Ready।
Complete Configuration:
apiVersion: v1
kind: Pod
metadata:
name: nginx-2
labels:
env: production
spec:
containers:
- name: nginx
image: nginx
File Save করার পর Terminal Open করো।
প্রথমে Kubernetes Cluster Running আছে কি না Check করতে পারো:
kubectl get nodes
তারপর Pod Create করো:
kubectl create -f nginx.yaml
Expected Output:
pod/nginx-2 created
Alternative: kubectl apply
kubectl apply -f nginx.yaml
একটি নতুন Resource-এর জন্য দুটি Commands-ই Pod Create করতে পারে।
Command Difference
| Command | Purpose |
|---|---|
kubectl create -f nginx.yaml | YAML File থেকে নতুন Pod Create করে |
kubectl apply -f nginx.yaml | Configuration অনুযায়ী Resource Create অথবা Update করে |
এই Demo-তে YAML File ব্যবহার করে Pod Create করাই আমাদের Main Goal।
16. Pod Status Check করা
Pod Create করার পর:
kubectl get pods
Expected Example:
NAME READY STATUS RESTARTS AGE
nginx-2 1/1 Running 0 20s
এখানে:
nginx-2হলো Pod Name।1/1মানে একটি Container Ready রয়েছে।Runningমানে Pod Running Phase-এ রয়েছে।RESTARTS 0মানে Container Restart হয়নি।
প্রথমদিকে ContainerCreating দেখতে পাওয়া যেতে পারে।
Kubernetes Image Pull এবং Container Preparation Complete করার পর Status Running হতে পারে।
17. kubectl describe দিয়ে Pod Inspect করা
Pod সম্পর্কে Detailed Information দেখতে:
kubectl describe pod nginx-2
এই Command বিভিন্ন Information দেখাবে।
যেমন:
- Pod Name
- Labels
- Assigned Node
- Pod IP Address
- Container Name
- Container Image
- Container Status
- Pod Events
- Errors, যদি থাকে
Example
Name: nginx-2
Namespace: default
Labels: env=production
Node: minikube/192.168.49.2
Status: Running
Containers:
nginx:
Image: nginx
State: Running
Actual Output-এ আরও Fields এবং Information থাকতে পারে।
Pod Details Check করা কেন Important?
যদি Pod Successfully Start না হয়, তাহলে kubectl describe Command-এর Events Section থেকে Problem Identify করা সহজ হতে পারে।
18. Complete Hands-on Demo — VS Code থেকে Running Pod
এই Tutorial-এর Full Workflow একসঙ্গে:
Step 1: VS Code Install করো
Official Website:
https://code.visualstudio.com/
Step 2: YAML Extension Install করো
Extensions থেকে:
YAML — Red Hat
Install করো।
Step 3: Kubernetes Schema Configure করো
settings.json:
{
"yaml.schemas": {
"kubernetes": "*.yaml"
}
}
Step 4: nginx.yaml Create করো
apiVersion: v1
kind: Pod
metadata:
name: nginx-2
labels:
env: production
spec:
containers:
- name: nginx
image: nginx
Step 5: File Save করো
nginx.yaml
Step 6: Pod Create করো
kubectl create -f nginx.yaml
Step 7: Pod Status Check করো
kubectl get pods
Step 8: Pod Details Inspect করো
kubectl describe pod nginx-2
Complete Workflow
VS Code
|
▼
Red Hat YAML Extension
|
▼
Kubernetes Schema Validation
|
▼
Create nginx.yaml
|
▼
Auto-Completion & Error Detection
|
▼
Save YAML File
|
▼
kubectl create -f nginx.yaml
|
▼
Kubernetes API Server
|
▼
Pod Created
|
▼
NGINX Container Running
19. Important Commands & Configuration Summary
| Command / Configuration | Purpose |
|---|---|
redhat.vscode-yaml | Red Hat YAML Extension |
yaml.schemas | YAML Schema Mapping |
apiVersion: v1 | Kubernetes API Version |
kind: Pod | Pod Resource Type |
metadata | Pod Name এবং Labels |
spec | Pod Configuration |
containers | Container Definitions |
kubectl create -f nginx.yaml | Pod Create |
kubectl apply -f nginx.yaml | Resource Create বা Update |
kubectl get pods | Pod Status Check |
kubectl describe pod nginx-2 | Pod Details Inspect |
20. Final Takeaway — Kubernetes YAML Tips
এই Tutorial-এর Main Lesson হলো Kubernetes YAML Files লেখার জন্য একটি ভালো Editor ব্যবহার করা।
Basic Text Editors দিয়ে YAML লেখা সম্ভব।
কিন্তু VS Code-এর মতো Editor ব্যবহার করলে Kubernetes Configuration লেখা সহজ হয়।
বিশেষ করে Red Hat YAML Extension এবং Kubernetes Schema Support ব্যবহার করলে আমরা পাই:
- Syntax Highlighting
- Auto-Completion
- YAML Validation
- Indentation Error Detection
- Kubernetes Field Suggestions
- YAML Outline View
তবে একটি বিষয় মনে রাখা জরুরি।
VS Code YAML শেখার বিকল্প নয়।
Kubernetes YAML Files সঠিকভাবে লিখতে এখনও আমাদের বুঝতে হবে:
- Dictionaries
- Lists
- Indentation
- Kubernetes Root-Level Fields
- metadata
- spec
- containers
Final Mental Model
Learn YAML Basics
|
▼
Install VS Code
|
▼
Install Red Hat YAML Extension
|
▼
Enable Kubernetes Schema
|
▼
Write Kubernetes Manifest
|
▼
Use Auto-Completion
|
▼
Check Validation Errors
|
▼
Save YAML File
|
▼
kubectl create/apply
|
▼
Running Kubernetes Resource
Final One-Line Summary:
VS Code-এর সঙ্গে Red Hat YAML Extension এবং Kubernetes Schema Support Configure করলে Kubernetes YAML Manifests লেখা সহজ হয়। এতে Auto-Completion, Indentation Help, Schema Validation এবং Outline View পাওয়া যায়, যা Configuration Mistakes কমাতে সাহায্য করে।
Official Documentation
- Visual Studio Code
- Red Hat YAML Extension
- VS Code — YAML Editing
- Kubernetes — Understanding Kubernetes Objects
- Kubernetes — Pods
- kubectl create
- kubectl apply
মূল বিষয়: Kubernetes YAML-এর Syntax এবং Structure নিজে বুঝতে হবে। VS Code শুধু সেই Configuration আরও দ্রুত, পরিষ্কার এবং কম ভুলে লিখতে সাহায্য করে।
