Application Deployment

This section walks through deploying a sample Windows application on a cluster with Windows worker nodes using the Nirmata Catalog.

Sample Application Manifest

The manifest below deploys a simple IIS web server on Windows. The key field is the nodeSelector using beta.kubernetes.io/os: windows, which ensures Kubernetes schedules the pod exclusively on Windows nodes. The toleration for the os=windows taint is also required if the Windows node has that taint applied.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: windows-web-app
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: windows-web-app
  template:
    metadata:
      labels:
        app: windows-web-app
    spec:
      nodeSelector:
        beta.kubernetes.io/os: windows
      tolerations:
      - key: os
        value: windows
        effect: NoSchedule
      containers:
      - name: iis
        image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 250m
            memory: 256Mi
          limits:
            cpu: 500m
            memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
  name: windows-web-app
  namespace: default
spec:
  selector:
    app: windows-web-app
  ports:
  - port: 80
    targetPort: 80
  type: ClusterIP

Note: beta.kubernetes.io/os: windows is the node selector label that targets Windows nodes. Without this, Kubernetes may schedule the pod on a Linux node where a Windows container image cannot run.

Step 1: Create a Catalog

  1. Navigate to Workloads → Catalogs in the left toolbar.
  2. Click New Catalog.
  3. Enter a name (e.g., WindowsApps) and click Add Catalog.

image

Step 2: Add an Application

  1. Open the newly created catalog.
  2. Click the + Add Application button in the top-right corner.

image

  1. In the dialog, enter an application name and select the type. In this example we use catalog (direct YAML import). You can also use Git or Helm depending on your workflow.
  2. Upload the windows-app.yaml manifest by dragging it into the import area or clicking to browse.
  3. Click Save.

Step 3: Run the Application

  1. Once the application is created, click Run Application in the top-right corner.
  2. Select the target environment and cluster, then confirm.

image

Nirmata will schedule the deployment. Because beta.kubernetes.io/os: windows is set in the manifest, the pod will be placed only on the Windows worker node in the cluster.

Step 4: Verify the Deployment

Once the deployment completes, the application will appear as Running in the Running Applications view, showing the cluster, environment, version, pod count, and state.

image