DEV Community

Alain Airom (Ayrom)
Alain Airom (Ayrom)

Posted on

Kubernetes Architectural Shift: Moving Workloads from Rancher Desktop (K3s) to Managed Cluster (part 1)

Enterprise Production vs. Local Prototyping: IBM Kubernetes Service (IKS) vs. Rancher Desktop!

Introduction and context

Following a recent technical discussion regarding the tradeoffs between managed cloud services — such as IBM Kubernetes Service (IKS) — and local development environments like Rancher Desktop, I put together a detailed comparison framework. Here is the breakdown, to shift from a local kubernetes development to an enterprise scale platfom.

I’ve been posting a ton about LLMs, RAG, and vector search lately, but don’t worry — I haven’t gone totally soft. Infrastructure and cluster environments are still my primary passion. Because at the end of the day, even the smartest AI is just a glorified math model sitting on a worker node that someone has to keep from running out of disk space.


The modern container lifecycle spans two distinct operational realms: local developer desktop prototyping and enterprise production execution.

  • Rancher Desktop **runs locally on developer workstations (macOS, Windows, Linux) by encapsulating a single-node **K3s or containerd runtime inside a desktop hypervisor (Lima VM / WSL2). It accelerates local iteration without cloud infrastructure costs.
Developer Laptop (macOS / Windows / Linux)
└── Rancher Desktop (Electron App)
    └── Virtual Machine (Lima VM / WSL2)
        └── Single-Node K3s Cluster
            ├── Control Plane (same node as worker)
            │   ├── Kubernetes API Server
            │   ├── etcd (or SQLite for K3s lite mode)
            │   ├── Scheduler
            │   └── Controller Manager
            │
            └── Worker (same node)
                ├── App Pods (nginx-demo)
                ├── containerd / dockerd
                ├── Local Storage (hostPath)
                └── Traefik Ingress (built-in)

Developer Tooling (Host OS)
├── Rancher Desktop GUI
├── kubectl / helm (bundled)
├── docker / nerdctl (bundled)
└── Port Forwarding (localhost)

⚠️ Constraints:
   - No external load balancer provisioner
   - No IAM / no enterprise RBAC
   - No managed TLS certificates
   - No cluster autoscaler
   - Constrained by laptop CPU/RAM
Enter fullscreen mode Exit fullscreen mode

  • IBM Kubernetes Service (IKS) is a fully managed enterprise cloud platform operating across multi-zone availability regions on IBM Cloud Virtual Private Cloud (VPC). The control plane is fully managed by IBM SREs with a 99.99% SLA, delivering zero-trust networking, hardware security, automated patching, and compliance capabilities.


IBM Cloud (VPC Region)
├── Managed Control Plane (IBM-managed, HA)
│   ├── Kubernetes API Server (HA, multi-zone)
│   ├── etcd (HA cluster, encrypted)
│   ├── Scheduler
│   ├── Controller Manager
│   └── Admission Controllers (Pod Security, OPA)
│
├── Worker Node Pool (User-managed, VPC VSIs)
│   ├── Worker Node 1 (Zone A) ──► App Pods
│   ├── Worker Node 2 (Zone B) ──► App Pods
│   └── Worker Node 3 (Zone C) ──► App Pods
│
├── IBM Cloud Services (Native Integrations)
│   ├── IBM Cloud IAM (authentication & authorization)
│   ├── IBM Container Registry (private, CVE-scanned)
│   ├── IBM Key Protect (KMS, secrets encryption)
│   ├── IBM Cloud Logs (centralized logging)
│   ├── IBM Cloud Monitoring / Sysdig (metrics)
│   ├── VPC Load Balancers (ALB / NLB)
│   └── VPC Block / File / Object Storage (CSI)
│
└── VPC Networking
    ├── VPC Security Groups
    ├── Network ACLs
    ├── Calico network policies
    └── Ingress (Traefik / NGINX ALB)
Enter fullscreen mode Exit fullscreen mode

Comparison using a sample Deployment: ‘nginx-demo’ (illustration purpose)


| Aspect                | IKS (`deployments/iks/`)                                     | Rancher Desktop (`deployments/rancher/`) |
| --------------------- | ------------------------------------------------------------ | ---------------------------------------- |
| **Replicas**          | 3 (spread across zones)                                      | 1 (single node)                          |
| **Pod Anti-Affinity** | ✅ topology.kubernetes.io/zone                                | ❌ Not applicable                         |
| **Image Pull**        | IBM Container Registry (private)                             | Docker Hub (public)                      |
| **Security Context**  | runAsNonRoot, readOnlyRootFilesystem, capabilities: drop ALL | Basic                                    |
| **Service Type**      | `LoadBalancer` → VPC ALB provisioned                         | `NodePort` → localhost:30080             |
| **Ingress TLS**       | Managed cert (IBM Secrets Manager)                           | Self-signed / manual                     |
| **Storage**           | VPC Block Storage (10 IOPS/GB, encrypted)                    | hostPath (local dir)                     |
| **HPA**               | 3–10 replicas, CPU+Memory metrics                            | N/A                                      |
Enter fullscreen mode Exit fullscreen mode

Namespace Configuration

  • Rancher Desktop (namespace.yaml): Local environments focus on environment separation for quick developer isolation.
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-demo
  labels:
    app.kubernetes.io/name: nginx-demo
    environment: development
    platform: rancher-desktop
Enter fullscreen mode Exit fullscreen mode
  • *IBM Kubernetes Service *(namespace.yaml): Production namespaces integrate with IBM Cloud IAM policies and enterprise environment governance.
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-demo
  labels:
    app.kubernetes.io/name: nginx-demo
    environment: production
    platform: iks
Enter fullscreen mode Exit fullscreen mode

Deployment Configuration

  • Rancher Desktop (deployment.yaml): Designed for single-replica execution with simple resource boundaries and local host path volumes.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-demo
  namespace: nginx-demo
  labels:
    app: nginx-demo
    version: "1.0"
    platform: rancher-desktop
