Skip to content

Commit cd6e0ac

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into cni-rework
2 parents 5dcf0f2 + c6f1245 commit cd6e0ac

10 files changed

+204
-34
lines changed

articles/aks/TOC.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -501,24 +501,26 @@
501501
items:
502502
- name: Create a controller in AKS using Terraform
503503
href: create-k8s-cluster-with-aks-application-gateway-ingress.md
504-
- name: Use ingress-nginx
505-
items:
506-
- name: Create an ingress controller
507-
href: ingress-basic.md
508-
- name: Use TLS with an ingress controller
509-
href: ingress-tls.md
510504
- name: Use application routing add-on
511505
items:
512506
- name: Application routing add-on overview
513507
href: app-routing.md
514508
- name: Monitor using Prometheus and Grafana
515509
href: app-routing-nginx-prometheus.md
510+
- name: Migrate from HTTP application routing to the application routing add-on
511+
href: app-routing-migration.md
516512
- name: Use Application Gateway Ingress Controller add-on
517513
href: ../application-gateway/tutorial-ingress-controller-add-on-existing.md?toc=/azure/aks/toc.json&bc=/azure/aks/breadcrumb/toc.json
518514
- name: Use Istio gateway with Istio Service Mesh add-on
519515
href: istio-deploy-ingress.md
520516
- name: Use HTTP application routing add-on (retired)
521517
href: http-application-routing.md
518+
- name: Use unmanaged ingress-nginx
519+
items:
520+
- name: Create an ingress controller
521+
href: ingress-basic.md
522+
- name: Use TLS with an ingress controller
523+
href: ingress-tls.md
522524
- name: Load balancing
523525
items:
524526
- name: Create an internal load balancer

