Pods, ReplicaSets & Deployments · Part 1515

Demo — Kubernetes YAML TipsVS Code দিয়ে Kubernetes YAML সহজে লেখা

VS Code, Red Hat YAML Extension ও Kubernetes Schema Validation: Auto-Completion, Indentation Errors আগেই ধরা, Outline View, তারপর nginx.yaml থেকে Pod Create। আর Editor কী ধরতে পারে না, সেটাও।

VS Code editing nginx.yaml with the Red Hat YAML extension: a Kubernetes auto-completion list for kind, a red squiggle on a badly indented image line, and the yaml.schemas setting
FIG. 15 Red Hat YAML Extension + Kubernetes Schema: Suggestions, Indentation Errors আর Outline — Cluster-এ Apply করার আগেই।

আগের 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-CompletionCode এবং Configuration Suggestions দেয়
Error DetectionSyntax অথবা Configuration Mistakes Detect করতে সাহায্য করে
File NavigationProject Files Navigate করা সহজ করে
Extensions / PluginsAdditional Features Add করা যায়
Better Editing Experienceবড় Files Read এবং Edit করা সহজ হয়

Kubernetes YAML Files লেখার সময় এগুলো খুব Useful।

এই 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-কে বলা হচ্ছে:

.yaml Extension-এর 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=production Label Attach করো এবং Pod-এর মধ্যে nginx Image ব্যবহার করে একটি Container Run করো।

YAML Breakdown

FieldMeaning
apiVersion: v1Kubernetes API Version
kind: PodPod Object Create করতে হবে
metadata.namePod Name হবে nginx-2
labels.envEnvironment Label হবে production
spec.containersContainers-এর List
name: nginxContainer Name
image: nginxContainer 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

CommandPurpose
kubectl create -f nginx.yamlYAML File থেকে নতুন Pod Create করে
kubectl apply -f nginx.yamlConfiguration অনুযায়ী 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 / ConfigurationPurpose
redhat.vscode-yamlRed Hat YAML Extension
yaml.schemasYAML Schema Mapping
apiVersion: v1Kubernetes API Version
kind: PodPod Resource Type
metadataPod Name এবং Labels
specPod Configuration
containersContainer Definitions
kubectl create -f nginx.yamlPod Create
kubectl apply -f nginx.yamlResource Create বা Update
kubectl get podsPod Status Check
kubectl describe pod nginx-2Pod 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

মূল বিষয়: Kubernetes YAML-এর Syntax এবং Structure নিজে বুঝতে হবে। VS Code শুধু সেই Configuration আরও দ্রুত, পরিষ্কার এবং কম ভুলে লিখতে সাহায্য করে।

Was this guide helpful?

Search the archive

Press Esc to close