spec:
  replicas: 1                          # ⚠️ Single replica — no High Availability
  selector:
    matchLabels:
      app: nginx-demo
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        app: nginx-demo
        version: "1.0"
    spec:
      # No imagePullSecrets needed — uses local image cache or Docker Hub
      containers:
        - name: nginx-demo
          image: nginx:1.25-alpine
          ports:
            - containerPort: 80
              protocol: TCP
          resources:
            requests:
              cpu: 50m
              memory: 64Mi
            limits:
              cpu: 200m
              memory: 128Mi
          livenessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 10
            periodSeconds: 20
          readinessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 5
            periodSeconds: 10
          volumeMounts:
            - name: nginx-html
              mountPath: /usr/share/nginx/html
      volumes:
        # ⚠️ hostPath volume — tightly coupled to local workstation storage
        - name: nginx-html
          hostPath:
            path: /tmp/nginx-html
            type: DirectoryOrCreate
Enter fullscreen mode Exit fullscreen mode
  • IBM Kubernetes Service (deployment.yaml): Designed for zero-downtime, multi-zone resiliency, non-root execution, dropped Linux capabilities, and private container registry integration.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-demo
  namespace: nginx-demo
  labels:
    app: nginx-demo
    version: "1.0"
    platform: iks
spec:
  replicas: 3                          # Replicas spread across worker nodes/zones
  selector:
    matchLabels:
      app: nginx-demo
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0                # Zero-downtime rolling updates
  template:
    metadata:
      labels:
        app: nginx-demo
        version: "1.0"
    spec:
      # Pull from IBM Cloud Container Registry (private, scanned for CVEs)
      imagePullSecrets:
        - name: icr-secret

      # Pod Anti-Affinity: Force pod distribution across availability zones
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 100
              podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: app
                      operator: In
                      values:
                        - nginx-demo
                topologyKey: topology.kubernetes.io/zone

      # Pod-level security context
      securityContext:
        runAsNonRoot: true
        runAsUser: 1001
        fsGroup: 2000

      containers:
        - name: nginx-demo
          image: icr.io/your-namespace/nginx-demo:1.0.0
          ports:
            - containerPort: 8080
              protocol: TCP

          # Container-level hardened security context
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities:
              drop:
                - ALL

          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 256Mi

          livenessProbe:
            httpGet:
              path: /
              port: 8080
            initialDelaySeconds: 15
            periodSeconds: 20
            failureThreshold: 3

          readinessProbe:
            httpGet:
              path: /
              port: 8080
            initialDelaySeconds: 5
            periodSeconds: 10
            successThreshold: 1

          volumeMounts:
            - name: nginx-cache
              mountPath: /var/cache/nginx
            - name: nginx-run
              mountPath: /var/run
      volumes:
        - name: nginx-cache
          emptyDir: {}
        - name: nginx-run
          emptyDir: {}
Enter fullscreen mode Exit fullscreen mode

Service & Exposure

  • Rancher Desktop (service.yaml): Exposes services using NodePort on host loopback interfaces.
apiVersion: v1
kind: Service
metadata:
  name: nginx-demo
  namespace: nginx-demo
  labels:
    app: nginx-demo
    platform: rancher-desktop
spec:
  type: NodePort               # ⚠️ No cloud LoadBalancer available locally
  selector:
    app: nginx-demo
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30080           # Exposed at http://localhost:30080
Enter fullscreen mode Exit fullscreen mode
  • IBM Kubernetes Service (service.yaml): Automatically triggers the provisioning of an IBM Cloud VPC Application Load Balancer (ALB).
apiVersion: v1
kind: Service
metadata:
  name: nginx-demo
  namespace: nginx-demo
  labels:
    app: nginx-demo
    platform: iks
  annotations:
    # Provisions an IBM Cloud VPC Application Load Balancer (ALB)
    service.beta.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol"
spec:
  type: LoadBalancer           # Triggers VPC Load Balancer creation
  selector:
    app: nginx-demo
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 8080
    - name: https
      protocol: TCP
      port: 443
      targetPort: 8080
Enter fullscreen mode Exit fullscreen mode

Ingress & TLS Termination

  • Rancher Desktop (ingress.yaml): Uses local embedded Traefik ingress controller without managed TLS certificates.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-demo-ingress
  namespace: nginx-demo
  labels:
    app: nginx-demo
    platform: rancher-desktop
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
    - host: nginx-demo.localhost         # Managed locally via /etc/hosts
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-demo
                port:
                  number: 80
Enter fullscreen mode Exit fullscreen mode
  • IBM Kubernetes Service (ingress.yaml): Integrates directly with managed public cluster subdomains and IBM Secrets Manager for TLS certificate lifecycle management.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-demo-ingress
  namespace: nginx-demo
  labels:
    app: nginx-demo
    platform: iks
  annotations:
    kubernetes.io/ingress.class: "public-iks-k8s-nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    ingress.bluemix.net/redirect-to-https: "True"
spec:
  tls:
    - hosts:
        - nginx-demo.<YOUR-CLUSTER-NAME>.<REGION>.containers.appdomain.cloud
      secretName: nginx-demo-tls  # Automated TLS cert via IBM Secrets Manager
  rules:
    - host: nginx-demo.<YOUR-CLUSTER-NAME>.<REGION>.containers.appdomain.cloud
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-demo
                port:
                  number: 80
Enter fullscreen mode Exit fullscreen mode

Persistent Storage

  • Rancher Desktop Storage: Local storage uses direct host path mounts or default local path provisioners without encryption.
  • IBM Kubernetes Service (pvc.yaml): Integrates with the IBM Cloud VPC Block Storage CSI driver, leveraging tier-based IOPS and encryption at rest with IBM Key Protect.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nginx-demo-storage
  namespace: nginx-demo
  labels:
    app: nginx-demo
    platform: iks
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ibmc-vpc-block-10iops-tier   # Dynamic VPC Block CSI (10 IOPS/GB)
  resources:
    requests:
      storage: 10Gi
Enter fullscreen mode Exit fullscreen mode