articles/aks/app-routing-migration.md

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
---
2+
title: Migrate from HTTP application routing to the application routing add-on
3+
description: Learn how to migrate from the HTTP application routing feature to the application routing add-on.
4+
ms.topic: how-to
5+
ms.author: nickoman
6+
author: nickomang
7+
ms.custom: devx-track-azurecli, devx-track-linux
8+
ms.date: 08/18/2023
9+
---
10+
11+
# Migrate from HTTP application routing to the application routing add-on
12+
13+
In this article, you'll learn how to migrate your Azure Kubernetes Service (AKS) cluster from HTTP application routing feature to the [application routing add-on](./app-routing.md). The HTTP application routing add-on has been retired and won't work on any cluster Kubernetes version currently in support, so we recommend migrating as soon as possible to maintain a supported configuration.
14+
15+
## Prerequisites
16+
17+
Azure CLI version `2.49.0` or later. If you haven't yet, follow the instructions to [Install Azure CLI][install-azure-cli]. Run `az --version` to find the version, and run `az upgrade` to upgrade the version if not already on the latest.
18+
19+
> [!NOTE]
20+
> These steps detail migrating from an unsupported configuration. As such, AKS cannot offer support for issues that arise during the migration process.
21+
22+
## Update your cluster's add-ons, ingresses, and IP usage
23+
24+
1. Enable the application routing add-on.
25+
26+
```azurecli-interactive
27+
az aks enable-addons -g <ResourceGroupName> -n <ClusterName> --addons web_application_routing
28+
```
29+
30+
2. Update your ingresses, setting `ingressClassName` to `webapprouting.kubernetes.azure.com`. Remove the `kubernetes.io/ingress.class` annotation. You'll also need to update the host to one that you own, as the application routing add-on doesn't have a managed cluster DNS zone. If you don't have a DNS zone, follow instructions to [create][app-routing-dns-create] and [configure][app-routing-dns-configure] one.
31+
32+
Initially, your ingress configuration will look something like this:
33+
34+
```yaml
35+
apiVersion: networking.k8s.io/v1
36+
kind: Ingress
37+
metadata:
38+
name: aks-helloworld
39+
annotations:
40+
kubernetes.io/ingress.class: addon-http-application-routing # Remove the ingress class annotation
41+
spec:
42+
rules:
43+
- host: aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE>
44+
http:
45+
paths:
46+
- path: /
47+
pathType: Prefix
48+
backend:
49+
service:
50+
name: aks-helloworld
51+
port:
52+
number: 80
53+
```
54+
55+
After you've properly updated, the same configuration will look like the following:
56+
57+
```yaml
58+
apiVersion: networking.k8s.io/v1
59+
kind: Ingress
60+
metadata:
61+
name: aks-helloworld
62+
spec:
63+
ingressClassName: webapprouting.kubernetes.azure.com # Set the ingress class property to refer to the application routing add-on ingress class
64+
rules:
65+
- http:
66+
host: aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE> # Replace with your own hostname
67+
paths:
68+
- path: /
69+
pathType: Prefix
70+
backend:
71+
service:
72+
name: aks-helloworld
73+
port:
74+
number: 80
75+
```
76+
77+
3. Update the ingress controller's IP (such as in DNS records) with the new IP address. You can find the new IP by using `kubectl get`. For example:
78+
79+
```bash
80+
kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
81+
```
82+
83+
4. Disable the HTTP application routing add-on.
84+
85+
```azurecli-interactive
86+
az aks disable-addons -g <ResourceGroupName> -n <ClusterName> --addons http_application_routing
87+
```
88+
89+
## Remove and delete all HTTP application routing resources
90+
91+
1. After the HTTP application routing add-on is disabled, some related Kubernetes resources may remain in your cluster. These resources include *configmaps* and *secrets* that are created in the *kube-system* namespace. To maintain a clean cluster, you may want to remove these resources. Look for *addon-http-application-routing* resources using the following [`kubectl get`][kubectl-get] commands:
92+
93+
```bash
94+
kubectl get deployments --namespace kube-system
95+
kubectl get services --namespace kube-system
96+
kubectl get configmaps --namespace kube-system
97+
kubectl get secrets --namespace kube-system
98+
```
99+
100+
The following example output shows *configmaps* that should be deleted:
101+
102+
```output
103+
NAMESPACE NAME DATA AGE
104+
kube-system addon-http-application-routing-nginx-configuration 0 9m7s
105+
kube-system addon-http-application-routing-tcp-services 0 9m7s
106+
kube-system addon-http-application-routing-udp-services 0 9m7s
107+
```
108+
109+
1. Delete remaining resources using the [`kubectl delete`][kubectl-delete] command. Make sure to specify the resource type, resource name, and namespace. The following example deletes one of the previous configmaps:
110+
111+
```bash
112+
kubectl delete configmaps addon-http-application-routing-nginx-configuration --namespace kube-system
113+
```
114+
115+
1. Repeat the previous `kubectl delete` step for all *addon-http-application-routing* resources remaining in your cluster.
116+
117+
## Next steps
118+
119+
After migrating to the application routing add-on, learn how to [monitor ingress controller metrics with Prometheus and Grafana](./app-routing-nginx-prometheus.md).
120+
121+
<!-- INTERNAL LINKS -->
122+
[install-azure-cli]: /cli/azure/install-azure-cli
123+
[ingress-https]: ./ingress-tls.md
124+
[app-routing-dns-create]: ./app-routing.md?tabs=without-osm#create-an-azure-dns-zone
125+
[app-routing-dns-configure]: ./app-routing.md?tabs=without-osm#configure-the-add-on-to-use-azure-dns-to-manage-dns-zones
126+
127+
<!-- EXTERNAL LINKS -->
128+
[dns-pricing]: https://azure.microsoft.com/pricing/details/dns/
129+
[kubectl-get]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get
130+
[kubectl-delete]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#delete

articles/aks/http-application-routing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ms.author: allensu
1212
# HTTP application routing add-on for Azure Kubernetes Service (AKS)
1313

