Skip to content

Commit 35ea7b1

Browse files
committed
Merge branch 'main' into release-preview-aml-cli-v2-refresh
2 parents b73bf32 + 3dafdbf commit 35ea7b1

File tree

93 files changed

+1334
-480
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+1334
-480
lines changed

articles/active-directory/governance/TOC.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@
3030
items:
3131
- name: Manage access to resources - Microsoft Graph
3232
href: /graph/tutorial-access-package-api?toc=/azure/active-directory/governance/toc.json&bc=/azure/active-directory/governance/breadcrumb/toc.json
33-
- name: Manage access to resources - PowerShell
34-
href: /powershell/microsoftgraph/tutorial-entitlement-management?view=graph-powershell-beta
3533
- name: Review access to Microsoft 365 groups - Microsoft Graph
3634
href: /graph/tutorial-accessreviews-m365group
3735
- name: Review access to security groups - Microsoft Graph
@@ -156,4 +154,4 @@
156154
- name: Access reviews - Microsoft Graph API
157155
href: /graph/api/resources/accessreviewsv2-overview
158156
- name: Entitlement management - Microsoft Graph API
159-
href: /graph/api/resources/entitlementmanagement-overview
157+
href: /graph/api/resources/entitlementmanagement-overview

articles/aks/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,8 @@
317317
href: configure-kubenet-dual-stack.md
318318
- name: Use Azure-CNI
319319
href: configure-azure-cni.md
320+
- name: Bring your own CNI
321+
href: use-byo-cni.md
320322
- name: Create an internal load balancer
321323
href: internal-lb.md
322324
- name: Use a Standard Load Balancer

articles/aks/azure-disk-volume.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Create a static volume for pods in Azure Kubernetes Service (AKS)
33
description: Learn how to manually create a volume with Azure disks for use with a pod in Azure Kubernetes Service (AKS)
44
services: container-service
55
ms.topic: article
6-
ms.date: 03/29/2019
6+
ms.date: 04/01/2019
77

88

99
#Customer intent: As a developer, I want to learn how to manually create and attach storage to a specific pod in AKS.
@@ -69,6 +69,7 @@ spec:
6969
accessModes:
7070
- ReadWriteOnce
7171
persistentVolumeReclaimPolicy: Retain
72+
storageClassName: managed-csi
7273
csi:
7374
driver: disk.csi.azure.com
7475
readOnly: false
@@ -91,7 +92,7 @@ spec:
9192
requests:
9293
storage: 100Gi
9394
volumeName: pv-azuredisk
94-
storageClassName: ""
95+
storageClassName: managed-csi
9596
```
9697
9798
Use the `kubectl` commands to create the *PersistentVolume* and *PersistentVolumeClaim*.

articles/aks/azure-files-csi.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Use Container Storage Interface (CSI) drivers for Azure Files on Azure Ku
33
description: Learn how to use the Container Storage Interface (CSI) drivers for Azure Files in an Azure Kubernetes Service (AKS) cluster.
44
services: container-service
55
ms.topic: article
6-
ms.date: 03/24/2021
6+
ms.date: 04/01/2021
77
author: palma21
88

99
---
@@ -39,6 +39,7 @@ A storage class is used to define how an Azure Files share is created. A storage
3939
* **Standard_GRS**: Standard geo-redundant storage
4040
* **Standard_ZRS**: Standard zone-redundant storage
4141
* **Standard_RAGRS**: Standard read-access geo-redundant storage
42+
* **Standard_RAGZRS**: Standard read-access geo-zone-redundant storage
4243
* **Premium_LRS**: Premium locally redundant storage
4344
* **Premium_ZRS**: Premium zone-redundant storage
4445

articles/aks/azure-files-volume.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ titleSuffix: Azure Kubernetes Service
44
description: Learn how to manually create a volume with Azure Files for use with multiple concurrent pods in Azure Kubernetes Service (AKS)
55
services: container-service
66
ms.topic: article
7-
ms.date: 03/9/2022
7+
ms.date: 04/1/2022
88

99

1010
#Customer intent: As a developer, I want to learn how to manually create and attach storage using Azure Files to a pod in AKS.
@@ -124,6 +124,7 @@ spec:
124124
accessModes:
125125
- ReadWriteMany
126126
persistentVolumeReclaimPolicy: Retain
127+
storageClassName: azurefile-csi
127128
csi:
128129
driver: file.csi.azure.com
129130
readOnly: false
@@ -155,7 +156,7 @@ metadata:
155156
spec:
156157
accessModes:
157158
- ReadWriteMany
158-
storageClassName: ""
159+
storageClassName: azurefile-csi
159160
volumeName: azurefile
160161
resources:
161162
requests:

articles/aks/ingress-tls.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -567,14 +567,13 @@ spec:
567567
- host: hello-world-ingress.MY_CUSTOM_DOMAIN
568568
http:
569569
paths:
570-
- path:
570+
- path: /static(/|$)(.*)
571571
pathType: Prefix
572572
backend:
573573
service:
574574
name: aks-helloworld-one
575575
port:
576576
number: 80
577-
path: /static(/|$)(.*)
578577
```
579578

