You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/aks/use-network-policies.md
+75-5Lines changed: 75 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ This article shows you how to install the Network Policy engine and create Kuber
16
16
17
17
## Before you begin
18
18
19
-
You need the Azure CLI version 2.0.61 or later installed and configured. Run`az --version` to find the version. If you need to install or upgrade, see[Install Azure CLI][install-azure-cli].
19
+
You need the Azure CLI version 2.0.61 or later installed and configured. Run`az --version` to find the version. If you need to install or upgrade, see[Install Azure CLI][install-azure-cli].
20
20
21
21
## Overview of Network Policy
22
22
@@ -33,19 +33,31 @@ Azure provides two ways to implement Network Policy. You choose a Network Policy
33
33
* Azure's own implementation, called *Azure Network Policy Manager (NPM)*.
34
34
**Calico Network Policies*, an open-source network and network security solution founded by [Tigera][tigera].
35
35
36
-
Azure NPM for Linux uses Linux *IPTables* to enforce the specified policies. Policies are translated into sets of allowed and disallowed IP pairs. These pairs are then programmed as IPTable filter rules.
36
+
Azure NPM for Linux uses Linux *IPTables*and Azure NPM for Windows uses *Host Network Service (HNS) ACLPolicies*to enforce the specified policies. Policies are translated into sets of allowed and disallowed IP pairs. These pairs are then programmed as IPTable/HNS ACLPolicy filter rules.
37
37
38
38
## Differences between Azure NPM and Calico Network Policy and their capabilities
| Supported platforms | Linux | Linux, Windows Server 2019 and 2022 |
42
+
| Supported platforms | Linux, Windows Server 2022 | Linux, Windows Server 2019 and 2022 |
43
43
| Supported networking options | Azure CNI | Azure CNI (Linux, Windows Server 2019 and 2022) and kubenet (Linux) |
44
44
| Compliance with Kubernetes specification | All policy types supported | All policy types supported |
45
45
| Additional features | None | Extended policy model consisting of Global Network Policy, Global Network Set, and Host Endpoint. For more information on using the `calicoctl` CLI to manage these extended features, see [calicoctl user reference][calicoctl]. |
46
46
| Support | Supported by Azure support and Engineering team | Calico community support. For more information on additional paid support, see [Project Calico support options][calico-support]. |
47
47
| Logging | Logs available with **kubectl log -n kube-system <network-policy-pod>** command | For more information, see [Calico component logs][calico-logs]|
48
48
49
+
## Limitations:
50
+
51
+
Azure Network Policy Manager(NPM) does not support IPv6. Otherwise, Azure NPM fully supports the network policy spec in Linux.
52
+
* In Windows, Azure NPM does not support the following:
53
+
* named ports
54
+
* SCTP protocol
55
+
* negative match label or namespace selectors (e.g. all labels except "debug=true")
56
+
* "except" CIDR blocks (a CIDR with exceptions)
57
+
58
+
>[!NOTE]
59
+
> * Azure NPM pod logs will record an error if an unsupported policy is created.
60
+
49
61
## Create an AKS cluster and enable Network Policy
50
62
51
63
To see network policies in action, let's create an AKS cluster that supports network policy and then work on adding policies.
@@ -63,7 +75,7 @@ The following example script:
63
75
64
76
Instead of using a system-assigned identity, you can also use a user-assigned identity. For more information, see [Use managed identities](use-managed-identity.md).
65
77
66
-
### Create an AKS cluster with Azure NPM enabled
78
+
### Create an AKS cluster with Azure NPM enabled - Linux only
67
79
68
80
In this section, we will work on creating a cluster with Linux node pools and Azure NPM enabled.
69
81
@@ -87,6 +99,64 @@ az aks create \
87
99
--network-policy azure
88
100
```
89
101
102
+
### Create an AKS cluster with Azure NPM enabled - Windows Server 2022 (Preview)
103
+
104
+
In this section, we will work on creating a cluster with Windows node pools and Azure NPM enabled.
105
+
106
+
Please execute the following commands prior to creating a cluster:
107
+
108
+
```azurecli
109
+
az extension add --name aks-preview
110
+
az extension update --name aks-preview
111
+
az feature register --namespace Microsoft.ContainerService --name AKSWindows2022Preview
112
+
az feature register --namespace Microsoft.ContainerService --name WindowsNetworkPolicyPreview
113
+
az provider register -n Microsoft.ContainerService
114
+
```
115
+
116
+
> [!NOTE]
117
+
> At this time, Azure NPM with Windows nodes is available on Windows Server 2022 only
118
+
>
119
+
120
+
Now, you should replace the values for *$RESOURCE_GROUP_NAME*, *$CLUSTER_NAME* and *$WINDOWS_USERNAME* variables.
121
+
122
+
```azurecli-interactive
123
+
$RESOURCE_GROUP_NAME=myResourceGroup-NP
124
+
$CLUSTER_NAME=myAKSCluster
125
+
$WINDOWS_USERNAME=myWindowsUserName
126
+
$LOCATION=canadaeast
127
+
```
128
+
129
+
Create a username to use as administrator credentials for your Windows Server containers on your cluster. The following command prompts you for a username. Set it to `$WINDOWS_USERNAME`(remember that the commands in this article are entered into a BASH shell).
130
+
131
+
```azurecli-interactive
132
+
echo "Please enter the username to use as administrator credentials for Windows Server containers on your cluster: " && read WINDOWS_USERNAME
133
+
```
134
+
135
+
Use the following command to create a cluster :
136
+
137
+
```azurecli
138
+
az aks create \
139
+
--resource-group $RESOURCE_GROUP_NAME \
140
+
--name $CLUSTER_NAME \
141
+
--node-count 1 \
142
+
--windows-admin-username $WINDOWS_USERNAME \
143
+
--network-plugin azure \
144
+
--network-policy azure
145
+
```
146
+
147
+
It takes a few minutes to create the cluster. By default, your cluster is created with only a Linux node pool. If you would like to use Windows node pools, you can add one. For example:
148
+
149
+
```azurecli
150
+
az aks nodepool add \
151
+
--resource-group $RESOURCE_GROUP_NAME \
152
+
--cluster-name $CLUSTER_NAME \
153
+
--os-type Windows \
154
+
--name npwin \
155
+
--node-count 1
156
+
```
157
+
158
+
[!INCLUDE [preview features callout](./includes/preview/preview-callout.md)]
159
+
90
160
### Create an AKS cluster for Calico network policies
91
161
92
162
Create the AKS cluster and specify *azure* for the network plugin, and *calico* for the Network Policy. Using *calico* as the Network Policy enables Calico networking on both Linux and Windows node pools.
@@ -265,4 +335,4 @@ To learn more about policies, see [Kubernetes network policies][kubernetes-netwo
0 commit comments