Autoscaling (HPA)

  • Rancher Desktop Autoscaling: While the Kubernetes HPA controller can run locally, scaling is bounded by the developer workstation’s CPU and RAM allocation.
  • IBM Kubernetes Service (hpa.yaml): Enables dynamic pod scaling alongside Cluster Autoscaler integration for expanding physical worker nodes in response to load spikes.
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-demo-hpa
  namespace: nginx-demo
  labels:
    app: nginx-demo
    platform: iks
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-demo
  minReplicas: 3
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 80
  behavior:
    scaleDown:
      stabilizationWindowSeconds: 300    # 5-minute cooldown before scale-down
      policies:
        - type: Pods
          value: 1
          periodSeconds: 60
    scaleUp:
      stabilizationWindowSeconds: 0
      policies:
        - type: Pods
          value: 2
          periodSeconds: 30
Enter fullscreen mode Exit fullscreen mode

Security Comparison

Authentication & Authorization

| Layer            | IKS                                | Rancher Desktop        |
| ---------------- | ---------------------------------- | ---------------------- |
| **User Auth**    | IBM Cloud IAM (SAML, SSO, MFA)     | kubeconfig certificate |
| **Service Auth** | Trusted Profiles, Service IDs      | ServiceAccount tokens  |
| **RBAC**         | Full Kubernetes RBAC + IAM mapping | Basic Kubernetes RBAC  |
| **Audit Logs**   | ✅ IBM Cloud Activity Tracker       | ❌ Limited              |

Enter fullscreen mode Exit fullscreen mode

Data Encryption

| Layer                        | IKS                                   | Rancher Desktop                         |
| ---------------------------- | ------------------------------------- | --------------------------------------- |
| **etcd**                     | ✅ Encrypted at rest (IBM Key Protect) | ⚠️ Local disk (OS-level encryption only) |
| **Secrets**                  | ✅ KMS-wrapped via IBM Key Protect     | ❌ Base64 only (plaintext in etcd)       |
| **Worker Node Disk**         | ✅ IBM-managed encrypted VSI disk      | ⚠️ Host OS encryption                    |
| **Worker-to-Worker Traffic** | ✅ WireGuard VPN encryption            | ❌ Unencrypted intra-VM                  |
| **Storage (PVC)**            | ✅ IBM VPC Block Storage encrypted     | ❌ Local hostPath, unencrypted           |
| **TLS (Ingress)**            | ✅ Managed, auto-renewed certificates  | ⚠️ Manual self-signed                    |

Enter fullscreen mode Exit fullscreen mode

Network Security

| Layer                          | IKS                               | Rancher Desktop   |
| ------------------------------ | --------------------------------- | ----------------- |
| **Network Policies**           | ✅ Calico (full L3/L4 policies)    | ✅ Flannel (basic) |
| **VPC Security Groups**        | ✅ Worker node level               | ❌ N/A             |
| **Network ACLs**               | ✅ VPC subnet level                | ❌ N/A             |
| **Private Endpoint**           | ✅ API server accessible privately | ❌ Only localhost  |
| **Context-Based Restrictions** | ✅ IBM Cloud CBR                   | ❌ N/A             |
Enter fullscreen mode Exit fullscreen mode

Compliance

IKS is certified and compliant with:

  • SOC 1 Type II, SOC 2 Type II
  • ISO 27001, ISO 27017, ISO 27018
  • PCI DSS (Payment Card Industry)
  • HIPAA (Healthcare)
  • FedRAMP (US Government)
  • C5 (Germany)
  • CIS Kubernetes Benchmark (score published per version)

Rancher Desktop has no compliance certifications — it is a local development tool.

Security Summary: Why Rancher Desktop Cannot Replace IKS

| Security Control                 | IKS                           | Rancher Desktop    | Risk Without It                                  |
| -------------------------------- | ----------------------------- | ------------------ | ------------------------------------------------ |
| Enterprise identity (IAM/MFA)    | ✅ IBM Cloud IAM               | ❌ kubeconfig only  | Credential theft gives full cluster access       |
| Secrets encrypted in etcd        | ✅ IBM Key Protect (KMS)       | ❌ Base64 plaintext | Secrets exposed if etcd volume is compromised    |
| Pod-to-pod traffic encryption    | ✅ WireGuard VPN               | ❌ Unencrypted      | Lateral movement / eavesdropping in-cluster      |
| Network segmentation             | ✅ VPC Security Groups + ACLs  | ❌ Flat VM network  | Any compromised pod can reach all other services |
| Image vulnerability scanning     | ✅ ICR + Vulnerability Advisor | ❌ None             | Undetected CVEs deployed to workloads            |
| Pod Security Admission enforced  | ✅ Yes (block privileged pods) | ⚠️ Not enforced     | Privileged container escape possible             |
| Audit trail (who did what, when) | ✅ IBM Cloud Activity Tracker  | ❌ None             | No forensics capability after incident           |
| Compliance evidence              | ✅ IBM-managed audit reports   | ❌ None             | Cannot satisfy regulator or auditor requirements |
Enter fullscreen mode Exit fullscreen mode

IKS on VPC — The Secure Deployment Model

IBM Cloud VPC (Virtual Private Cloud) is the recommended and most secure infrastructure type for IKS clusters. Deploying IKS on VPC transforms the cluster from an internet-connected compute cluster into a network-isolated, privately governed Kubernetes environment.

What VPC Adds to IKS Security?

Rancher Desktop operates inside a single VM on a developer laptop — there is no concept of network perimeter, subnet segregation, or infrastructure-level firewall. IKS on VPC introduces multiple independent security layers at the infrastructure level, before a single Kubernetes packet is processed:

Internet
    │
    ▼
IBM Cloud Internet Services (CIS)
    │  DDoS Protection, WAF, Rate Limiting, TLS Offload
    ▼
VPC Public Gateway / Floating IP
    │
    ▼
VPC Application Load Balancer (ALB)
    │  TLS Termination, Managed Certificate, L7 Routing
    ▼
VPC Subnet (Public)
    │  Network ACL — stateless L3/L4 filter
    ▼
VPC Security Group (Worker Node level)
    │  Stateful L4 filter — port-level allow/deny per VSI
    ▼