1414
> [!CAUTION]
15-
> The HTTP application routing add-on is in the process of being retired and isn't recommended for production use. We recommend using the [Application Routing add-on](./app-routing.md) instead.
15+
> The HTTP application routing add-on is in the process of being retired and isn't recommended for production use. We recommend migrating to the [Application Routing add-on](./app-routing-migration.md) instead.
1616
1717
The HTTP application routing add-on makes it easy to access applications that are deployed to your Azure Kubernetes Service (AKS) cluster by:
1818

articles/bastion/kerberos-authentication-portal.md

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Learn how to configure Bastion to use Kerberos authentication via t
55
author: cherylmc
66
ms.service: bastion
77
ms.topic: how-to
8-
ms.date: 06/12/2023
8+
ms.date: 09/14/2023
99
ms.author: cherylmc
1010

1111
---
@@ -17,11 +17,11 @@ This article shows you how to configure Azure Bastion to use Kerberos authentica
1717
## Considerations
1818

1919
* The Kerberos setting for Azure Bastion can be configured in the Azure portal only and not with native client.
20-
* VMs migrated from on-premises to Azure are not currently supported for Kerberos. 
21-
* Cross-realm authentication is not currently supported for Kerberos. 
22-
* Changes to DNS server are not currently supported for Kerberos. After making any changes to DNS server, you will need to delete and re-create the Bastion resource.
20+
* VMs migrated from on-premises to Azure aren't currently supported for Kerberos. 
21+
* Cross-realm authentication isn't currently supported for Kerberos. 
22+
* Changes to DNS server aren't currently supported for Kerberos. After making any changes to DNS server, you'll need to delete and re-create the Bastion resource.
2323
* If additional DC (domain controllers) are added, Bastion will only recognize the first DC.
24-
* If additional DCs are added for different domains, the added domains cannot successfully authenticate with Kerberos.
24+
* If additional DCs are added for different domains, the added domains can't successfully authenticate with Kerberos.
2525

2626
## Prerequisites
2727