580579
Create the ingress resource using the `kubectl apply` command.

articles/aks/support-policies.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Microsoft manages and monitors the following components through the control pane
2828
* Kubelet or Kubernetes API servers
2929
* Etcd or a compatible key-value store, providing Quality of Service (QoS), scalability, and runtime
3030
* DNS services (for example, kube-dns or CoreDNS)
31-
* Kubernetes proxy or networking
31+
* Kubernetes proxy or networking (except when [BYOCNI](use-byo-cni.md) is used)
3232
* Any additional addon or system component running in the kube-system namespace
3333

3434
AKS isn't a Platform-as-a-Service (PaaS) solution. Some components, such as agent nodes, have *shared responsibility*, where users must help maintain the AKS cluster. User input is required, for example, to apply an agent node operating system (OS) security patch.
@@ -52,9 +52,9 @@ Microsoft provides technical support for the following examples:
5252
* Connectivity to all Kubernetes components that the Kubernetes service provides and supports, such as the API server.
5353
* Management, uptime, QoS, and operations of Kubernetes control plane services (Kubernetes control plane, API server, etcd, and coreDNS, for example).
5454
* Etcd data store. Support includes automated, transparent backups of all etcd data every 30 minutes for disaster planning and cluster state restoration. These backups aren't directly available to you or any users. They ensure data reliability and consistency. On-demand rollback or restore is not supported as a feature.
55-
* Any integration points in the Azure cloud provider driver for Kubernetes. These include integrations into other Azure services such as load balancers, persistent volumes, or networking (Kubernetes and Azure CNI).
55+
* Any integration points in the Azure cloud provider driver for Kubernetes. These include integrations into other Azure services such as load balancers, persistent volumes, or networking (Kubernetes and Azure CNI, except when [BYOCNI](use-byo-cni.md) is in use).
5656
* Questions or issues about customization of control plane components such as the Kubernetes API server, etcd, and coreDNS.
57-
* Issues about networking, such as Azure CNI, kubenet, or other network access and functionality issues. Issues could include DNS resolution, packet loss, routing, and so on. Microsoft supports various networking scenarios:
57+
* Issues about networking, such as Azure CNI, kubenet, or other network access and functionality issues, except when [BYOCNI](use-byo-cni.md) is in use. Issues could include DNS resolution, packet loss, routing, and so on. Microsoft supports various networking scenarios:
5858
* Kubenet and Azure CNI using managed VNETs or with custom (bring your own) subnets.
5959
* Connectivity to other Azure services and applications
6060
* Ingress controllers and ingress or load balancer configurations
@@ -75,6 +75,7 @@ Microsoft doesn't provide technical support for the following examples:
7575
> Microsoft can provide best-effort support for third-party open-source projects such as Helm. Where the third-party open-source tool integrates with the Kubernetes Azure cloud provider or other AKS-specific bugs, Microsoft supports examples and applications from Microsoft documentation.
7676
* Third-party closed-source software. This software can include security scanning tools and networking devices or software.
7777
* Network customizations other than the ones listed in the [AKS documentation](./index.yml).
78+
* Custom or 3rd-party CNI plugins used in [BYOCNI](use-byo-cni.md) mode.
7879

7980

8081
## AKS support coverage for agent nodes