IKS Worker Node (VSI — encrypted disk)
    │
    ├── Calico Network Policies (pod-level L3/L4)
    ├── WireGuard (encrypted pod-to-pod traffic)
    └── Kubernetes API Server (private endpoint only)
Enter fullscreen mode Exit fullscreen mode

VPC Network Architecture for IKS

A production-grade IKS-on-VPC deployment uses a tiered subnet model:

| Subnet Tier               | Purpose                               | Internet Access             | Examples                            |
| ------------------------- | ------------------------------------- | --------------------------- | ----------------------------------- |
| **Public Subnet**         | Edge / Load Balancer tier             | Inbound via ALB only        | VPC ALB                             |
| **Private Subnet (App)**  | Worker nodes running application pods | Outbound via Public Gateway | App pods, nginx-demo                |
| **Private Subnet (Data)** | Databases, object storage endpoints   | Outbound only               | IBM Cloud Object Storage endpoint   |
| **Private Subnet (Mgmt)** | Kubernetes API server, bastion host   | Outbound only               | `kubectl` API endpoint, VPN Gateway |
Enter fullscreen mode Exit fullscreen mode

Worker nodes are placed exclusively on private subnets — they have no public IP addresses. All inbound traffic flows through the VPC ALB on the public subnet. The Kubernetes API server is reachable only via a private service endpoint or through a VPN/Direct Link connection.

VPC Security Groups — Worker Node Firewall

Every IKS worker node VSI is governed by a VPC Security Group that acts as a stateful firewall. IBM automatically provisions and manages the required rules; additional rules can be applied per workload

| Direction    | Protocol | Port        | Purpose                            |
| ------------ | -------- | ----------- | ---------------------------------- |
| Inbound      | TCP      | 30000–32767 | NodePort services (internal only)  |
| Inbound      | TCP      | 443         | Kubernetes API server              |
| Inbound      | TCP      | 10250       | Kubelet API (internal VPC only)    |
| Outbound     | TCP      | 443         | IBM Cloud services (ICR, KP, Logs) |
| Outbound     | All      | All         | Pod egress (controlled by Calico)  |
| **Deny All** | *        | *           | Default deny all other traffic     |
Enter fullscreen mode Exit fullscreen mode

Rancher Desktop has no equivalent — the Lima VM has a flat network with no firewall or security group concept.

VPC Network ACLs — Subnet-Level Firewall

In addition to Security Groups (instance-level), VPC Network ACLs provide stateless subnet-level filtering — the equivalent of a traditional network firewall rule set applied at the subnet boundary:

  • Block all traffic between subnets unless explicitly permitted
  • Enforce east-west isolation between application tiers (app ↔ data subnet restricted)
  • Provide an additional defence layer even if a Security Group is misconfigured

Private Kubernetes API Server Endpoint

On IKS VPC clusters, the Kubernetes API server can be made accessible only via private VPC endpoints. This means:

  • kubectl commands must originate from within the VPC, a VPN tunnel, or IBM Cloud Direct Link
  • The API server is not exposed to the public internet at any IP address
  • Eliminates an entire class of API server brute-force / credential-stuffing attacks
# Enable private-only endpoint on an IKS VPC cluster
ibmcloud ks cluster master private-service-endpoint enable --cluster <cluster-name>
ibmcloud ks cluster master refresh --cluster <cluster-name>

# Verify
ibmcloud ks cluster get --cluster <cluster-name> | grep 'Private Service Endpoint'
# → Private Service Endpoint URL: https://c1.private.us-south.containers.cloud.ibm.com:xxxx
Enter fullscreen mode Exit fullscreen mode

Rancher Desktop’s API server is accessible only on 127.0.0.1 (localhost) — this provides isolation by default, but that isolation is purely because it runs on a single laptop, not because of any security design.

IBM Cloud Context-Based Restrictions (CBR)

IKS VPC clusters support IBM Cloud Context-Based Restrictions (CBR), which enforce zero-trust access policies at the IBM Cloud control plane level — before a request ever reaches the Kubernetes API:

  • Restrict ibmcloud ks API calls to specific IP ranges (e.g., corporate network CIDRs)
  • Restrict access to the Kubernetes API server based on network zone membership
  • Combine with IAM policies for multi-factor access control: who (IAM) + from where (CBR)
Traditional security:   WHO can do WHAT  (IAM)
Zero-trust with CBR:    WHO + FROM WHERE can do WHAT  (IAM + CBR)
Enter fullscreen mode Exit fullscreen mode

Rancher Desktop has no equivalent — there is no control plane access restriction mechanism.

VPC Flow Logs for Security Auditing

VPC Flow Logs capture all accepted and rejected network traffic at the VPC subnet level and ship them to IBM Cloud Object Storage for forensic analysis:

# Enable VPC flow logs for the IKS worker subnet
ibmcloud is flow-log-create \
  --name iks-worker-flowlogs \
  --target <subnet-id> \
  --storage-bucket <cos-bucket-name>
Enter fullscreen mode Exit fullscreen mode

This provides a full network audit trail — which source IPs connected to which worker node ports, when, and whether the connection was allowed or blocked. This data is essential for security incident response and compliance evidence (PCI DSS, HIPAA).

Rancher Desktop produces no network flow data at all.

IBM Cloud Key Protect — Encryption Architecture on VPC

When IKS runs on VPC, IBM Key Protect (or Hyper Protect Crypto Services for FIPS 140–2 Level 4) manages the encryption key hierarchy:

IBM Key Protect (HSM-backed)
    │
    ├── Root Key (customer-controlled, never leaves HSM)
    │       │
    │       ▼
    │   Data Encryption Keys (DEK) — envelope encryption
    │       │
    │       ├── etcd volume encryption (Kubernetes secrets at rest)
    │       ├── VPC Block Storage encryption (PVC data at rest)
    │       └── IBM Container Registry image layer encryption
    │
    └── Key Rotation: automatic (90-day policy) or manual

Enter fullscreen mode Exit fullscreen mode

