Skip to content

Commit fc954fc

Browse files
authored
Merge pull request #210891 from MGoedtel/task1953105
added statement about certificate ownership/support
2 parents b6237d2 + 22d1bf1 commit fc954fc

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

articles/aks/certificate-rotation.md

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ title: Certificate Rotation in Azure Kubernetes Service (AKS)
33
description: Learn certificate rotation in an Azure Kubernetes Service (AKS) cluster.
44
services: container-service
55
ms.topic: article
6-
ms.date: 5/10/2022
6+
ms.date: 09/12/2022
77
---
88

99
# Certificate rotation in Azure Kubernetes Service (AKS)
1010

11-
Azure Kubernetes Service (AKS) uses certificates for authentication with many of its components. If you have a RBAC-enabled cluster built after March 2022 it is enabled with certificate auto-rotation. Periodically, you may need to rotate those certificates for security or policy reasons. For example, you may have a policy to rotate all your certificates every 90 days.
11+
Azure Kubernetes Service (AKS) uses certificates for authentication with many of its components. If you have a RBAC-enabled cluster built after March 2022, it's enabled with certificate auto-rotation. Periodically, you may need to rotate those certificates for security or policy reasons. For example, you may have a policy to rotate all your certificates every 90 days.
1212

1313
> [!NOTE]
14-
> Certificate auto-rotation will *only* be enabled by default for RBAC enabled AKS clusters.
14+
> Certificate auto-rotation will *only* be enabled by default for RBAC enabled AKS clusters.
1515
1616
This article shows you how certificate rotation works in your AKS cluster.
1717

@@ -30,36 +30,41 @@ AKS generates and uses the following certificates, Certificate Authorities, and
3030
* Each node uses a Service Account (SA) token, which is signed by the Cluster CA.
3131
* The `kubectl` client has a certificate for communicating with the AKS cluster.
3232

33+
Certificates mentioned above are maintained by Microsoft, except the cluster certificate, which you have to maintain.
34+
3335
> [!NOTE]
3436
> AKS clusters created prior to May 2019 have certificates that expire after two years. Any cluster created after May 2019 or any cluster that has its certificates rotated have Cluster CA certificates that expire after 30 years. All other AKS certificates, which use the Cluster CA for signing, will expire after two years and are automatically rotated during an AKS version upgrade which happened after 8/1/2021. To verify when your cluster was created, use `kubectl get nodes` to see the *Age* of your node pools.
35-
>
36-
> Additionally, you can check the expiration date of your cluster's certificate. For example, the following bash command displays the client certificate details for the *myAKSCluster* cluster in resource group *rg*
37+
>
38+
> Additionally, you can check the expiration date of your cluster's certificate. For example, the following bash command displays the client certificate details for the *myAKSCluster* cluster in resource group *rg*:
3739
> ```console
3840
> kubectl config view --raw -o jsonpath="{.users[?(@.name == 'clusterUser_rg_myAKSCluster')].user.client-certificate-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
3941
> ```
4042
41-
* Check expiration date of apiserver certificate
43+
To check expiration date of apiserver certificate, run the following command:
44+
4245
```console
4346
curl https://{apiserver-fqdn} -k -v 2>&1 |grep expire
4447
```
4548
46-
* Check expiration date of certificate on VMAS agent node
49+
To check the expiration date of certificate on VMAS agent node, run the following command:
50+
4751
```azurecli
4852
az vm run-command invoke -g MC_rg_myAKSCluster_region -n vm-name --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
4953
```
5054

51-
* Check expiration date of certificate on one virtual machine scale set agent node
55+
To check expiration date of certificate on one virtual machine scale set agent node, run the following command:
56+
5257
```azurecli
5358
az vmss run-command invoke -g MC_rg_myAKSCluster_region -n vmss-name --instance-id 0 --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
5459
```
5560

5661
## Certificate Auto Rotation
5762

