Quickstart
The manual method for installing Calico Enterprise for Windows is deprecated in favor of using the Operator and Windows HostProcess containers (HPC). Support for this method will be dropped in a future Calico Enterprise version.
Big picture
Install Calico Enterprise for Windows manually on your Kubernetes cluster in approximately 5 minutes.
Concepts
Calico Enterprise for Windows is a hybrid implementation that requires a Linux control node for Calico Enterprise components and Windows nodes for Windows pods.
Before you begin
Review the Linux requirements and the Calico Enterprise for Windows requirements.
Before beginning the quickstart, setup a Calico Enterprise cluster on Linux nodes and provision Windows machines.
How to
- Configure strict affinity for clusters using Calico Enterprise networking
- Install Calico Enterprise for Windows manually
- Configure installation parameters
Configure strict affinity for clusters using Calico Enterprise networking
For Linux control nodes using Calico Enterprise networking, strict affinity must be set to true
.
This is required to prevent Linux nodes from borrowing IP addresses from Windows nodes:
kubectl patch ipamconfigurations default --type merge --patch='{"spec": {"strictAffinity": true}}'
Install Calico Enterprise for Windows manually
The following steps install a Kubernetes cluster on a single Windows node with a minimum of 4 Linux worker nodes.
-
Kubernetes VXLAN
The geeky details of what you get by default:
Policy IPAM CNI Overlay Routing Datastore -
Kubernetes BGP
The geeky details of what you get by default:
Policy IPAM CNI Overlay Routing Datastore -
EKS
The geeky details of what you get by default:
Policy IPAM CNI Overlay Routing Datastore -
AKS
The geeky details of what you get by default:
Policy IPAM CNI Overlay Routing Datastore
- Kubernetes VXLAN
- Kubernetes BGP
- EKS
-
Setup a Calico Enterprise Kubernetes cluster with Windows nodes.
-
Ensure that BGP is disabled since you're using VXLAN. If you installed Calico Enterprise using operator, you can do this by:
kubectl patch installation default --type=merge -p '{"spec": {"calicoNetwork": {"bgp": "Disabled"}}}'
If you installed Calico using the manifest then BGP is already disabled.
-
Prepare the directory for Kubernetes files on Windows node.
mkdir c:\k
-
Copy the Kubernetes kubeconfig file from the control plane node (default, Location $HOME/.kube/config), to c:\k\config.
-
Copy the Calico Enterprise for Windows installation zip file to c:\tigera-calico-windows.zip.
-
Download the PowerShell script, install-calico-windows.ps1.
Invoke-WebRequest https://docs.tigera.io/calico-enterprise/3.19/scripts/install-calico-windows.ps1 -OutFile c:\install-calico-windows.ps1
-
Install Calico Enterprise for Windows for your datastore with using the default parameters or customize installation parameters. The PowerShell script downloads Calico Enterprise for Windows release binary, Kubernetes binaries, Windows utilities files, configures Calico Enterprise for Windows, and starts the Calico service.
Kubernetes datastore (default)
c:\install-calico-windows.ps1 -KubeVersion <your Kubernetes version (e.g. 1.18.6)> `
-ServiceCidr <your service cidr (default 10.96.0.0/12)> `
-DNSServerIPs <your DNS service IP (default 10.96.0.10)>note- You do not need to pass a parameter if the default value of the parameter is correct for your cluster.
- If your Windows nodes have multiple network adapters, you can configure the one used for VXLAN by editing
VXLAN_ADAPTER
inC:\TigeraCalico\config.ps1
, then restarting Calico Enterprise for Windows.
-
Verify that the Calico Enterprise services are running.
Get-Service -Name CalicoNode
Get-Service -Name CalicoFelix -
Install and start kubelet/kube-proxy service. Execute following PowerShell script/commands.
C:\TigeraCalico\kubernetes\install-kube-services.ps1
Start-Service -Name kubelet
Start-Service -Name kube-proxy -
Verify kubelet/kube-proxy services are running.
Get-Service -Name kubelet
Get-Service -Name kube-proxy
-
Enable BGP service on Windows node (instead of VXLAN). Install the RemoteAccess service using the following Powershell commands:
Install-WindowsFeature RemoteAccess
Install-WindowsFeature RSAT-RemoteAccess-PowerShell
Install-WindowsFeature RoutingThen restart the computer:
Restart-Computer -Force
before running:
Install-RemoteAccess -VpnType RoutingOnly
Sometimes the remote access service fails to start automatically after install. To make sure it is running, execute the following command:
Start-Service RemoteAccess
-
Prepare the directory for Kubernetes files on Windows node.
mkdir c:\k
-
Copy the Kubernetes kubeconfig file from the control plane node (default, Location $HOME/.kube/config), to c:\k\config.
-
Copy the Calico Enterprise for Windows installation zip file to c:\tigera-calico-windows.zip.
-
Download the PowerShell script, install-calico-windows.ps1.
Invoke-WebRequest https://docs.tigera.io/calico-enterprise/3.19/scripts/install-calico-windows.ps1 -OutFile c:\install-calico-windows.ps1
-
Install Calico Enterprise for Windows for your datastore with using the default parameters or customize installation parameters. The PowerShell script downloads Calico Enterprise for Windows release binary, Kubernetes binaries, Windows utilities files, configures Calico Enterprise for Windows, and starts the Calico service.
You do not need to pass a parameter if the default value of the parameter is correct for your cluster.
Kubernetes datastore
c:\install-calico-windows.ps1 -KubeVersion <your Kubernetes version (e.g. 1.18.6)> `
-ServiceCidr <your service cidr (default 10.96.0.0/12)> `
-DNSServerIPs <your DNS service IP (default 10.96.0.10)>noteYou do not need to pass a parameter if the default value of the parameter is correct for your cluster.
-
Verify that the Calico Enterprise services are running.
Get-Service -Name CalicoNode
Get-Service -Name CalicoFelix -
Install and start kubelet/kube-proxy service. Execute following PowerShell script/commands.
C:\TigeraCalico\kubernetes\install-kube-services.ps1
Start-Service -Name kubelet
Start-Service -Name kube-proxy -
Verify kubelet/kube-proxy services are running.
Get-Service -Name kubelet
Get-Service -Name kube-proxy
-
Ensure that a Windows instance role has permissions to get
namespaces
and to getsecrets
in the calico-system namespace (or kube-system namespace if you are using a non operator-managed Calico Enterprise installation.) One way to do this is by running the following commands to install the required permissions temporarily. Before running the commands, replace<eks_node_name>
with the Kubernetes node name of the EKS Windows node, for exampleip-192-168-42-34.us-west-2.compute.internal
.noteIf you are using a non operator-managed Calico Enterprise installation, replace the namespace
calico-system
withkube-system
in the commands below.kubectl create clusterrole calico-install-ns --verb=get --resource=namespace
kubectl create clusterrolebinding calico-install-ns --clusterrole=calico-install-ns --user=system:node:<eks_node_name>
kubectl create role calico-install-token --verb=get,list --resource=secrets --namespace calico-system
kubectl create rolebinding calico-install-token --role=calico-install-token --user=system:node:<eks_node_name> --namespace calico-system -
Prepare the directory for Kubernetes files on the Windows node.
mkdir c:\k
-
Install kubectl and move the kubectl binary to c:\k.
-
Copy the Calico Enterprise for Windows installation zip file to c:\tigera-calico-windows.zip.
-
Download the PowerShell script, install-calico-windows.ps1.
Invoke-WebRequest https://docs.tigera.io/calico-enterprise/3.19/scripts/install-calico-windows.ps1 -OutFile c:\install-calico-windows.ps1
-
Install Calico Enterprise for Windows for your datastore with using the default parameters or customize installation parameters. The PowerShell script downloads Calico Enterprise for Windows release binary, Kubernetes binaries, Windows utilities files, configures Calico Enterprise for Windows, and starts the Calico service.
You do not need to pass a parameter if the default value of the parameter is correct for your cluster.
Kubernetes datastore (default)
c:\install-calico-windows.ps1 -ServiceCidr <your service cidr (default 10.96.0.0/12)> `
-DNSServerIPs <your DNS service IP (default 10.96.0.10)>noteYou do not need to pass a parameter if the default value of the parameter is correct for your cluster.
-
Verify that the Calico Enterprise services are running.
Get-Service -Name CalicoNode
Get-Service -Name CalicoFelix -
Verify kubelet and kube-proxy services are running.
Get-Service -Name kubelet
Get-Service -Name kube-proxy -
If you installed temporary RBAC in the first step, remove the permissions by running the following commands.
noteIf you are using a non operator-managed Calico Enterprise installation, replace the namespace
calico-system
withkube-system
in the commands below.kubectl delete clusterrolebinding calico-install-ns
kubectl delete clusterrole calico-install-ns
kubectl delete rolebinding calico-install-token --namespace calico-system
kubectl delete role calico-install-token --namespace calico-system
Congratulations! You now have a Kubernetes cluster with Calico Enterprise for Windows and a Linux control node.
Configure installation parameters
Parameter Name | Description | Default |
---|---|---|
KubeVersion | Version of Kubernetes binaries to use. If the value is an empty string (default), the Calico Enterprise for Windows installation script does not download Kubernetes binaries and run Kubernetes service. Use the default for managed public cloud. | "" |
DownloadOnly | Download without installing Calico Enterprise for Windows. Set to yes to manually install and configure Calico Enterprise for Windows. For example, Calico Enterprise for Windows the hard way. | no |
Datastore | Calico Enterprise for Windows datastore type [kubernetes ] for reading endpoints and policy information. | kubernetes |
ServiceCidr | Service IP range of the Kubernetes cluster. Not required for most managed Kubernetes clusters. Note: EKS has non-default value. | 10.96.0.0/12 |
DNSServerIPs | Comma-delimited list of DNS service IPs used by Windows pod. Not required for most managed Kubernetes clusters. Note: EKS has a non-default value. | 10.96.0.10 |
CalicoBackend | Calico backend network type (vxlan or bgp ). If the value is an empty string (default), backend network type is auto detected. | "" |
Next steps
You can now use the Calico Enterprise Linux-based docs site for your documentation. Before you continue, review the Limitations and known issues to understand the features (and sections of documentation) that do not apply to Windows.