If a Key Protect root key is revoked, the associated etcd and storage volumes become immediately unreadable — a critical capability for regulated environments where data must be rendered permanently inaccessible on contract termination or incident response.

Rancher Desktop has no key management: Kubernetes secrets are stored as Base64-encoded plaintext in a local SQLite/etcd file on the developer’s laptop disk.

What IKS Gives You Automatically (vs Rancher)?

When deploying on IKS, the following happen automatically — none of these are available on Rancher Desktop without significant manual effort:

| Automatic IKS Feature                            | Equivalent Manual Effort on Rancher Desktop                  |
| ------------------------------------------------ | ------------------------------------------------------------ |
| VPC Load Balancer provisioned with external IP   | Manually configure NodePort + external LoadBalancer (unsupported locally) |
| TLS certificate from Secrets Manager             | Generate self-signed cert, manually create k8s Secret        |
| Pods spread across availability zones            | Not possible (single node)                                   |
| IBM Container Registry pull credentials injected | Manually handle Docker Hub rate limiting                     |
| VPC Block Storage dynamically provisioned        | Manually configure hostPath or local-path-provisioner        |
| IBM Cloud Logs captures pod logs                 | Set up EFK/PLG stack manually                                |
| IBM Cloud Monitoring scrapes metrics             | Install Prometheus + Grafana manually                        |
| HPA scales pods on CPU/Memory                    | Works but constrained by host laptop RAM/CPU                 |
| Node auto-repair (replace unhealthy nodes)       | Restart Rancher Desktop or VM                                |
| Worker node security updates applied             | Manually update Rancher Desktop version                      |

Enter fullscreen mode Exit fullscreen mode

IKS on VPC vs Rancher Desktop — Security Summary

| Security Dimension          | IKS on VPC                 | IKS on Classic | Rancher Desktop  |
| --------------------------- | -------------------------- | -------------- | ---------------- |
| Network perimeter (VPC)     | ✅ Full VPC isolation       | ⚠️ VLAN-based   | ❌ None           |
| Subnet segmentation         | ✅ Public/Private subnets   | ⚠️ Limited      | ❌ None           |
| Worker node firewall        | ✅ VPC Security Groups      | ⚠️ IKS-managed  | ❌ None           |
| Subnet firewall             | ✅ VPC Network ACLs         | ❌ N/A          | ❌ None           |
| Private API server          | ✅ Private service endpoint | ✅ Yes          | ⚠️ localhost only |
| VPC Flow Logs               | ✅ Full capture             | ❌ N/A          | ❌ None           |
| Context-Based Restrictions  | ✅ Full support             | ✅ Yes          | ❌ None           |
| KMS (Key Protect)           | ✅ Yes                      | ✅ Yes          | ❌ None           |
| FIPS 140-2 Level 4 (HPCS)   | ✅ Available                | ✅ Available    | ❌ None           |
| Worker-to-worker encryption | ✅ WireGuard                | ✅ WireGuard    | ❌ None           |
| Pod Security Admission      | ✅ Enforced                 | ✅ Enforced     | ⚠️ Not enforced   |
| Calico network policies     | ✅ Full L3/L4               | ✅ Full L3/L4   | ✅ Basic only     |
| Image vulnerability scan    | ✅ ICR + VA                 | ✅ ICR + VA     | ❌ None           |
| Compliance certifications   | ✅ SOC2/HIPAA/PCI/FedRAMP   | ✅ Yes          | ❌ None           |

Enter fullscreen mode Exit fullscreen mode

Management Advantages of IKS over Rancher Desktop

Managed Control Plane — Zero Operator Burden

The single largest management difference: IBM fully manages the Kubernetes control plane.

| Management Task                             | IKS                              | Rancher Desktop                     |
| ------------------------------------------- | -------------------------------- | ----------------------------------- |
| Kubernetes version upgrades (control plane) | ✅ IBM-managed, one-click upgrade | ❌ Manual: reinstall Rancher Desktop |
| etcd backup & restore                       | ✅ IBM-managed (automated)        | ❌ Manual or none                    |
| API server certificate rotation             | ✅ Automatic                      | ❌ Manual                            |
| Control plane OS patching                   | ✅ IBM-managed                    | ❌ Tied to desktop OS update         |
| Control plane HA failover                   | ✅ Automatic (3+ replicas)        | ❌ Not available                     |
| Control plane monitoring                    | ✅ IBM SRE team monitors 24/7     | ❌ None                              |
Enter fullscreen mode Exit fullscreen mode

In practice, a team running a self-managed Kubernetes control plane requires dedicated SRE engineers for etcd management alone. IKS eliminates this entirely.

Worker Node Lifecycle Management

| Management Task                       | IKS                                     | Rancher Desktop            |
| ------------------------------------- | --------------------------------------- | -------------------------- |
| Worker node OS security patches       | ✅ `ibmcloud ks worker update` (rolling) | ❌ Full reinstall           |
| Worker node replacement (failed node) | ✅ Automatic detection + replacement     | ❌ Restart app or reinstall |
| Worker node version upgrades          | ✅ Rolling upgrade across worker pools   | ❌ Full reinstall           |
| Worker node disk encryption           | ✅ IBM-managed (always on)               | ⚠️ Host OS dependent        |
| GPU driver management                 | ✅ IBM-managed NVIDIA drivers            | ❌ Manual                   |
| Custom machine types                  | ✅ Full VSI catalog (bx2, mx2, cx2, gx2) | ❌ Fixed laptop specs       |

Enter fullscreen mode Exit fullscreen mode

Add-Ons and Managed Integrations

IKS provides a curated set of managed add-ons that IBM versions, patches, and monitors. Each add-on would otherwise require the team to install, configure, and maintain it themselves:

| Add-On                        | IKS Managed                                             | Manual equivalent for Rancher |
| ----------------------------- | ------------------------------------------------------- | ----------------------------- |
| Cluster Autoscaler            | ✅ `ibmcloud ks cluster addon enable cluster-autoscaler` | Not possible                  |
| Managed Istio                 | ✅ `ibmcloud ks cluster addon enable istio`              | Manual Helm + complex config  |
| Knative (Serverless)          | ✅ One-click enable                                      | Manual Helm                   |
| IBM Cloud Monitoring (Sysdig) | ✅ Managed agent                                         | Manual Prometheus + Grafana   |
| IBM Cloud Logs (Fluent Bit)   | ✅ Managed agent                                         | Manual EFK/PLG stack          |
| VPC Block Storage CSI         | ✅ Pre-installed                                         | Not available                 |
| Image Key Enforcer            | ✅ Policy: only signed images allowed                    | Manual OPA/Kyverno            |
| ALB Ingress Controller        | ✅ IBM-managed NGINX ALB                                 | Manual Helm + manual cert     |
| Tekton Pipelines              | ✅ Managed add-on                                        | Manual Helm install           |

Enter fullscreen mode Exit fullscreen mode

Integrated Observability (No Setup Required)

One of the most significant hidden costs of Rancher Desktop for production use is the absence of any managed observability stack. Everything must be manually installed, configured, and maintained.

| Observability Capability | IKS                                | Rancher Desktop      | Setup Cost (Rancher)       |
| ------------------------ | ---------------------------------- | -------------------- | -------------------------- |
| Pod & container logs     | ✅ IBM Cloud Logs (auto-forwarded)  | `kubectl logs` only  | ~2–4 days (EFK stack)      |
| Node & cluster metrics   | ✅ IBM Cloud Monitoring             | None                 | ~1–2 days (Prometheus)     |
| Pre-built dashboards     | ✅ Sysdig IKS dashboards            | None                 | ~1 day (Grafana)           |
| Alerting                 | ✅ Managed alerts (PagerDuty/email) | None                 | ~1 day                     |
| Distributed tracing      | ✅ IBM Cloud Tracing                | None                 | ~2 days (Jaeger)           |
| Kubernetes events        | ✅ Activity Tracker + Cloud Logs    | `kubectl get events` | ~1 day                     |
| **Total setup**          | **0 days**                         | —                    | **~7–12 engineering days** |
Enter fullscreen mode Exit fullscreen mode

For a small team, the observability setup alone can represent weeks of engineering effort that IKS eliminates.

RBAC and Multi-Team Access Management

| Scenario                       | IKS                                                   | Rancher Desktop                            |
| ------------------------------ | ----------------------------------------------------- | ------------------------------------------ |
| New developer onboards         | Add to IBM Cloud IAM group → automatic cluster access | Generate new kubeconfig manually           |
| Developer leaves team          | Remove from IAM group → access revoked cluster-wide   | Manually rotate cluster certificates       |
| Team-level namespace isolation | IAM role → Kubernetes RBAC binding (automated)        | Manually create RoleBindings per namespace |
| Service account for CI/CD      | IBM Cloud Service ID + API key + IAM policy           | Manually create SA + kubeconfig            |
| MFA enforcement                | ✅ IBM Cloud IAM MFA                                   | ❌ Not possible                             |
| SSO (SAML, OIDC)               | ✅ IBM Verify, Active Directory                        | ❌ Not possible                             |

Enter fullscreen mode Exit fullscreen mode

IKS ties Kubernetes RBAC directly to IBM Cloud IAM. When a user’s IAM access is revoked (e.g., employee offboarding), their Kubernetes access is revoked simultaneously — no manual certificate rotation required.

IBM Cloud Console — Single Pane of Glass

IKS integrates with the IBM Cloud console to provide a single management interface across all cluster resources:

  • Visual cluster health dashboard (nodes, pods, events)
  • Worker pool management (add/remove nodes, resize)
  • Add-on management (enable/disable/upgrade)
  • Logging and monitoring links (direct to Sysdig/IBM Cloud Logs)
  • Cost breakdown per cluster, per worker pool
  • VPC topology visualization

Rancher Desktop’s built-in UI is limited to the K3s dashboard — no cloud integration, no cost data, no infrastructure view.

Automated Cluster Versioning and Upgrade Path

IBM publishes a clear Kubernetes version support lifecycle for IKS:

IKS Kubernetes Version Lifecycle:
  Supported: 1.33, 1.34, 1.35, 1.36
  Each version supported for ~14 months after release

Upgrade process (control plane + workers):
  ibmcloud ks cluster master update --cluster <name> --version 1.35
  ibmcloud ks worker update --cluster <name> --worker <id>

  → Rolling update: zero-downtime if pods have PodDisruptionBudgets
  → IBM runs preflight checks before upgrade begins
  → Rollback window: 24h if issues detected

Enter fullscreen mode Exit fullscreen mode

Rancher Desktop upgrades are done by the developer installing a new version of the desktop application — there is no rolling upgrade, no preflight check, and no rollback.


Networking Comparison

Load Balancing

| Capability                         | IKS                                 | Rancher Desktop          |
| ---------------------------------- | ----------------------------------- | ------------------------ |
| **Cloud Load Balancer (L4)**       | ✅ VPC NLB (Network LB)              | ❌ Not available          |
| **Application Load Balancer (L7)** | ✅ VPC ALB with SSL termination      | ❌ Not available          |
| **Ingress Controller**             | ✅ Traefik or NGINX (managed)        | ✅ Traefik (K3s built-in) |
| **External DNS**                   | ✅ IBM Cloud DNS Services            | ⚠️ /etc/hosts only        |
| **Global Load Balancer**           | ✅ IBM Cloud Internet Services (CIS) | ❌ N/A                    |
Enter fullscreen mode Exit fullscreen mode

DNS

  • IKS: IBM automatically provisions an Ingress subdomain (<cluster>.<region>.containers.appdomain.cloud) with wildcard DNS. Custom domains supported via IBM Cloud DNS.
  • Rancher Desktop: DNS resolves only within the VM and on localhost. Must manually edit /etc/hosts for custom hostnames.

Storage