58-
For AKS to automatically rotate non-CA certificates, the cluster must have [TLS Bootstrapping](https://kubernetes.io/docs/reference/access-authn-authz/kubelet-tls-bootstrapping/) which has been enabled by default in all Azure regions.
63+
For AKS to automatically rotate non-CA certificates, the cluster must have [TLS Bootstrapping](https://kubernetes.io/docs/reference/access-authn-authz/kubelet-tls-bootstrapping/) which has been enabled by default in all Azure regions.
5964

60-
> [!Note]
65+
> [!NOTE]
6166
> If you have an existing cluster you have to upgrade that cluster to enable Certificate Auto-Rotation.
62-
> Do not disable bootstrap to keep your auto-rotation enabled.
67+
> Do not disable bootstrap to keep your auto-rotation enabled.
6368
6469
For any AKS clusters created or upgraded after March 2022 Azure Kubernetes Service will automatically rotate non-CA certificates on both the control plane and agent nodes within 80% of the client certificate valid time, before they expire with no downtime for the cluster.
6570

@@ -72,14 +77,14 @@ To verify if TLS Bootstrapping is enabled on your cluster browse to the followin
7277

7378
To access agent nodes, see [Connect to Azure Kubernetes Service cluster nodes for maintenance or troubleshooting][aks-node-access] for more information.
7479

75-
> [!Note]
80+
> [!NOTE]
7681
> The file path may change as Kubernetes version evolves in the future.
7782
78-
Once a region is configured, create a new cluster or upgrade an existing cluster with `az aks upgrade` to set that cluster for auto-certificate rotation. A control plane and node pool upgrade is needed to enable this feature.
83+
Once a region is configured, create a new cluster or upgrade an existing cluster with `az aks upgrade` to set that cluster for auto-certificate rotation. A control plane and node pool upgrade is needed to enable this feature.
7984

8085
```azurecli
8186
az aks upgrade -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
82-
```
87+
```
8388

8489
### Limitation
8590

@@ -105,35 +110,35 @@ az aks rotate-certs -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
105110
> [!IMPORTANT]
106111
> It may take up to 30 minutes for `az aks rotate-certs` to complete. If the command fails before completing, use `az aks show` to verify the status of the cluster is *Certificate Rotating*. If the cluster is in a failed state, rerun `az aks rotate-certs` to rotate your certificates again.
107112
108-
Verify that the old certificates are no longer valid by running a `kubectl` command. Since you have not updated the certificates used by `kubectl`, you will see an error. For example:
113+
Verify that the old certificates aren't valid by running any `kubectl` command. If you haven't updated the certificates used by `kubectl`, you'll see an error similar to the following example:
109114

110115
```console
111-
$ kubectl get nodes
116+
kubectl get nodes
112117
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "ca")
113118
```
114119

115-
Update the certificate used by `kubectl` by running `az aks get-credentials`.
120+
To update the certificate used by `kubectl`, run the [az aks get-credentials][az-aks-get-credentials] command:
116121

117122
```azurecli
118123
az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME --overwrite-existing
119124
```
120125

121-
Verify the certificates have been updated by running a `kubectl` command, which will now succeed. For example:
126+
To verify the certificates have been updated, run the following [kubectl get][kubectl-get] command:
122127

123128
```console
124129
kubectl get nodes
125130
```
126131

127132
> [!NOTE]
128-
> If you have any services that run on top of AKS, you may need to update certificates related to those services as well.
133+
> If you have any services that run on top of AKS, you might need to update their certificates.
129134
130135
## Next steps
131136

132137
This article showed you how to automatically rotate your cluster's certificates, CAs, and SAs. You can see [Best practices for cluster security and upgrades in Azure Kubernetes Service (AKS)][aks-best-practices-security-upgrades] for more information on AKS security best practices.
133138

134-
135139
[azure-cli-install]: /cli/azure/install-azure-cli
136140
[az-aks-get-credentials]: /cli/azure/aks#az_aks_get_credentials
141+
[az-get]: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get
137142
[az-extension-add]: /cli/azure/extension#az_extension_add
138143
[az-extension-update]: /cli/azure/extension#az_extension_update
139144
[aks-best-practices-security-upgrades]: operator-best-practices-cluster-security.md

0 commit comments

Comments
 (0)