@@ -56,11 +56,11 @@ In this section, the following steps help you modify your virtual network and ex
5656
1. [Update the DNS settings](#update-vnet-dns-servers) for your virtual network.
5757
1. Go to the portal page for your Bastion deployment and select **Configuration**.
5858
1. On the Configuration page, select **Kerberos authentication**, then select **Apply**.
59-
1. Bastion will update with the new configuration settings.
59+
1. Bastion updates with the new configuration settings.
6060

6161
## To verify Bastion is using Kerberos
6262

63-
> [!NOTE]
63+
> [!NOTE]
6464
> You must use the User Principal Name (UPN) to sign in using Kerberos.
6565
6666
Once you have enabled Kerberos on your Bastion resource, you can verify that it's actually using Kerberos for authentication to the target domain-joined VM.
@@ -71,7 +71,10 @@ Once you have enabled Kerberos on your Bastion resource, you can verify that it'
7171
1. End the VM session.
7272
1. Connect to the target VM again using Bastion. Sign-in should succeed, indicating that Bastion used Kerberos (and not NTLM) for authentication.
7373

74-
## Quickstart: Setup Bastion with Kerberos - Resource Manager template
74+
> [!NOTE]
75+
> To prevent failback to NTLM, make sure you follow the preceding steps. Enabling Kerberos (without following the procedure) won't prevent failback to NTLM.
76+
77+
## Quickstart: Set up Bastion with Kerberos - Resource Manager template
7578

7679
### Review the template
7780

@@ -418,21 +421,21 @@ Once you have enabled Kerberos on your Bastion resource, you can verify that it'
418421
The following resources have been defined in the template:
419422
- Deploys the following Azure resources:
420423
- [**Microsoft.Network/virtualNetworks**](/azure/templates/microsoft.network/virtualnetworks): create an Azure virtual network.
421-
- [**Microsoft.Network/bastionHosts**](/azure/templates/microsoft.network/bastionHosts): create a Standard SKU Bastion with a public IP and Kerberos feature enabled
422-
- Create a Windows 10 ClientVM and a Windows Server 2019 ServerVM
423-
- Have the DNS Server of the VNET point to the private IP address of the ServerVM (domain controller).
424+
- [**Microsoft.Network/bastionHosts**](/azure/templates/microsoft.network/bastionHosts): create a Standard SKU Bastion with a public IP and Kerberos feature enabled.
425+
- Create a Windows 10 ClientVM and a Windows Server 2019 ServerVM.
426+
- Have the DNS Server of the VNet point to the private IP address of the ServerVM (domain controller).
424427
- Runs a Custom Script Extension on the ServerVM to promote it to a domain controller with domain name: `bastionkrb.test`.
425428
- Runs a Custom Script Extension on the ClientVM to have it:
426429
- **Restrict NTLM: Incoming NTLM traffic** = Deny all domain accounts (this is to ensure Kerberos is used for authentication).
427430
- Domain-join the `bastionkrb.test` domain.
428431

429432
## Deploy the template
430-
To setup Kerberos, deploy the ARM template above by running the following PS cmd:
433+
To set up Kerberos, deploy the preceding ARM template by running the following PowerShell cmd:
431434
```
432435
New-AzResourceGroupDeployment -ResourceGroupName <your-rg-name> -TemplateFile "<path-to-template>\KerberosDeployment.json"`
433436
```
434437
## Review deployed resources
435-
Now, login to ClientVM using Bastion with Kerberos authentication:
438+
Now, sign in to ClientVM using Bastion with Kerberos authentication:
436439
- credentials: username = `[email protected]` and password = `<password-entered-during-deployment>`.
437440

438441

articles/batch/best-practices.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Best practices
33
description: Learn best practices and useful tips for developing your Azure Batch solutions.
4-
ms.date: 01/18/2023
4+
ms.date: 09/13/2023
55
ms.topic: conceptual
66
---
77

@@ -35,13 +35,14 @@ initiates communication to the compute nodes, and compute nodes also require com
3535
node communication model, compute nodes initiate communication with the Batch service. Due to the reduced scope of
3636
inbound/outbound connections required, and not requiring Azure Storage outbound access for baseline operation, the recommendation
3737
is to use the simplified node communication model. Some future improvements to the Batch service will also require the simplified
38-
node communication model.
38+
node communication model. The classic node communication model will be
39+
[retired on March 31, 2026](batch-pools-to-simplified-compute-node-communication-model-migration-guide.md).
3940

4041
- **Job and task run time considerations:** If you have jobs comprised primarily of short-running tasks, and the expected total task counts are small, so that the overall expected run time of the job isn't long, don't allocate a new pool for each job. The allocation time of the nodes will diminish the run time of the job.
4142

4243
- **Multiple compute nodes:** Individual nodes aren't guaranteed to always be available. While uncommon, hardware failures, operating system updates, and a host of other issues can cause individual nodes to be offline. If your Batch workload requires deterministic, guaranteed progress, you should allocate pools with multiple nodes.
4344

44-
- **Images with impending end-of-life (EOL) dates:** We strongly recommended avoiding images with impending Batch support
45+
- **Images with impending end-of-life (EOL) dates:** It's strongly recommended to avoid images with impending Batch support
4546
end of life (EOL) dates. These dates can be discovered via the
4647
[`ListSupportedImages` API](/rest/api/batchservice/account/listsupportedimages),
4748
[PowerShell](/powershell/module/az.batch/get-azbatchsupportedimage), or

articles/batch/security-best-practices.md

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Batch security and compliance best practices
33
description: Learn best practices and useful tips for enhancing security with your Azure Batch solutions.
4-
ms.date: 11/15/2022
4+
ms.date: 09/13/2023
55
ms.topic: conceptual
66
---
77

@@ -27,7 +27,9 @@ Pools can also be configured in one of two node communication modes, classic or
2727
In the classic node communication model, the Batch service initiates communication to the compute nodes, and compute nodes
2828
also require communicating to Azure Storage. In the simplified node communication model, compute nodes initiate communication
2929
with the Batch service. Due to the reduced scope of inbound/outbound connections required, and not requiring Azure Storage
30-
outbound access for baseline operation, the recommendation is to use the simplified node communication model.
30+
outbound access for baseline operation, the recommendation is to use the simplified node communication model. The classic
31+
node communication model will be
32+
[retired on March 31, 2026](batch-pools-to-simplified-compute-node-communication-model-migration-guide.md).
3133

3234
### Batch account authentication
3335

@@ -60,10 +62,42 @@ In addition to operations specific to a Batch account, [management operations](/
6062

6163
Batch management operations via Azure Resource Manager are encrypted using HTTPS, and each request is authenticated using Azure AD authentication.
6264

63-
### Batch pool nodes
65+
### Batch pool compute nodes
6466

6567
The Batch service communicates with a Batch node agent that runs on each node in the pool. For example, the service instructs the node agent to run a task, stop a task, or get the files for a task. Communication with the node agent is enabled by one or more load balancers, the number of which depends on the number of nodes in a pool. The load balancer forwards the communication to the desired node, with each node being addressed by a unique port number. By default, load balancers have public IP addresses associated with them. You can also remotely access pool nodes via RDP or SSH (this access is enabled by default, with communication via load balancers).
6668

69+
#### Batch compute node OS
70+
71+
Batch supports both Linux and Windows operating systems. Batch supports Linux with an aligned node agent for a subset of Linux OS
72+
distributions. It's recommended that the operating system is kept up-to-date with the latest patches provided by the OS
73+
publisher.
74+
75+
Batch support for images and node agents phase out over time, typically aligned with publisher support timelines. It's
76+
recommended to avoid using images with impending end-of-life (EOL) dates or images that are past their EOL date.
77+
It's your responsibility to periodically refresh your view of the EOL dates pertinent to your pools and migrate your workloads
78+
before the EOL date occurs. If you're using a custom image with a specified node agent, ensure that you follow Batch support
79+
end-of-life dates for the image for which your custom image is derived or aligned with. An image without a specified
80+
`batchSupportEndOfLife` date indicates that such a date hasn't been determined yet by the Batch service. Absence of a date
81+
doesn't indicate that the respective image will be supported indefinitely. An EOL date may be added or updated in the future
82+
at any time. EOL dates can be discovered via the
83+
[`ListSupportedImages` API](/rest/api/batchservice/account/listsupportedimages),
84+
[PowerShell](/powershell/module/az.batch/get-azbatchsupportedimage), or
85+
[Azure CLI](/cli/azure/batch/pool/supported-images).
86+
87+
#### Windows OS Transport Layer Security (TLS)
88+
89+
The Batch node agent doesn't modify operating system level defaults for SSL/TLS versions or cipher suite ordering. In Windows,
90+
SSL/TLS versions and cipher suite order is controlled at the operating system level, and therefore the Batch node agent adopts
91+
the settings set by the image used by each compute node. Although the Batch node agent attempts to utilize the
92+
most secure settings available when possible, it can still be limited by operating system level settings. We recommend that
93+
you review your OS level defaults and set them appropriately for the most secure mode that is amenable for your workflow and
94+
organizational requirements. For more information, please visit
95+
[Manage TLS](https://learn.microsoft.com/windows-server/security/tls/manage-tls) for cipher suite order enforcement and
96+
[TLS registry settings](https://learn.microsoft.com/windows-server/security/tls/tls-registry-settings) for SSL/TLS version
97+
control for Schannel SSP. Note that some setting changes require a reboot to take effect. Utilizing a newer operating system
98+
with modern security defaults or a [custom image](batch-sig-images.md) with modified settings is recommended instead of
99+
application of such settings with a Batch start task.
100+
67101
### Restricting access to Batch endpoints
68102

69103
Several capabilities are available to limit access to the various Batch endpoints, especially when the solution uses a virtual network.

0 commit comments

Comments
 (0)