| Storage Type             | IKS                                                       | Rancher Desktop                         |
| ------------------------ | --------------------------------------------------------- | --------------------------------------- |
| **Block Storage (RWO)**  | ✅ IBM VPC Block Storage (CSI), encrypted, snapshotable    | ⚠️ local-path-provisioner, no encryption |
| **File Storage (RWX)**   | ✅ IBM VPC File Storage (NFS)                              | ❌ Not available                         |
| **Object Storage**       | ✅ IBM Cloud Object Storage (S3-compatible)                | ❌ Not available                         |
| **StorageClass**         | `ibmc-vpc-block-10iops-tier`, `ibmc-vpc-block-5iops-tier` | `local-path` (default)                  |
| **Dynamic Provisioning** | ✅ Yes (CSI driver)                                        | ✅ Yes (local-path only)                 |
| **Volume Snapshots**     | ✅ Yes                                                     | ❌ No                                    |
| **Encryption at Rest**   | ✅ Yes (IBM Key Protect)                                   | ❌ No                                    |
| **Multi-Zone Storage**   | ✅ Regional snapshots                                      | ❌ N/A                                   |
| **Portworx**             | ✅ Enterprise storage add-on                               | ❌ N/A                                   |

Enter fullscreen mode Exit fullscreen mode

Observability & Monitoring

Logging

| Capability             | IKS                                   | Rancher Desktop     |
| ---------------------- | ------------------------------------- | ------------------- |
| **Pod Logs**           | ✅ kubectl + IBM Cloud Logs forwarding | ✅ kubectl logs only |
| **Cluster Audit Logs** | ✅ IBM Cloud Activity Tracker          | ❌ Limited           |
| **Node Logs**          | ✅ Forwarded to IBM Cloud Logs         | ❌ Manual journalctl |
| **Log Retention**      | ✅ Configurable (days/months)          | N/A                 |
| **Log Search**         | ✅ IBM Cloud Logs (Lucene queries)     | ❌ No                |

Enter fullscreen mode Exit fullscreen mode

Metrics

| Capability            | IKS                             | Rancher Desktop       |
| --------------------- | ------------------------------- | --------------------- |
| **Container Metrics** | ✅ IBM Cloud Monitoring (Sysdig) | ❌ Manual (Prometheus) |
| **Node Metrics**      | ✅ Yes                           | ❌ Manual              |
| **Custom Metrics**    | ✅ Yes (Sysdig PromQL)           | ❌ Manual              |
| **Alerting**          | ✅ IBM Cloud Monitoring alerts   | ❌ Manual              |
| **Dashboard**         | ✅ Pre-built Sysdig dashboards   | ❌ Manual Grafana      |
Enter fullscreen mode Exit fullscreen mode

Tracing

| Capability              | IKS                                  | Rancher Desktop  |
| ----------------------- | ------------------------------------ | ---------------- |
| **Distributed Tracing** | ✅ IBM Cloud Tracing (Instana/Jaeger) | ❌ Manual install |
| **Istio Integration**   | ✅ Managed Istio add-on + Kiali       | ❌ Manual         |

Enter fullscreen mode Exit fullscreen mode

Autoscaling

Horizontal Pod Autoscaler (HPA)

Both platforms support HPA, but with key differences:

| Aspect              | IKS                            | Rancher Desktop          |
| ------------------- | ------------------------------ | ------------------------ |
| **Available**       | ✅ Yes                          | ✅ Yes (but limited)      |
| **Metrics Sources** | CPU, Memory, custom (Sysdig)   | CPU, Memory only         |
| **Scale Range**     | 1 to hundreds (cloud capacity) | 1 to few (laptop memory) |
| **Scaling Speed**   | Fast (cloud VSI provisioning)  | Fast (same node)         |

Enter fullscreen mode Exit fullscreen mode

Vertical Pod Autoscaler (VPA)

  • IKS: Supported, recommends right-sized resource requests.
  • Rancher Desktop: Available but must be manually installed; constrained by host resources.

Cluster Autoscaler (Worker Node Scaling)

This is a critical IKS advantage — IKS can automatically provision and deprovision VPC Virtual Server Instances (worker nodes) based on pending pod requests.

| Aspect           | IKS                                     | Rancher Desktop |
| ---------------- | --------------------------------------- | --------------- |
| **Available**    | ✅ Yes (managed add-on)                  | ❌ Not possible  |
| **Scale-Out**    | New worker nodes provisioned in minutes | N/A             |
| **Scale-In**     | Drain + terminate idle nodes            | N/A             |
| **Cost Savings** | Automatically scales down at night      | N/A             |
Enter fullscreen mode Exit fullscreen mode

High Availability (HA) & Disaster Recovery (DR)

| Aspect                    | IKS                              | Rancher Desktop    |
| ------------------------- | -------------------------------- | ------------------ |
| **Control Plane HA**      | ✅ 3+ replicas, auto-failover     | ❌ Single node      |
| **Worker Node HA**        | ✅ Multi-zone worker pools        | ❌ N/A              |
| **Auto Node Repair**      | ✅ Unhealthy nodes auto-replaced  | ❌ Must restart app |
| **Multi-Zone Deployment** | ✅ Pods spread across 3 AZs       | ❌ Single zone      |
| **Backup**                | ✅ Portworx Backup, VPC Snapshots | ❌ Manual           |
| **Disaster Recovery**     | ✅ Cross-region replication       | ❌ N/A              |
| **RTO / RPO**             | Minutes (defined SLA)            | N/A                |
| **Uptime SLA**            | 99.99% (master)                  | None               |
Enter fullscreen mode Exit fullscreen mode

CI/CD Integration

| Tool                    | IKS                                    | Rancher Desktop     |
| ----------------------- | -------------------------------------- | ------------------- |
| **Tekton**              | ✅ Managed add-on (Tekton on IBM Cloud) | ⚠️ Manual install    |
| **IBM Cloud DevSecOps** | ✅ Native integration                   | ❌ N/A               |
| **GitHub Actions**      | ✅ ibmcloud CLI actions                 | ✅ kubectl deploy    |
| **GitLab CI**           | ✅ Native                               | ✅ Manual kubeconfig |
| **ArgoCD / FluxCD**     | ✅ GitOps ready                         | ✅ Works locally     |
| **Helm**                | ✅ Full support                         | ✅ Full support      |
| **Kustomize**           | ✅ Full support                         | ✅ Full support      |
| **IBM ICR Scanning**    | ✅ Auto-scan on push                    | ❌ N/A               |


