---
title: "Quickstart for Calico on minikube"
description: "Install Calico Open Source on a single- or multi-node minikube cluster for testing or development in roughly 1 minute."
product: "Calico Open Source"
version: "3.32 (latest)"
section: "Installing and upgrading"
canonical_url: "https://docs.tigera.io/calico/latest/getting-started/kubernetes/minikube"
---

# Quickstart for Calico on minikube

## Big picture

This quickstart gets you a single-node minikube cluster with Calico in approximately 1 minute. You can use this cluster for testing and development.

## Value

Use this quickstart to quickly and easily try Calico features.

## Before you begin

- Install, but do not start, minikube. [How to install minikube](https://minikube.sigs.k8s.io/docs/start/#what-youll-need)
- Install kubectl.[How to install kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
- Install a minikube driver. For example Docker. A full List of available drivers can be [found here.](https://minikube.sigs.k8s.io/docs/drivers/)

## How to

### Create a single-node minikube cluster

<!-- tabs -->

**Tab: Built-in Calico**

Minikube offers a built-in Calico implementation, this is a quick way to checkout Calico features.

> **SECONDARY:** Enabling preinstalled Calico might be the quickest way for testing. However, if you like to checkout a more recent version or features of Calico you should consider using Manifest or Operator approach.

```bash
minikube start --cni=calico
```

**Tab: Operator**

1. Start your minikube cluster with one control plane node using the following command.

   > **SECONDARY:** If `192.168.0.0/16` is already in use within your network you must select a different pod network CIDR, by replacing `192.168.0.0/16` in the following command.

   ```bash
   minikube start --cni=false --network-plugin=cni --extra-config=kubeadm.pod-network-cidr=192.168.0.0/16 --subnet=172.16.0.0/24
   ```

2. Install the Tigera Operator and custom resource definitions.

   ```bash
   kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.32.1/manifests/v1_crd_projectcalico_org.yaml
   kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.32.1/manifests/tigera-operator.yaml
   ```

   > **SECONDARY:** Due to the large size of the CRD bundle, `kubectl apply` might exceed request limits. Instead, use `kubectl create` or `kubectl replace`.

3. Install Calico by creating the necessary custom resource. For more information on configuration options available in this manifest, see [the installation reference](https://docs.tigera.io/calico/latest/reference/installation/api.md).

   > **SECONDARY:** Before creating this manifest, read its contents and make sure its settings are correct for your environment. For example, if you have replaced `pod-network-cidr` you must change it in this file as well.

   ```bash
   kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.32.1/manifests/custom-resources.yaml
   ```

**Tab: Manifest**

Start your minikube cluster with one control plane node using the following command:

```bash
minikube start --network-plugin=cni
```

Install Calico.

```bash
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.32.1/manifests/calico.yaml
```

<!-- /tabs -->

### Verify Calico installation

Verify Calico installation in your cluster using the following command:

```bash
watch kubectl get pods -l k8s-app=calico-node -A
```

You should see a result similar to the below. Note that the namespace might be different, depending on the method you followed.

```text
NAMESPACE     NAME                READY   STATUS    RESTARTS   AGE
kube-system   calico-node-mlqvs   1/1     Running   0          5m18s
```

Use `ctrl+c` to break out of watch.

Congratulations you now have a minikube cluster equipped with Calico

### Add an additional worker node

> **SECONDARY:** This as an optional step, you can safely skip this step if you do not require an additional worker node.

```bash
minikube node add
```

Verify nodes using the following command:

```bash
kubectl get nodes
```

### Clean up

Delete the cluster using the following command:

```bash
minikube delete
```

## Next steps

**Required**

- [Install and configure calicoctl](https://docs.tigera.io/calico/latest/operations/calicoctl/install.md)

**Recommended tutorials**

- [Secure a simple application using the Kubernetes NetworkPolicy API](https://docs.tigera.io/calico/latest/network-policy/get-started/kubernetes-policy/kubernetes-policy-basic.md)
- [Control ingress and egress traffic using the Kubernetes NetworkPolicy API](https://docs.tigera.io/calico/latest/network-policy/get-started/kubernetes-policy/kubernetes-policy-advanced.md)
- [Run a tutorial that shows blocked and allowed connections in real time](https://docs.tigera.io/calico/latest/network-policy/get-started/kubernetes-policy/kubernetes-demo.md)