articles/aks/use-byo-cni.md

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
---
2+
title: Bring your own Container Network Interface (CNI) plugin (preview)
3+
description: Learn how to utilize Azure Kubernetes Service with your own Container Network Interface (CNI) plugin
4+
services: container-service
5+
ms.topic: article
6+
ms.date: 3/30/2022
7+
---
8+
9+
# Bring your own Container Network Interface (CNI) plugin with Azure Kubernetes Service (AKS) (PREVIEW)
10+
11+
Kubernetes does not provide a network interface system by default; this functionality is provided by [network plugins][kubernetes-cni]. Azure Kubernetes Service provides several supported CNI plugins. Documentation for supported plugins can be found from the [networking concepts page][aks-network-concepts].
12+
13+
While the supported plugins meet most networking needs in Kubernetes, advanced users of AKS may desire to utilize the same CNI plugin used in on-premises Kubernetes environments or to make use of specific advanced functionality available in other CNI plugins.
14+
15+
This article shows how to deploy an AKS cluster with no CNI plugin pre-installed, which allows for installation of any third-party CNI plugin that works in Azure.
16+
17+
[!INCLUDE [preview features callout](./includes/preview/preview-callout.md)]
18+
19+
## Support
20+
21+
BYOCNI has support implications - Microsoft support will not be able to assist with CNI-related issues in clusters deployed with BYOCNI. For example, CNI-related issues would cover most east/west (pod to pod) traffic, along with `kubectl proxy` and similar commands. If CNI-related support is desired, a supported AKS network plugin can be used or support could be procured for the BYOCNI plugin from a third-party vendor.
22+
23+
Support will still be provided for non-CNI-related issues.
24+
25+
## Prerequisites
26+
27+
* For ARM/Bicep, use at least template version 2022-01-02-preview
28+
* For Azure CLI, use at least version 0.5.55 of the `aks-preview` extension
29+
* The virtual network for the AKS cluster must allow outbound internet connectivity.
30+
* AKS clusters may not use `169.254.0.0/16`, `172.30.0.0/16`, `172.31.0.0/16`, or `192.0.2.0/24` for the Kubernetes service address range, pod address range, or cluster virtual network address range.
31+
* The cluster identity used by the AKS cluster must have at least [Network Contributor](../role-based-access-control/built-in-roles.md#network-contributor) permissions on the subnet within your virtual network. If you wish to define a [custom role](../role-based-access-control/custom-roles.md) instead of using the built-in Network Contributor role, the following permissions are required:
32+
* `Microsoft.Network/virtualNetworks/subnets/join/action`
33+
* `Microsoft.Network/virtualNetworks/subnets/read`
34+
* The subnet assigned to the AKS node pool cannot be a [delegated subnet](../virtual-network/subnet-delegation-overview.md).
35+
* AKS doesn't apply Network Security Groups (NSGs) to its subnet and will not modify any of the NSGs associated with that subnet. If you provide your own subnet and add NSGs associated with that subnet, you must ensure the security rules in the NSGs allow traffic within the node CIDR range. For more details, see [Network security groups][aks-network-nsg].
36+
37+
## Cluster creation steps
38+
39+
### Install the aks-preview CLI extension
40+
41+
```azurecli-interactive
42+
# Install the aks-preview extension
43+
az extension add --name aks-preview
44+
45+
# Update the extension to make sure you have the latest version installed
46+
az extension update --name aks-preview
47+
```
48+
49+
### Deploy a cluster
50+
51+
# [Azure CLI](#tab/azure-cli)
52+
53+
Deploying a BYOCNI cluster requires passing the `--network-plugin` parameter with the parameter value of `none`.
54+
55+
1. First, create a resource group to create the cluster in:
56+
```azurecli-interactive
57+
az group create -l <Region> -n <ResourceGroupName>
58+
```
59+
60+
1. Then create the cluster itself:
61+
```azurecli-interactive
62+
az aks create -l <Region> -g <ResourceGroupName> -n <ClusterName> --network-plugin none
63+
```
64+
65+
# [Azure Resource Manager](#tab/azure-resource-manager)
66+
67+
When using an Azure Resource Manager template to deploy, pass `none` to the `networkPlugin` parameter to the `networkProfile` object. See the [Azure Resource Manager template documentation][deploy-arm-template] for help with deploying this template, if needed.
68+
69+
```json
70+
{
71+
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
72+
"contentVersion": "1.0.0.0",
73+
"parameters": {
74+
"clusterName": {
75+
"type": "string",
76+
"defaultValue": "aksbyocni"
77+
},
78+
"location": {
79+
"type": "string",
80+
"defaultValue": "[resourceGroup().location]"
81+
},
82+
"kubernetesVersion": {
83+
"type": "string",
84+
"defaultValue": "1.22"
85+
},
86+
"nodeCount": {
87+
"type": "int",
88+
"defaultValue": 3
89+
},
90+
"nodeSize": {
91+
"type": "string",
92+
"defaultValue": "Standard_B2ms"
93+
}
94+
},
95+
"resources": [
96+
{
97+
"type": "Microsoft.ContainerService/managedClusters",
98+
"apiVersion": "2022-02-02-preview",
99+
"name": "[parameters('clusterName')]",
100+
"location": "[parameters('location')]",
101+
"identity": {
102+
"type": "SystemAssigned"
103+
},
104+
"properties": {
105+
"agentPoolProfiles": [
106+
{
107+
"name": "nodepool1",
108+
"count": "[parameters('nodeCount')]",
109+
"mode": "System",
110+
"vmSize": "[parameters('nodeSize')]"
111+
}
112+
],
113+
"dnsPrefix": "[parameters('clusterName')]",
114+
"kubernetesVersion": "[parameters('kubernetesVersion')]",
115+
"networkProfile": {
116+
"networkPlugin": "none"
117+
}
118+
}
119+
}
120+
]
121+
}
122+
```
123+
124+
# [Bicep](#tab/bicep)
125+
126+
When using a Bicep template to deploy, pass `none` to the `networkPlugin` parameter to the `networkProfile` object. See the [Bicep template documentation][deploy-bicep-template] for help with deploying this template, if needed.
127+
128+
```bicep
129+
param clusterName string = 'aksbyocni'
130+
param location string = resourceGroup().location
131+
param kubernetesVersion string = '1.22'
132+
param nodeCount int = 3
133+
param nodeSize string = 'Standard_B2ms'
134+
135+
resource aksCluster 'Microsoft.ContainerService/managedClusters@2022-02-02-preview' = {
136+
name: clusterName
137+
location: location
138+
identity: {
139+
type: 'SystemAssigned'
140+
}
141+
properties: {
142+
agentPoolProfiles: [
143+
{
144+
name: 'nodepool1'
145+
count: nodeCount
146+
mode: 'System'
147+
vmSize: nodeSize
148+
}
149+
]
150+
dnsPrefix: clusterName
151+
kubernetesVersion: kubernetesVersion
152+
networkProfile: {
153+
networkPlugin: 'none'
154+
}
155+
}
156+
}
157+
```
158+
159+
### Deploy a CNI plugin
160+
161+
When AKS provisioning completes, the cluster will be online, but all of the nodes will be in a `NotReady` state:
162+
163+
```bash
164+
$ kubectl get nodes
165+
NAME STATUS ROLES AGE VERSION
166+
aks-nodepool1-23902496-vmss000000 NotReady agent 6m9s v1.21.9
167+
168+
$ kubectl get node -o custom-columns='NAME:.metadata.name,STATUS:.status.conditions[?(@.type=="Ready")].message'
169+
NAME STATUS
170+
aks-nodepool1-23902496-vmss000000 container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
171+
```
172+
173+
At this point, the cluster is ready for installation of a CNI plugin.
174+
175+
---
176+
## Next steps
177+
178+
Learn more about networking in AKS in the following articles:
179+
180+
* [Use a static IP address with the Azure Kubernetes Service (AKS) load balancer](static-ip.md)
181+
* [Use an internal load balancer with Azure Container Service (AKS)](internal-lb.md)
182+
183+
* [Create a basic ingress controller with external network connectivity][aks-ingress-basic]
184+
* [Enable the HTTP application routing add-on][aks-http-app-routing]
185+
* [Create an ingress controller that uses an internal, private network and IP address][aks-ingress-internal]
186+
* [Create an ingress controller with a dynamic public IP and configure Let's Encrypt to automatically generate TLS certificates][aks-ingress-tls]
187+
* [Create an ingress controller with a static public IP and configure Let's Encrypt to automatically generate TLS certificates][aks-ingress-static-tls]
188+
189+
<!-- LINKS - External -->
190+
[kubernetes-cni]: https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/
191+
[cni-networking]: https://github.com/Azure/azure-container-networking/blob/master/docs/cni.md
192+
[kubenet]: https://kubernetes.io/docs/concepts/cluster-administration/network-plugins/#kubenet
193+
194+
<!-- LINKS - Internal -->
195+
[az-aks-create]: /cli/azure/aks#az_aks_create
196+
[aks-ssh]: ssh.md
197+
[ManagedClusterAgentPoolProfile]: /azure/templates/microsoft.containerservice/managedclusters#managedclusteragentpoolprofile-object
198+
[aks-network-concepts]: concepts-network.md
199+
[aks-network-nsg]: concepts-network.md#network-security-groups
200+
[aks-ingress-basic]: ingress-basic.md
201+
[aks-ingress-tls]: ingress-tls.md
202+
[aks-ingress-static-tls]: ingress-static-ip.md
203+
[aks-http-app-routing]: http-application-routing.md
204+
[aks-ingress-internal]: ingress-internal-ip.md
205+
[az-extension-add]: /cli/azure/extension#az_extension_add
206+
[az-extension-update]: /cli/azure/extension#az_extension_update
207+
[az-feature-register]: /cli/azure/feature#az_feature_register
208+
[az-feature-list]: /cli/azure/feature#az_feature_list
209+
[az-provider-register]: /cli/azure/provider#az_provider_register
210+
[network-policy]: use-network-policies.md
211+
[nodepool-upgrade]: use-multiple-node-pools.md#upgrade-a-node-pool
212+
[network-comparisons]: concepts-network.md#compare-network-models
213+
[system-node-pools]: use-system-pools.md
214+
[prerequisites]: configure-azure-cni.md#prerequisites

0 commit comments

Comments
 (0)