abhilashthale.tech
  • Home
  • BlogCategories
    • coding
    • other
    • n
  • Images to Pdf
  • My Files
  • Shares Average
  • About Me
  • Server Stats
  • Day
  • Night
  • Birds
  • Waves
  • Net
  • Dots
  • Halo
  • Rings
  • Fog
  • Clouds

    Kubernetes Imperative Vs Declarative

    by abhilashthale - May 10, 2026

    Task Imperative Command Declarative YAML
    Create Namespace kubectl create namespace dev apiVersion: v1
    kind: Namespace
    metadata:
      name: dev
    Create Pod kubectl run nginx-pod --image=nginx:1.25 apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
    Create Deployment kubectl create deployment sampledeploy --image=nginx:1.25 --replicas=4 apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sampledeploy
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: sampledeploy
      template:
        metadata:
          labels:
            app: sampledeploy
        spec:
          containers:
          - name: nginx
            image: nginx:1.25
    Create ClusterIP Service kubectl expose deployment sampledeploy --port=80 --target-port=80 apiVersion: v1
    kind: Service
    metadata:
      name: sampledeploy-service
    spec:
      selector:
        app: sampledeploy
      ports:
      - port: 80
        targetPort: 80
    Create NodePort Service kubectl expose deployment sampledeploy --type=NodePort --port=80 --target-port=80 apiVersion: v1
    kind: Service
    metadata:
      name: sampledeploy-nodeport
    spec:
      type: NodePort
      selector:
        app: sampledeploy
      ports:
      - port: 80
        targetPort: 80
        nodePort: 30080
    Create ConfigMap kubectl create configmap app-config --from-literal=APP_MODE=production --from-literal=COLOR=blue apiVersion: v1
    kind: ConfigMap
    metadata:
      name: app-config
    data:
      APP_MODE: production
      COLOR: blue
    Create Secret kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=pass123 apiVersion: v1
    kind: Secret
    metadata:
      name: db-secret
    type: Opaque
    stringData:
      username: admin
      password: pass123
    Create ServiceAccount kubectl create serviceaccount frontend-sa apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: frontend-sa
    Create Role kubectl create role pod-reader --verb=get,list,watch --resource=pods apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: pod-reader
    rules:
    - apiGroups: [""]
      resources: ["pods"]
      verbs: ["get", "list", "watch"]
    Create RoleBinding kubectl create rolebinding pod-reader-binding --role=pod-reader --serviceaccount=default:frontend-sa apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: pod-reader-binding
    subjects:
    - kind: ServiceAccount
      name: frontend-sa
      namespace: default
    roleRef:
      kind: Role
      name: pod-reader
      apiGroup: rbac.authorization.k8s.io
    Create ClusterRole kubectl create clusterrole node-reader --verb=get,list,watch --resource=nodes apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: node-reader
    rules:
    - apiGroups: [""]
      resources: ["nodes"]
      verbs: ["get", "list", "watch"]
    Create ClusterRoleBinding kubectl create clusterrolebinding node-reader-binding --clusterrole=node-reader --serviceaccount=default:frontend-sa apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: node-reader-binding
    subjects:
    - kind: ServiceAccount
      name: frontend-sa
      namespace: default
    roleRef:
      kind: ClusterRole
      name: node-reader
      apiGroup: rbac.authorization.k8s.io
    Create PVC Usually declarative apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: app-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    Create StatefulSet Usually declarative apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: mongodb
    spec:
      serviceName: mongodb-headless
      replicas: 1
      selector:
        matchLabels:
          app: mongodb
      template:
        metadata:
          labels:
            app: mongodb
        spec:
          containers:
          - name: mongodb
            image: mongo:6
    Create Job kubectl create job test-job --image=busybox apiVersion: batch/v1
    kind: Job
    metadata:
      name: test-job
    spec:
      template:
        spec:
          containers:
          - name: busybox
            image: busybox
          restartPolicy: Never
    Create CronJob kubectl create cronjob backup-job --image=busybox --schedule="*/5 * * * *" apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: backup-job
    spec:
      schedule: "*/5 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: busybox
                image: busybox
              restartPolicy: Never

abhilashthale.tech