Enter fullscreen mode Exit fullscreen mode

Conclusion

Pros and Cons feature by feature

| Feature                           | IKS                                   | Rancher Desktop                   | Winner  |
| --------------------------------- | ------------------------------------- | --------------------------------- | ------- |
| **Kubernetes Version**            | 1.33–1.36 (IBM managed)               | K3s (latest stable)               | Tie     |
| **CNCF Certified**                | ✅ Yes                                 | ✅ Yes (K3s)                       | Tie     |
| **Control Plane Management**      | ✅ Fully managed by IBM                | ⚠️ Self-managed                    | IKS     |
| **Multi-Node Cluster**            | ✅ Yes (up to hundreds of nodes)       | ❌ No (single node only)           | IKS     |
| **Multi-Zone HA**                 | ✅ Yes (3+ availability zones)         | ❌ No                              | IKS     |
| **SLA**                           | ✅ 99.99%                              | ❌ None                            | IKS     |
| **Auto-Patch Control Plane**      | ✅ Yes                                 | ❌ Manual                          | IKS     |
| **Worker Node Auto-Update**       | ✅ Yes (configurable)                  | ❌ Manual                          | IKS     |
| **Cluster Autoscaler**            | ✅ Yes (worker pools)                  | ❌ No                              | IKS     |
| **HPA**                           | ✅ Yes                                 | ✅ Yes (resource-limited)          | IKS     |
| **VPA**                           | ✅ Yes                                 | ⚠️ Manual install                  | IKS     |
| **Private Container Registry**    | ✅ IBM Container Registry              | ⚠️ Local cache / DockerHub         | IKS     |
| **Image Vulnerability Scanning**  | ✅ Yes (ICR + VA)                      | ❌ No                              | IKS     |
| **IAM Integration**               | ✅ IBM Cloud IAM + RBAC                | ❌ No                              | IKS     |
| **Enterprise RBAC**               | ✅ Full RBAC + Trusted Profiles        | ⚠️ Basic kubeconfig                | IKS     |
| **Pod Security Admission**        | ✅ Enforced                            | ⚠️ Available, not enforced         | IKS     |
| **Network Policies**              | ✅ Calico (full)                       | ✅ Flannel (basic)                 | IKS     |
| **VPC Security Groups**           | ✅ Yes                                 | ❌ N/A                             | IKS     |
| **Network ACLs**                  | ✅ VPC subnet level                    | ❌ N/A                             | IKS     |
| **VPC Private Subnets**           | ✅ Workers on private subnets          | ❌ N/A                             | IKS     |
| **Private API Endpoint**          | ✅ VPC private endpoint                | ❌ Only localhost                  | IKS     |
| **Context-Based Restrictions**    | ✅ IBM Cloud CBR                       | ❌ N/A                             | IKS     |
| **VPC Flow Logs**                 | ✅ Full network audit trail            | ❌ None                            | IKS     |
| **Managed TLS Certificates**      | ✅ IBM Secrets Manager + Let's Encrypt | ❌ Manual / Self-signed            | IKS     |
| **Cloud Load Balancer (ALB/NLB)** | ✅ VPC ALB / NLB                       | ❌ No (NodePort only)              | IKS     |
| **Ingress Controller**            | ✅ Traefik or NGINX (managed)          | ✅ Traefik (built-in K3s)          | IKS     |
| **Managed Block Storage (CSI)**   | ✅ IBM VPC Block Storage               | ⚠️ hostPath / local-path           | IKS     |
| **Managed File Storage (CSI)**    | ✅ IBM VPC File Storage (NFS)          | ❌ No                              | IKS     |
| **Object Storage**                | ✅ IBM Cloud Object Storage (S3)       | ❌ No                              | IKS     |
| **Centralized Logging**           | ✅ IBM Cloud Logs (managed)            | ❌ kubectl logs only               | IKS     |
| **Metrics / Monitoring**          | ✅ IBM Cloud Monitoring / Sysdig       | ❌ Manual Prometheus/Grafana       | IKS     |
| **Distributed Tracing**           | ✅ IBM Cloud Tracing                   | ❌ Manual                          | IKS     |
| **Secrets Encryption**            | ✅ IBM Key Protect (KMS)               | ❌ Base64 only (plaintext in etcd) | IKS     |
| **Disk Encryption (Worker)**      | ✅ IBM-managed encrypted VSI disk      | ⚠️ Host OS dependent               | IKS     |
| **WireGuard Worker-to-Worker**    | ✅ Yes (encrypted pod traffic)         | ❌ No                              | IKS     |
| **Managed Istio**                 | ✅ Yes (add-on)                        | ❌ Manual install                  | IKS     |
| **GPU Support**                   | ✅ NVIDIA A100, L40S, H100             | ⚠️ Limited by laptop               | IKS     |
| **Compliance (SOC2, ISO, HIPAA)** | ✅ Yes                                 | ❌ No                              | IKS     |
| **Cost**                          | 💰 Pay-per-use                         | ✅ Free                            | Rancher |
| **Setup Time**                    | ⏱️ ~20 min                             | ✅ ~5 min                          | Rancher |
| **Offline / Air-gap**             | ❌ Requires IBM Cloud                  | ✅ Works offline                   | Rancher |
| **IDE Integration**               | ✅ VS Code, IntelliJ                   | ✅ VS Code, IntelliJ               | Tie     |

---

Enter fullscreen mode Exit fullscreen mode

Transition Strategy

Moving from Rancher Desktop to IBM Kubernetes Service represents a shift from local rapid feedback loops to enterprise cloud governance. Developers can iterate rapidly on desktop environments using simplified manifests. However, promoting applications to staging and production requires adopting enterprise security patterns: strict pod security standards, multi-zone anti-affinity, KMS-backed persistent storage, and IBM VPC isolation.

Thanks for reading ✔️

Links and Reference

Top comments (0)