diff --git a/.codespellignore b/.codespellignore new file mode 100644 index 0000000000..0a9e8d1739 --- /dev/null +++ b/.codespellignore @@ -0,0 +1,2 @@ +afterall +aks \ No newline at end of file diff --git a/.github/workflows/codespell.yaml b/.github/workflows/codespell.yaml new file mode 100644 index 0000000000..96e5dba40f --- /dev/null +++ b/.github/workflows/codespell.yaml @@ -0,0 +1,24 @@ +# GitHub Action to automate the identification of common misspellings in text files. +# https://github.com/codespell-project/actions-codespell +# https://github.com/codespell-project/codespell +name: codespell +on: [push, pull_request] +permissions: + contents: read + +jobs: + codespell: + name: Check for spelling errors + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@128a63446a954579617e875aaab7d2978154e969 # v2.4.0 + with: + egress-policy: audit + + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: codespell-project/actions-codespell@94259cd8be02ad2903ba34a22d9c13de21a74461 # master + with: + check_filenames: true + skip: ./.git,./.github/workflows/codespell.yaml,.git,*.png,*.jpg,*.svg,*.sum,./vendor,go.sum,testdata + ignore_words_file: .codespellignore diff --git a/assets/icons/logo.svg b/assets/icons/logo.svg new file mode 100644 index 0000000000..fbe1edeb08 --- /dev/null +++ b/assets/icons/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss new file mode 100644 index 0000000000..256902739d --- /dev/null +++ b/assets/scss/_variables_project.scss @@ -0,0 +1,6 @@ +/* + +Add styles or override variables from the theme here. + +*/ + diff --git a/config/_default/config.toml b/config/_default/config.toml new file mode 100644 index 0000000000..75a5cc74de --- /dev/null +++ b/config/_default/config.toml @@ -0,0 +1,171 @@ +title = "Cloud Provider Azure" + +publishDir = "public" +enableRobotsTXT = true + +# Will give values to .Lastmod etc. +enableGitInfo = true + +# Language settings +contentDir = "content/en" +defaultContentLanguage = "en" +defaultContentLanguageInSubdir = false +# Useful when translating. +enableMissingTranslationPlaceholders = true + +disableKinds = ["taxonomy", "taxonomyTerm"] +[params.taxonomy] +# Highlighting config +pygmentsCodeFences = true +pygmentsUseClasses = false +# Use the new Chroma Go highlighter in Hugo. +pygmentsUseClassic = false +#pygmentsOptions = "linenos=table" +# See https://help.farbox.com/pygments.html +pygmentsStyle = "tango" + +# Configure how URLs look like per section. +[permalinks] +blog = "/:section/:year/:month/:day/:slug/" + +## Configuration for BlackFriday markdown parser: https://github.com/russross/blackfriday +[blackfriday] +angledQuotes = false +hrefTargetBlank = true +latexDashes = true +plainIDAnchors = true + +# Image processing configuration. +[imaging] +anchor = "smart" +quality = 75 +resampleFilter = "CatmullRom" + +[services] +[services.googleAnalytics] +# Comment out the next line to disable GA tracking. Also disables the feature described in [params.ui.feedback]. +id = "UA-00000000-0" + +# Language configuration + +[languages] +[languages.en] +description = "Cloud Provider Azure" +languageName = "English" +title = "Cloud Provider Azure" +# Weight used for sorting. +weight = 1 + +[markup] +[markup.goldmark] +[markup.goldmark.renderer] +unsafe = true +[markup.highlight] +# See a complete list of available styles at https://xyproto.github.io/splash/docs/all.html +style = "tango" +# Uncomment if you want your chosen highlight style used for code blocks without a specified language +# guessSyntax = "true" + +# Everything below this are Site Params + +[params] +copyright = "The Kubernetes Authors" +privacy_policy = "" + +# First one is picked as the Twitter card image if not set on page. +# images = ["images/project-illustration.png"] + +# Menu title if your navbar has a versions selector to access old versions of your site. +# This menu appears only if you have at least one [params.versions] set. +version_menu = "Releases" + +# Flag used in the "version-banner" partial to decide whether to display a +# banner on every page indicating that this is an archived version of the docs. +# Set this flag to "true" if you want to display the banner. +archived_version = false + +# The version number for the version of the docs represented in this doc set. +# Used in the "version-banner" partial to display a version number for the +# current doc set. +version = "0.0" + +# A link to latest version of the docs. Used in the "version-banner" partial to +# point people to the main doc site. +url_latest_version = "https://cloud-provider-azure.sigs.k8s.io" + +github_branch= "master" +# Repository configuration (URLs for in-page links to opening issues and suggesting changes) +github_repo = "https://github.com/kubernetes-sigs/cloud-provider-azure" +# An optional link to a related project repo. For example, the sibling repository where your product code lives. +github_project_repo = "https://github.com/kubernetes-sigs/cloud-provider-azure" + +# Specify a value here if your content directory is not in your repo's root directory +github_subdir = "site" + +# Google Custom Search Engine ID. Remove or comment out to disable search. +# gcs_engine_id = "011737558837375720776:fsdu1nryfng" + +# Enable Algolia DocSearch +algolia_docsearch = false + +# Enable Lunr.js offline search +offlineSearch = true + +# User interface configuration +[params.ui] +# Enable to show the side bar menu in its compact state. +sidebar_menu_compact = false +# Set to true to disable breadcrumb navigation. +breadcrumb_disable = false +# Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled) +sidebar_search_disable = false +# Set to false if you don't want to display a logo (/assets/icons/logo.svg) in the top nav bar +navbar_logo = true +# Set to true to disable the About link in the site footer +footer_about_disable = false + +# Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events. +# This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set. +# If you want this feature, but occasionally need to remove the "Feedback" section from a single page, +# add "hide_feedback: true" to the page's front matter. +[params.ui.feedback] +enable = true +# The responses that the user sees after clicking "yes" (the page was helpful) or "no" (the page was not helpful). +no = 'Sorry to hear that. Please tell us how we can improve.' +yes = 'Glad to hear it! Please tell us how we can improve.' + +# Adds a reading time to the top of each doc. +# If you want this feature, but occasionally need to remove the Reading time from a single page, +# add "hide_readingtime: true" to the page's front matter +[params.ui.readingtime] +enable = false + +[params.links] +# End user relevant links. These will show up on left side of footer and in the community page if you have one. +[[params.links.user]] +desc = "Discussion and help from your fellow users" +icon = "fa fa-envelope" +name = "Google Group" +url = "https://groups.google.com/forum/#!forum/kubernetes-sig-cloud-provider" +# Developer relevant links. These will show up on right side of footer and in the community page if you have one. +[[params.links.developer]] +desc = "Development takes place here!" +icon = "fab fa-github" +name = "GitHub" +url = "https://github.com/kubernetes-sigs/cloud-provider-azure" + +[module] + # uncomment line below for temporary local development of module + # replacements = "github.com/google/docsy -> ../../docsy" + [module.hugoVersion] + extended = true + min = "0.104.3" + [[module.imports]] + path = "github.com/google/docsy" + disable = false + [[module.imports]] + path = "github.com/google/docsy/dependencies" + disable = false + +[outputs] +section = [ "HTML", "RSS", "print" ] \ No newline at end of file diff --git a/config/githubpage/config.toml b/config/githubpage/config.toml new file mode 100644 index 0000000000..4e08a5b64a --- /dev/null +++ b/config/githubpage/config.toml @@ -0,0 +1 @@ +baseURL = "https://kubernetes-sigs.github.io/cloud-provider-azure/" diff --git a/config/netlify/config.toml b/config/netlify/config.toml new file mode 100644 index 0000000000..dbcf601816 --- /dev/null +++ b/config/netlify/config.toml @@ -0,0 +1 @@ +baseURL = "https://cloud-provider-azure.sigs.k8s.io" diff --git a/content/en/FAQ/_index.md b/content/en/FAQ/_index.md new file mode 100644 index 0000000000..c1e3e0762d --- /dev/null +++ b/content/en/FAQ/_index.md @@ -0,0 +1,26 @@ +--- +title: FAQ +linkTitle: FAQ +type: docs +menu: + main: + weight: 40 +--- + +## What is Cloud Provider Azure? + +A Kubernetes `Cloud Provider` consists of two parts: a provider-specified `cloud-controller-manager` (or `kube-controller-manager` for in-tree version) and a provider-specified implementation of Kubernetes [cloud provider interface](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/cloud-provider/cloud.go). Currently, the Azure `cloud-controller-manager` is outside of [Kubernetes repo](https://github.com/kubernetes/kubernetes) and the cloud provider interface implementation is in `pkg/provider`. + +The `cloud-controller-manager` is a Kubernetes [control plane](https://kubernetes.io/docs/reference/glossary/?all=true#term-control-plane) component which embeds cloud-specific control logic. It lets you link your cluster into your cloud provider's API, and separates out the components that interact with that cloud platform from components that just interact with your cluster. + +By decoupling the interoperability logic between Kubernetes and the underlying cloud infrastructure, the `cloud-controller-manager` component enables cloud providers to release features at a different pace compared to the main Kubernetes project. + +## What is the difference between in-tree and out-of-tree cloud provider? + +In-tree cloud providers are the providers we develop & release in the [main Kubernetes repository](https://github.com/kubernetes/kubernetes/tree/master/pkg/cloudprovider/providers). This results in embedding the knowledge and context of each cloud provider into most of the Kubernetes components. This enables more native integrations such as the kubelet requesting information about itself via a metadata service from the cloud provider. + +Out-of-tree cloud providers are providers that can be developed, built, and released independent of Kubernetes core. This requires deploying a new component called the cloud-controller-manager which is responsible for running all the cloud specific controllers that were previously run in the kube-controller-manager. + +## Which one is recommended? + +We recommend using the in-tree cloud provider at this time because it's out-of-tree counterpart is not 100% ready. However, out-of-tree cloud provider will become the No.1 pick in the near future. diff --git a/content/en/FAQ/known-issues/_index.md b/content/en/FAQ/known-issues/_index.md new file mode 100644 index 0000000000..574d118011 --- /dev/null +++ b/content/en/FAQ/known-issues/_index.md @@ -0,0 +1,8 @@ +--- +title: "Known Issues" +linkTitle: "Known Issues" +weight: 2 +type: docs +description: > + Known Issues of Azure cloud provider. +--- diff --git a/content/en/FAQ/known-issues/azuredisk.md b/content/en/FAQ/known-issues/azuredisk.md new file mode 100644 index 0000000000..ba5b3b8f2b --- /dev/null +++ b/content/en/FAQ/known-issues/azuredisk.md @@ -0,0 +1,964 @@ +--- +title: "AzureDisk CSI Driver Known Issues" +linkTitle: "AzureDisk" +type: docs +--- + +- [azure disk plugin known issues](#azure-disk-plugin-known-issues) + - [Recommended stable version for azure disk](#recommended-stable-version-for-azure-disk) + - [1. disk attach error](#1-disk-attach-error) + - [2. disk unavailable after attach/detach a data disk on a node](#2-disk-unavailable-after-attachdetach-a-data-disk-on-a-node) + - [3. Azure disk support on Sovereign Cloud](#3-azure-disk-support-on-sovereign-cloud) + - [4. Time cost for Azure Disk PVC mount](#4-time-cost-for-azure-disk-pvc-mount) + - [5. Azure disk PVC `Multi-Attach error`, makes disk mount very slow or mount failure forever](#5-azure-disk-pvc-multi-attach-error-makes-disk-mount-very-slow-or-mount-failure-forever) + - [6. WaitForAttach failed for azure disk: parsing "/dev/disk/azure/scsi1/lun1": invalid syntax](#6-waitforattach-failed-for-azure-disk-parsing-devdiskazurescsi1lun1-invalid-syntax) + - [7. `uid` and `gid` setting in azure disk](#7-uid-and-gid-setting-in-azure-disk) + - [8. `Addition of a blob based disk to VM with managed disks is not supported`](#8-addition-of-a-blob-based-disk-to-vm-with-managed-disks-is-not-supported) + - [9. dynamic azure disk PVC try to access wrong storage account (of other resource group)](#9-dynamic-azure-disk-pvc-try-to-access-wrong-storage-account-of-other-resource-group) + - [10. data loss if using existing azure disk with partitions in disk mount](#10-data-loss-if-using-existing-azure-disk-with-partitions-in-disk-mount) + - [11. Delete azure disk PVC which is already in use by a pod](#11-delete-azure-disk-pvc-which-is-already-in-use-by-a-pod) + - [12. create azure disk PVC failed due to account creation failure](#12-create-azure-disk-pvc-failed-due-to-account-creation-failure) + - [13. cannot find Lun for disk](#13-cannot-find-Lun-for-disk) + - [14. azure disk attach/detach failure, mount issue, i/o error](#14-azure-disk-attachdetach-failure-mount-issue-io-error) + - [15. azure disk could be not detached forever](#15-azure-disk-could-be-not-detached-forever) + - [16. potential race condition issue due to detach disk failure retry](#16-potential-race-condition-issue-due-to-detach-disk-failure-retry) + - [17. very slow disk attach/detach issue when disk num is large](#17-very-slow-disk-attachdetach-issue-when-disk-num-is-large) + - [18. detach azure disk make VM run into a limbo state](#18-detach-azure-disk-make-vm-run-into-a-limbo-state) + - [19. disk attach/detach self-healing on VMAS](#19-disk-attachdetach-self-healing-on-vmas) + - [20. azure disk detach failure if node not exists](#20-azure-disk-detach-failure-if-node-not-exists) + - [21. invalid disk URI error](#21-invalid-disk-URI-error) + - [22. vmss dirty cache issue](#22-vmss-dirty-cache-issue) + - [23. race condition when delete disk right after attach disk](#23-race-condition-when-delete-disk-right-after-attach-disk) + - [24. attach disk costs 10min](#24-attach-disk-costs-10min) + - [25. Multi-Attach error](#25-multi-attach-error) + - [26. attached non-existing disk volume on agent node](#26-attached-non-existing-disk-volume-on-agent-node) + - [27. failed to get azure instance id for node (not a vmss instance)](#27-failed-to-get-azure-instance-id-for-node-not-a-vmss-instance) + + + +## Recommended stable version for azure disk + +| k8s version | stable version | +| ---- | ---- | +| v1.15 | 1.15.11+ | +| v1.16 | 1.16.10+ | +| v1.17 | 1.17.6+ | +| v1.18 | 1.18.3+ | +| v1.19 | 1.19.0+ | + +## 1. disk attach error + +**Issue details**: + +In some corner case(detaching multiple disks on a node simultaneously), when scheduling a pod with azure disk mount from one node to another, there could be lots of disk attach error(no recovery) due to the disk not being released in time from the previous node. This issue is due to lack of lock before DetachDisk operation, actually there should be a central lock for both AttachDisk and DetachDisk operations, only one AttachDisk or DetachDisk operation is allowed at one time. + +The disk attach error could be like following: + +```sh +Cannot attach data disk 'cdb-dynamic-pvc-92972088-11b9-11e8-888f-000d3a018174' to VM 'kn-edge-0' because the disk is currently being detached or the last detach operation failed. Please wait until the disk is completely detached and then try again or delete/detach the disk explicitly again. +``` + +**Related issues** + +- [Azure Disk Detach are not working with multiple disk detach on the same Node](https://github.com/kubernetes/kubernetes/issues/60101) +- [Azure disk fails to attach and mount, causing rescheduled pod to stall following node disruption](https://github.com/kubernetes/kubernetes/issues/46421) +- [Since Intel CPU Azure update, new Azure Disks are not mounting, very critical... ](https://github.com/Azure/acs-engine/issues/2002) +- [Busy azure-disk regularly fail to mount causing K8S Pod deployments to halt](https://github.com/Azure/ACS/issues/12) + + +**Mitigation**: + +- option#1: Update every agent node that has attached or detached the disk in problem + +In Azure cloud shell, run + +```sh +$vm = Get-AzureRMVM -ResourceGroupName $rg -Name $vmname +Update-AzureRmVM -ResourceGroupName $rg -VM $vm -verbose -debug +``` + +In Azure cli, run + +```sh +az vm update -g -n +``` + +- option#2: + +1) ```kubectl cordon node``` #make sure no scheduling on this node +2) ```kubectl drain node``` #schedule pod in current node to other node +3) restart the Azure VM for node via the API or portal, wait until VM is "Running" +4) ```kubectl uncordon node``` + +**Fix** + +- PR [fix race condition issue when detaching azure disk](https://github.com/kubernetes/kubernetes/pull/60183) has fixed this issue by add a lock before DetachDisk + +| k8s version | fixed version | +| ---- | ---- | +| v1.6 | no fix | +| v1.7 | 1.7.14 | +| v1.8 | 1.8.9 | +| v1.9 | 1.9.5 | +| v1.10 | 1.10.0 | + +## 2. disk unavailable after attach/detach a data disk on a node +> 💡 NOTE: Azure platform has fixed the host cache issue, the suggested host cache setting of data disk is `ReadOnly` now, more details about [azure disk cache setting](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/premium-storage-performance#disk-caching) +**Issue details**: + +From k8s v1.7, default host cache setting changed from `None` to `ReadWrite`, this change would lead to device name change after attach multiple disks on a node, finally lead to disk unavailable from pod. When access data disk inside a pod, will get following error: + +```sh +[root@admin-0 /]# ls /datadisk +ls: reading directory .: Input/output error +``` + +In my testing on Ubuntu 16.04 D2_V2 VM, when attaching the 6th data disk will cause device name change on agent node, e.g. following lun0 disk should be `sdc` other than `sdk`. + +```sh +azureuser@k8s-agentpool2-40588258-0:~$ tree /dev/disk/azure +... +└── scsi1 + ├── lun0 -> ../../../sdk + ├── lun1 -> ../../../sdj + ├── lun2 -> ../../../sde + ├── lun3 -> ../../../sdf + ├── lun4 -> ../../../sdg + ├── lun5 -> ../../../sdh + └── lun6 -> ../../../sdi +``` + +**Related issues** + +- [device name change due to azure disk host cache setting](https://github.com/kubernetes/kubernetes/issues/60344) +- [unable to use azure disk in StatefulSet since /dev/sd* changed after detach/attach disk](https://github.com/kubernetes/kubernetes/issues/57444) +- [Disk error when pods are mounting a certain amount of volumes on a node](https://github.com/Azure/AKS/issues/201) +- [unable to use azure disk in StatefulSet since /dev/sd* changed after detach/attach disk](https://github.com/Azure/acs-engine/issues/1918) +- [Input/output error when accessing PV](https://github.com/Azure/AKS/issues/297) +- [PersistentVolumeClaims changing to Read-only file system suddenly](https://github.com/Azure/ACS/issues/113) + +**Workaround**: + +- add `cachingmode: None` in azure disk storage class(default is `ReadWrite`), e.g. + +```yaml +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + name: hdd +provisioner: kubernetes.io/azure-disk +parameters: + skuname: Standard_LRS + kind: Managed + cachingmode: None +``` + +**Fix** + +- PR [fix device name change issue for azure disk](https://github.com/kubernetes/kubernetes/pull/60346) could fix this issue too, it will change default `cachingmode` value from `ReadWrite` to `None`. + +| k8s version | fixed version | +| ---- | ---- | +| v1.6 | no such issue as `cachingmode` is already `None` by default | +| v1.7 | 1.7.14 | +| v1.8 | 1.8.11 | +| v1.9 | 1.9.4 | +| v1.10 | 1.10.0 | + +## 3. Azure disk support on Sovereign Cloud + +**Fix** + +- PR [Azure disk on Sovereign Cloud](https://github.com/kubernetes/kubernetes/pull/50673) fixed this issue + +| k8s version | fixed version | +| ---- | ---- | +| v1.7 | 1.7.9 | +| v1.8 | 1.8.3 | +| v1.9 | 1.9.0 | +| v1.10 | 1.10.0 | + +## 4. Time cost for Azure Disk PVC mount + +Original time cost for Azure Disk PVC mount on a standard node size(e.g. Standard_D2_V2) is around 1 minute, `podAttachAndMountTimeout` is [2 minutes](https://github.com/kubernetes/kubernetes/blob/b812eaa172804739283e6e8723cbca3ed293e7ff/pkg/kubelet/volumemanager/volume_manager.go#L78), total `waitForAttachTimeout` is [10 minutes](https://github.com/kubernetes/kubernetes/blob/b812eaa172804739283e6e8723cbca3ed293e7ff/pkg/kubelet/volumemanager/volume_manager.go#L86), so a disk remount(detach and attach in sequential) would possibly cost more than 2min, thus may fail. + +> Note: for some smaller VM size which has only 1 CPU core, time cost would be much bigger(e.g. > 10min) since container is hard to get CPU slot. + +**Related issues** + +- ['timeout expired waiting for volumes to attach/mount for pod when cluster' when node-vm-size is Standard_B1s](https://github.com/Azure/AKS/issues/166) + +**Fix** + +- PR [using cache fix](https://github.com/kubernetes/kubernetes/pull/57432) fixed this issue, which could reduce the mount time cost to around 30s. + +| k8s version | fixed version | +| ---- | ---- | +| v1.8 | no fix | +| v1.9 | 1.9.2 | +| v1.10 | 1.10.0 | + +## 5. Azure disk PVC `Multi-Attach error`, makes disk mount very slow or mount failure forever + > 💡 NOTE: AKS and current aks-engine won't have this issue since it's **not** using containerized kubelet + +**Issue details**: + +When schedule a pod with azure disk volume from one node to another, total time cost of detach & attach is around 1 min from v1.9.2, while in v1.9.x, there is an [UnmountDevice failure issue in containerized kubelet](https://github.com/kubernetes/kubernetes/issues/62282) which makes disk mount very slow or mount failure forever, this issue only exists in v1.9.x due to PR [Refactor nsenter](https://github.com/kubernetes/kubernetes/pull/51771), v1.10.0 won't have this issue since `devicePath` is updated in [v1.10 code](https://github.com/kubernetes/kubernetes/blob/release-1.10/pkg/volume/util/operationexecutor/operation_generator.go#L1130-L1131) + +**error logs**: + +- `kubectl describe po POD-NAME` + +```sh +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Scheduled 3m default-scheduler Successfully assigned deployment-azuredisk1-6cd8bc7945-kbkvz to k8s-agentpool-88970029-0 + Warning FailedAttachVolume 3m attachdetach-controller Multi-Attach error for volume "pvc-6f2d0788-3b0b-11e8-a378-000d3afe2762" Volume is already exclusively attached to one node and can't be attached to another + Normal SuccessfulMountVolume 3m kubelet, k8s-agentpool-88970029-0 MountVolume.SetUp succeeded for volume "default-token-qt7h6" + Warning FailedMount 1m kubelet, k8s-agentpool-88970029-0 Unable to mount volumes for pod "deployment-azuredisk1-6cd8bc7945-kbkvz_default(5346c040-3e4c-11e8-a378-000d3afe2762)": timeout expired waiting for volumes to attach/mount for pod "default"/"deployment-azuredisk1-6cd8bc7945-kbkvz". list of unattached/unmounted volumes=[azuredisk] +``` + +- kubelet logs from the new node + +```sh +E0412 20:08:10.920284 7602 nestedpendingoperations.go:263] Operation for "\"kubernetes.io/azure-disk//subscriptions/xxx/resourceGroups/MC_xxx_eastus/providers/Microsoft.Compute/disks/kubernetes-dynamic-pvc-11035a31-3e8d-11e8-82ec-0a58ac1f04cf\"" failed. No retries permitted until 2018-04-12 20:08:12.920234762 +0000 UTC m=+1467.278612421 (durationBeforeRetry 2s). Error: "Volume has not been added to the list of VolumesInUse in the node's volume status for volume \"pvc-11035a31-3e8d-11e8-82ec-0a58ac1f04cf\" (UniqueName: \"kubernetes.io/azure-disk//subscriptions/xxx/resourceGroups/MC_xxx_eastus/providers/Microsoft.Compute/disks/kubernetes-dynamic-pvc-11035a31-3e8d-11e8-82ec-0a58ac1f04cf\") pod \"symbiont-node-consul-0\" (UID: \"11043b12-3e8d-11e8-82ec-0a58ac1f04cf\") " +``` + +**Related issues** + +- [UnmountDevice would fail in containerized kubelet](https://github.com/kubernetes/kubernetes/issues/62282) +- [upgrade k8s process is broke](https://github.com/Azure/acs-engine/issues/2022) + +**Mitigation**: + +If azure disk PVC mount successfully in the end, there is no action, while if it could not be mounted for more than 20min, following actions could be taken: + +- check whether `volumesInUse` list has unmounted azure disks, run: +``` +kubectl get no NODE-NAME -o yaml > node.log +``` +all volumes in `volumesInUse` should be also in `volumesAttached`, otherwise there would be issue +- restart kubelet on the original node would solve this issue: `sudo kubectl kubelet restart` + +**Fix** + +- PR [fix nsenter GetFileType issue in containerized kubelet](https://github.com/kubernetes/kubernetes/pull/62467) fixed this issue + +| k8s version | fixed version | +| ---- | ---- | +| v1.8 | no such issue | +| v1.9 | v1.9.7 | +| v1.10 | no such issue | + +After fix in v1.9.7, it took about 1 minute for scheduling one azure disk mount from one node to another, you could find details [here](https://github.com/kubernetes/kubernetes/issues/62282#issuecomment-380794459). + +Since azure disk attach/detach operation on a VM cannot be parallel, scheduling 3 azure disk mounts from one node to another would cost about 3 minutes. + +## 6. WaitForAttach failed for azure disk: parsing "/dev/disk/azure/scsi1/lun1": invalid syntax + +**Issue details**: +MountVolume.WaitForAttach may fail in the azure disk remount + +**error logs**: + +in v1.10.0 & v1.10.1, `MountVolume.WaitForAttach` will fail in the azure disk remount, error logs would be like following: + +- incorrect `DevicePath` format on Linux +``` +MountVolume.WaitForAttach failed for volume "pvc-f1562ecb-3e5f-11e8-ab6b-000d3af9f967" : azureDisk - Wait for attach expect device path as a lun number, instead got: /dev/disk/azure/scsi1/lun1 (strconv.Atoi: parsing "/dev/disk/azure/scsi1/lun1": invalid syntax) + Warning FailedMount 1m (x10 over 21m) kubelet, k8s-agentpool-66825246-0 Unable to mount volumes for pod +``` +- wrong `DevicePath`(LUN) number on Windows +``` + Warning FailedMount 1m kubelet, 15282k8s9010 MountVolume.WaitForAttach failed for volume "disk01" : azureDisk - WaitForAttach failed within timeout node (15282k8s9010) diskId:(andy-mghyb +1102-dynamic-pvc-6c526c51-4a18-11e8-ab5c-000d3af7b38e) lun:(4) +``` + +**Related issues** + +- [WaitForAttach failed for azure disk: parsing "/dev/disk/azure/scsi1/lun1": invalid syntax](https://github.com/kubernetes/kubernetes/issues/62540) +- [Pod unable to attach PV after being deleted (Wait for attach expect device path as a lun number, instead got: /dev/disk/azure/scsi1/lun0 (strconv.Atoi: parsing "/dev/disk/azure/scsi1/lun0": invalid syntax)](https://github.com/Azure/acs-engine/issues/2906) + +**Fix** + +- PR [fix WaitForAttach failure issue for azure disk](https://github.com/kubernetes/kubernetes/pull/62612) fixed this issue + +| k8s version | fixed version | +| ---- | ---- | +| v1.8 | no such issue | +| v1.9 | no such issue | +| v1.10 | 1.10.2 | + +## 7. `uid` and `gid` setting in azure disk + +**Issue details**: +Unlike azure file mountOptions, you will get following failure if set `mountOptions` like `uid=999,gid=999` in azure disk mount: + +``` +Warning FailedMount 63s kubelet, aks-nodepool1-29460110-0 MountVolume.MountDevice failed for volume "pvc-d783d0e4-85a1-11e9-8a90-369885447933" : azureDisk - mountDevice:FormatAndMount failed with mount failed: exit status 32 +Mounting command: systemd-run +Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/plugins/kubernetes.io/azure-disk/mounts/m436970985 --scope -- mount -t xfs -o dir_mode=0777,file_mode=0777,uid=1000,gid=1000,defaults /dev/disk/azure/scsi1/lun2 /var/lib/kubelet/plugins/kubernetes.io/azure-disk/mounts/m436970985 +Output: Running scope as unit run-rb21966413ab449b3a242ae9b0fbc9398.scope. +mount: wrong fs type, bad option, bad superblock on /dev/sde, + missing codepage or helper program, or other error +``` + +That's because azureDisk use ext4,xfs file system by default, mountOptions like [uid=x,gid=x] could not be set in mount time. + +**Related issues** +- [Timeout expired waiting for volumes to attach](https://github.com/kubernetes/kubernetes/issues/67014#issuecomment-589915496) +- [Pod failed mounting xfs format volume with mountOptions](https://github.com/Azure/AKS/issues/1030) +- [Allow volume ownership to be only set after fs formatting](https://github.com/kubernetes/kubernetes/issues/69699#issuecomment-558861917) + +**Solution**: + + - option#1: Set uid in `runAsUser` and gid in `fsGroup` for pod: [security context for a Pod](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) + +e.g. Following setting will set pod run as root, make it accessible to any file: +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: security-context-demo +spec: + securityContext: + runAsUser: 0 + fsGroup: 0 +``` + +> Note: Since gid & uid is mounted as 0(root) by default, if set as non-root(e.g. 1000), k8s will use chown to change all dir/files under that disk, this is a time consuming job, which would make mount device very slow, in this issue: [Timeout expired waiting for volumes to attach](https://github.com/kubernetes/kubernetes/issues/67014#issuecomment-413546283), it costs about 10 min for chown operation complete. + + - option#2: use `chown` in `initContainers` +``` +initContainers: +- name: volume-mount + image: busybox + command: ["sh", "-c", "chown -R 100:100 /data"] + volumeMounts: + - name: + mountPath: /data +``` + + - new upstream feature to address this: [Allow volume ownership to be only set after fs formatting](https://github.com/kubernetes/kubernetes/issues/69699) + +## 8. `Addition of a blob based disk to VM with managed disks is not supported` + +**Issue details**: + +Following error may occur if attach a blob based(unmanaged) disk to VM with managed disks: + +```sh + Warning FailedMount 42s (x2 over 1m) attachdetach AttachVolume.Attach failed for volume "pvc-f17e5e77-474e-11e8-a2ea-000d3a10df6d" : Attach volume "holo-k8s-dev-dynamic-pvc-f17e5e77-474e-11e8-a2ea-000d3a10df6d" to instance "k8s-master-92699158-0" failed with compute.VirtualMachinesClient#CreateOrUpdate: Failure responding to request: StatusCode=409 -- Original Error: autorest/azure: Service returned an error. Status=409 Code="OperationNotAllowed" Message="Addition of a blob based disk to VM with managed disks is not supported." +``` + +This issue is by design as in Azure, there are two kinds of disks, blob based(unmanaged) disk and managed disk, an Azure VM could not attach both of these two kinds of disks. + +**Solution**: + +Use `default` azure disk storage class in acs-engine, as `default` will always be identical to the agent pool, that is, if VM is managed, it will be managed azure disk class, if unmanaged, then it's unmanaged disk class. + +## 9. dynamic azure disk PVC try to access wrong storage account (of other resource group) + +**Issue details**: + +In a k8s cluster with **blob based** VMs(won't happen in AKS since AKS only use managed disk), create dynamic azure disk PVC may fail, error logs is like following: + +```sh +Failed to provision volume with StorageClass "default": azureDisk - account ds6c822a4d484211eXXXXXX does not exist while trying to create/ensure default container +``` + +**Related issues** + +- [Multiple clusters - dynamic PVCs try to access wrong storage account (of other resource group)](https://github.com/Azure/acs-engine/issues/2768) + +**Fix** + +- PR [fix storage account not found issue: use ListByResourceGroup instead of List()](https://github.com/kubernetes/kubernetes/pull/56474) fixed this issue + +| k8s version | fixed version | +| ---- | ---- | +| v1.8 | 1.8.13 | +| v1.9 | 1.9.9 | +| v1.10 | no such issue | + +**Work around**: + +this bug only exists in blob based VM in v1.8.x, v1.9.x, so if specify `ManagedDisks` when creating k8s cluster in acs-engine(AKS is using managed disk by default), it won't have this issue: + +```json + "agentPoolProfiles": [ + { + ... + "storageProfile" : "ManagedDisks", + ... + } +``` + +## 10. data loss if using existing azure disk with partitions in disk mount + +**Issue details**: + +When use an existing azure disk(also called [static provisioning](https://github.com/andyzhangx/demo/tree/master/linux/azuredisk#static-provisioning-for-azure-disk)) in pod, if that disk has partitions, the disk will be formatted in the pod mounting process, actually k8s volume don't support mount disk with partitions, disk mount would fail finally. While for mounting existing **azure** disk that has partitions, data will be lost since it will format that disk first. This issue happens only on **Linux**. + +**Related issues** + +- [data loss if using existing azure disk with partitions in disk mount](https://github.com/kubernetes/kubernetes/issues/63235) + +**Fix** + +- PR [fix data loss issue if using existing azure disk with partitions in disk mount](https://github.com/kubernetes/kubernetes/pull/63270) will let azure provider return error when mounting existing azure disk that has partitions + +| k8s version | fixed version | +| ---- | ---- | +| v1.8 | 1.8.15 | +| v1.9 | 1.9.11 | +| v1.10 | 1.10.5 | +| v1.11 | 1.11.0 | + +**Work around**: + +Don't use existing azure disk that has partitions, e.g. following disk in LUN 0 that has one partition: + +```sh +azureuser@aks-nodepool1-28371372-0:/$ ls -l /dev/disk/azure/scsi1/ +total 0 +lrwxrwxrwx 1 root root 12 Apr 27 08:04 lun0 -> ../../../sdc +lrwxrwxrwx 1 root root 13 Apr 27 08:04 lun0-part1 -> ../../../sdc1 +``` + +## 11. Delete azure disk PVC which is already in use by a pod + +**Issue details**: + +Following error may occur if delete azure disk PVC which is already in use by a pod: + +```sh +kubectl describe pv pvc-d8eebc1d-74d3-11e8-902b-e22b71bb1c06 +... +Message: disk.DisksClient#Delete: Failure responding to request: StatusCode=409 -- Original Error: autorest/azure: Service returned an error. Status=409 Code="OperationNotAllowed" Message="Disk kubernetes-dynamic-pvc-d8eebc1d-74d3-11e8-902b-e22b71bb1c06 is attached to VM /subscriptions/{subs-id}/resourceGroups/MC_markito-aks-pvc_markito-aks-pvc_westus/providers/Microsoft.Compute/virtualMachines/aks-agentpool-25259074-0." +``` + +**Fix**: + +This is a common k8s issue, other cloud provider would also has this issue. There is a [PVC protection](https://kubernetes.io/docs/tasks/administer-cluster/pvc-protection/) feature to prevent this, it's alpha in v1.9, and beta(enabled by default) in v1.10 + +**Work around**: +delete pod first and then delete azure disk pvc after a few minutes + +## 12. create azure disk PVC failed due to account creation failure + +> please note this issue only happens on **unmanaged** k8s cluster + +**Issue details**: User may get `Account property kind is invalid for the request` error when trying to create a new **unmanaged** azure disk PVC, error would be like following: + +```sh +azureuser@k8s-master-17140924-0:/tmp$ kubectl describe pvc +Name: pvc-azuredisk +Namespace: default +StorageClass: hdd +Status: Bound +... +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Warning ProvisioningFailed 31m persistentvolume-controller Failed to provision volume with StorageClass "hdd": Create Storage Account: ds10e15ed89c5811e8a0a70, error: storage.AccountsClient#Create: Failure sending request: StatusCode=400 -- Original Error: Code="AccountPropertyIsInvalid" Message="Account property kind is invalid for the request." +``` + +**Fix** + +- PR [fix azure disk create failure due to sdk upgrade](https://github.com/kubernetes/kubernetes/pull/67236) fixed this issue + +| k8s version | fixed version | +| ---- | ---- | +| v1.9 | no such issue | +| v1.10 | no such issue | +| v1.11 | 1.11.3 | +| v1.12 | no such issue | + +**Work around**: + +- create a storage account and specify that account in azure disk storage class, e.g. + +```yaml +kind: StorageClass +apiVersion: storage.k8s.io/v1beta1 +metadata: + name: ssd +provisioner: kubernetes.io/azure-disk +parameters: + skuname: Premium_LRS + storageAccount: customerstorageaccount + kind: Dedicated + ``` + +## 13. cannot find Lun for disk + +**Issue details**: + +Following error may occur if attach a disk to a node: +``` +MountVolume.WaitForAttach failed for volume "pvc-12b458f4-c23f-11e8-8d27-46799c22b7c6" : Cannot find Lun for disk kubernetes-dynamic-pvc-12b458f4-c23f-11e8-8d27-46799c22b7c6 +``` + +**Related issues** + +- [GetAzureDiskLun sometimes costs 1 min which is too long time](https://github.com/kubernetes/kubernetes/issues/69262) + +**Fix** + +- PR [fix azure disk attachment error on Linux](https://github.com/kubernetes/kubernetes/pull/70002) will extract the LUN num from device path **only on Linux** + +| k8s version | fixed version | +| ---- | ---- | +| v1.9 | no such issue | +| v1.10 | 1.10.10 | +| v1.11 | 1.11.5 | +| v1.12 | 1.12.3 | +| v1.13 | no such issue | + +**Work around**: + +wait for a few more minutes should work + +## 14. azure disk attach/detach failure, mount issue, i/o error + +**Issue details**: + +We found a disk attach/detach issue due to [dirty vm cache PR](https://github.com/kubernetes/kubernetes/pull/58313) introduced from v1.9.2, it would lead to following disk issues: + - disk attach/detach failure for a long time + - disk I/O error + - unexpected disk detachment from VM + - VM running into failed state due to attaching non-existing disk + +> Note: above error may **only** happen when there are multiple disk attach/detach operations in parallel and it's not easy to repro since it happens on a little possibility. + + +**Related issues** + +- [Azure Disks volume attach still times out on Kubernetes 1.10](https://github.com/kubernetes/kubernetes/issues/71344) +- [Azure Disks occasionally mounted in a way leading to I/O errors](https://github.com/kubernetes/kubernetes/issues/71453) + +**Fix** + +We changed the azure disk attach/detach retry logic in k8s v1.13, switch to use k8s attach-detach controller to do attach/detach disk retry and clean vm cache after every disk operation, this issue is proved to be fixed in our disk attach/detach stress test and also verified in customer env: +- PR [remove retry operation on attach/detach azure disk in azure cloud provider](https://github.com/kubernetes/kubernetes/pull/70568) +- PR [fix azure disk attach/detach failed forever issue](https://github.com/kubernetes/kubernetes/pull/71377) +- PR [fix detach azure disk issue due to dirty cache](https://github.com/kubernetes/kubernetes/pull/71495) + + +| k8s version | fixed version | +| ---- | ---- | +| v1.9 | issue introduced in v1.9.2, no cherry-pick fix allowed| +| v1.10 | 1.10.12 | +| v1.11 | 1.11.6 | +| v1.12 | 1.12.4 | +| v1.13 | no such issue | + +**Work around**: + - if there is attach disk failure for long time, restart controller manager may work + - if there is disk not detached for long time, detach that disk manually + +**Related issues** + - [Multi Attach Error](https://github.com/Azure/AKS/issues/477) + +## 15. azure disk could be not detached forever + +**Issue details**: + +In some condition when first detach azure disk operation failed, it won't retry and the azure disk would be still attached to the original VM node. + +Following error may occur when move one disk from one node to another(keyword: `ConflictingUserInput`): +``` +[Warning] AttachVolume.Attach failed for volume “pvc-7b7976d7-3a46-11e9-93d5-dee1946e6ce9” : Attach volume “kubernetes-dynamic-pvc-7b7976d7-3a46-11e9-93d5-dee1946e6ce9" to instance “/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/aks-agentpool-57634498-0” failed with compute.VirtualMachinesClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status= Code=“ConflictingUserInput” Message=“Disk ‘/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/disks/kubernetes-dynamic-pvc-7b7976d7-3a46-11e9-93d5-dee1946e6ce9’ cannot be attached as the disk is already owned by VM ‘/subscriptions/XXX/resourceGroups/XXX/providers/Microsoft.Compute/virtualMachines/aks-agentpool-57634498-1’.” +``` + +**Fix** + +We added retry logic for detach azure disk: +- PR [add retry for detach azure disk](https://github.com/kubernetes/kubernetes/pull/74398) + +| k8s version | fixed version | +| ---- | ---- | +| v1.10 | N/A | +| v1.11 | 1.11.9 | +| v1.12 | 1.12.7 | +| v1.13 | 1.13.4 | +| v1.14 | 1.14.0 | +| v1.15 | 1.15.0 | + +**Work around**: + - if there is disk not detached for long time, detach that disk manually + +## 16. potential race condition issue due to detach disk failure retry + +**Issue details**: + +In some error condition when detach azure disk failed, azure cloud provider will retry 6 times at most with exponential backoff, it will hold the data disk list for about 3 minutes with a node level lock, and in that time period, if customer update data disk list manually (e.g. need manual operationto attach/detach another disk since there is attach/detach error, ) , the data disk list will be obsolete(dirty data), then weird VM status happens, e.g. attach a non-existing disk, we should split those retry operations, every retry should get a fresh data disk list in the beginning. + +**Fix** + +Following PR refined detach azure disk retry operation, make every detach azure disk operation in a standalone function +- PR [fix detach azure disk back off issue which has too big lock in failure retry condition](https://github.com/kubernetes/kubernetes/pull/76573) +- PR [fix azure disk list corruption issue](https://github.com/kubernetes/kubernetes/pull/77187) + +| k8s version | fixed version | +| ---- | ---- | +| v1.10 | N/A | +| v1.11 | no fix | +| v1.12 | 1.12.9 | +| v1.13 | 1.13.6 | +| v1.14 | 1.14.2 | +| v1.15 | 1.15.0 | + +**Work around**: + +Detach all the non-existing disks from VM (could do that in azure portal by bulk update) + > Detaching disk one by one using cli may fail since they are already non-existing disks. + +## 17. very slow disk attach/detach issue when disk num is large + +**Issue details**: + +We hit very slow disk attach/detach issue when disk num is large(> 10 disks on one VM) + +**Fix** + +Azure disk team are fixing this issue. + +**Work around**: + +No workaround. + +## 18. detach azure disk make VM run into a limbo state + +**Issue details**: + +In some corner condition, detach azure disk would sometimes make VM run into a limbo state + +**Fix** + +Following two PRs would fix this issue by retry update VM if detach disk partially fail: + - [fix azure retry issue when return 2XX with error](https://github.com/kubernetes/kubernetes/pull/78298) + - [fix: retry detach azure disk issue](https://github.com/kubernetes/kubernetes/pull/78700) + +| k8s version | fixed version | +| ---- | ---- | +| v1.11 | no fix | +| v1.12 | 1.12.10 | +| v1.13 | 1.13.8 | +| v1.14 | 1.14.4 | +| v1.15 | 1.15.0 | + +**Work around**: + +Update VM status manually would solve the problem: + - Update Availability Set VM + ``` + az vm update -n -g + ``` + - Update Scale Set VM + ``` + az vmss update-instances -g --name --instance-id + ``` + +## 19. disk attach/detach self-healing on VMAS + +**Issue details**: +There could be disk detach failure due to many reasons(e.g. disk RP busy, controller manager crash, etc.), and it would fail when attach one disk to other node if that disk is still attached to the old node, user needs to manually detach disk in problem in the before, with this fix, azure cloud provider would check and detach this disk if it's already attached to the other node, that's like self-healing. This PR could fix lots of such disk attachment issue. + +**Fix** + +Following PR would first check whether current disk is already attached to other node, if so, it would trigger a dangling error and k8s controller would detach disk first, and then do the attach volume operation. + +This PR would also fix a "disk not found" issue when detach azure disk due to disk URI case sensitive case, error logs are like following(without this PR): +``` +azure_controller_standard.go:134] detach azure disk: disk not found, diskURI: /subscriptions/xxx/resourceGroups/andy-mg1160alpha3/providers/Microsoft.Compute/disks/xxx-dynamic-pvc-41a31580-f5b9-4f08-b0ea-0adcba15b6db +``` +**Fix** + - Fix on VMAS + - [fix: detach azure disk issue using dangling error](https://github.com/kubernetes/kubernetes/pull/81266) + - [fix: azure disk name matching issue](https://github.com/kubernetes/kubernetes/pull/81720) + +| k8s version | fixed version | +| ---- | ---- | +| v1.12 | no fix | +| v1.13 | 1.13.11 | +| v1.14 | 1.14.7 | +| v1.15 | 1.15.4 | +| v1.15 | 1.16.0 | + + - Fix on VMSS + - [fix: azure disk dangling attach issue on VMSS which would cause API throttling](https://github.com/kubernetes/kubernetes/pull/90749) + +| k8s version | fixed version | +| ---- | ---- | +| v1.15 | no fix | +| v1.16 | 1.16.9 | +| v1.17 | 1.17.6 | +| v1.18 | 1.18.3 | +| v1.19 | 1.19.0 | + +**Work around**: + +manually detach disk in problem and wait for disk attachment happen automatically + +## 20. azure disk detach failure if node not exists + +**Issue details**: +If a node with a Azure Disk attached is deleted (before the volume is detached), subsequent attempts by the attach/detach controller to detach it continuously fail, and prevent the controller from attaching the volume to another node. + +**Fix** + + - [fix: azure disk detach failure if node not exists](https://github.com/kubernetes/kubernetes/pull/82640) + +| k8s version | fixed version | +| ---- | ---- | +| v1.12 | no fix | +| v1.13 | 1.13.9 | +| v1.14 | 1.14.8 | +| v1.15 | 1.15.5 | +| v1.16 | 1.16.1 | +| v1.16 | 1.17.0 | + +**Work around**: + +Restart kube-controller-manager on master node. + +## 21. invalid disk URI error + +**Issue details**: + +When user use an existing disk in static provisioning, may hit following error: +``` +AttachVolume.Attach failed for volume "azure" : invalid disk URI: /subscriptions/xxx/resourcegroups/xxx/providers/Microsoft.Compute/disks/Test_Resize_1/” +``` + + +**Fix** + + - [fix: make azure disk URI as case insensitive](https://github.com/kubernetes/kubernetes/pull/79020) + +| k8s version | fixed version | +| ---- | ---- | +| v1.13 | no fix | +| v1.14 | 1.14.9 | +| v1.15 | 1.15.6 | +| v1.16 | 1.16.0 | +| v1.17 | 1.17.0 | + +**Work around**: + +Use `resourceGroups` instead of `resourcegroups` in disk PV configuration + +## 22. vmss dirty cache issue + +**Issue details**: + +clean vmss cache should happen after disk attach/detach operation, now it's before those operations, which would lead to dirty cache. +since update operation may cost 30s or more, and at that time period, if there is another get vmss operation, it would get the old data disk list + + - [VMSS disk attach/detach issues w/ v1.13.12, v1.14.8, v1.15.5, v1.16.2](https://github.com/Azure/aks-engine/issues/2312) + - [Disk attachment/mounting problems, all pods with PVCs stuck in ContainerCreating](https://github.com/Azure/AKS/issues/1278) + +**Fix** + + - [fix vmss dirty cache issue](https://github.com/kubernetes/kubernetes/pull/85158) + +| k8s version | fixed version | notes | +| ---- | ---- | ---- | +| v1.13 | no fix | regression since 1.13.12 (hotfixed in AKS release) | +| v1.14 | 1.14.10 | regression only in 1.14.8, 1.14.9 (hotfixed in AKS release) | +| v1.15 | 1.15.7 | regression only in 1.15.5, 1.15.6 (hotfixed in AKS release) | +| v1.16 | 1.16.4 | regression only in 1.16.2, 1.16.3 (hotfixed in AKS release) | +| v1.17 | 1.17.0 | | + +**Work around**: + +Detach disk in problem manually + +## 23. race condition when delete disk right after attach disk + +**Issue details**: + +There is condition that attach and delete disk happens in same time, azure CRP don't check such race condition + + - [should not delete an azure disk when that disk is being attached](https://github.com/kubernetes/kubernetes/issues/82714) + +**Fix** + + - [fix race condition when delete azure disk right after attach azure disk](https://github.com/kubernetes/kubernetes/pull/84917) + +| k8s version | fixed version | notes | +| ---- | ---- | ---- | +| v1.13 | no fix | hotfixed in AKS release since 1.13.12 | +| v1.14 | 1.14.10 | hotfixed in AKS release in 1.14.8, 1.14.9 | +| v1.15 | 1.15.7 | hotfixed in AKS release in 1.15.5, 1.15.6 | +| v1.16 | 1.16.4 | hotfixed in AKS release in 1.16.2, 1.16.3 | +| v1.17 | 1.17.0 | | + +**Work around**: + +Detach disk in problem manually + +## 24. attach disk costs 10min + +**Issue details**: + +PR [Fix aggressive VM calls for Azure VMSS](https://github.com/kubernetes/kubernetes/pull/83102) change getVMSS cache TTL from 1min to 10min, getVMAS cache TTL from 5min to 10min, that will cause error `WaitForAttach ... Cannot find Lun for disk`, and it would make attach disk operation costs 10min on VMSS and 15min on VMAS, detailed error would be like following: +``` +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Scheduled 29m default-scheduler Successfully assigned authentication/authentication-mssql-statefulset-0 to aks-nodepool1-29122124-vmss000004 + Normal SuccessfulAttachVolume 28m attachdetach-controller AttachVolume.Attach succeeded for volume "pvc-8d9f0ade-1825-11ea-83a0-22ced17d4a3d" + Warning FailedMount 23m (x10 over 27m) kubelet, aks-nodepool1-29122124-vmss000004 MountVolume.WaitForAttach failed for volume "pvc-8d9f0ade-1825-11ea-83a0-22ced17d4a3d" : Cannot find Lun for disk kubernetes-dynamic-pvc-8d9f0ade-1825-11ea-83a0-22ced17d4a3d + Warning FailedMount 23m (x3 over 27m) kubelet, aks-nodepool1-29122124-vmss000004 Unable to mount volumes for pod "authentication-mssql-statefulset-0_authentication(8df467e7-1825-11ea-83a0-22ced17d4a3d)": timeout expired waiting for volumes to attach or mount for pod "authentication"/"authentication-mssql-statefulset-0". list of unmounted volumes=[authentication-mssql-persistent-data-storage]. list of unattached volumes=[authentication-mssql-persistent-data-storage default-token-b7spv] + Normal Pulled 21m kubelet, aks-nodepool1-29122124-vmss000004 Container image "mcr.microsoft.com/mssql/server:2019-CTP3.2-ubuntu" already present on machine + Normal Created 21m kubelet, aks-nodepool1-29122124-vmss000004 Created container authentication-mssql + Normal Started 21m kubelet, aks-nodepool1-29122124-vmss000004 Started container authentication-mssql +``` + +This slow disk attachment issue only exists on `1.13.12+`, `1.14.8+`, fortunately, from k8s 1.15.0, this issue won't happen, since getDiskLUN logic has already been refactored (already has PR:[fix azure disk lun error](https://github.com/kubernetes/kubernetes/pull/77912), won't depend on getVMSS operation to get disk LUN. + +**Relate issues**: + - [GetAzureDiskLun sometimes costs 10min which is too long time](https://github.com/kubernetes/kubernetes/issues/69262#issuecomment-562567413) + +**Fix** + + - [fix azure disk lun error](https://github.com/kubernetes/kubernetes/pull/77912) + +| k8s version | fixed version | notes | +| ---- | ---- | ---- | +| v1.13 | no fix | need to hotfix in AKS release since 1.13.12 (slow disk attachment exists on `1.13.12+`) | +| v1.14 | in cherry-pick | need to hotfix in AKS release in 1.14.8, 1.14.9 (slow disk attachment exists on `1.14.8+`) | +| v1.15 | 1.15.0 | | +| v1.16 | 1.16.0 | | + +**Work around**: + +Wait for about 10min or 15min, `MountVolume.WaitForAttach` operation would retry and would finally succeed + +## 25. Multi-Attach error + +**Issue details**: + +If two pods on different nodes are using same disk PVC(this issue may also happen when doing rollingUpdate in Deployment using one replica), would probably hit following error: +``` +Events: +Warning FailedAttachVolume 9m attachdetach-controller Multi-Attach error for volume "pvc-fc0bed38-48bf-43f1-a7e4-255eef48ffb9" Volume is already used by pod(s) sqlserver3-5b8449449-5chzx +Warning FailedMount 42s (x4 over 7m) kubelet, aks-nodepool1-15915763-vmss000001 Unable to mount volumes for pod "sqlserver3-55754785bb-jjr6d_default(55381f38-9640-43a9-888d-096387cbb780)": timeout expired waiting for volumes to attach or mount for pod "default"/"sqlserver3-55754785bb-jjr6d". list of unmounted volumes=[mssqldb]. list of unattached volumes=[mssqldb default-token-q7cw9] +``` + +The above issue is upstream issue([detailed error code](https://github.com/kubernetes/kubernetes/blob/20c265fef0741dd71a66480e35bd69f18351daea/pkg/controller/volume/attachdetach/reconciler/reconciler.go#L351)), it could be due to following reasons: + - two pods are using same disk PVC, this issue could happen even using `Deployment` with one replica(see below workaround) + - one node is in Shutdown(deallocated) state, this is by design now and there is on-going upstream work to fix this issue + - [Propose to taint node "shutdown" condition](https://github.com/kubernetes/kubernetes/issues/58635) + - [add node shutdown KEP](https://github.com/kubernetes/enhancements/pull/1116) + > - workaround: user could use set `terminationGracePeriodSeconds: 0` in deployment or `kubectl delete pod PODNAME --grace-period=0 --force` to delete pod on the deallocated node + > - Azure cloud provider solution: delete shutdown node(in `InstanceExistsByProviderID`) like what [other cloud provider does today](https://github.com/kubernetes/kubernetes/blob/d8febccacfc9d51a017be9531247689e0e36df04/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go#L1623-L1627), while it may lead to other problem(e.g. node label loss), see details: [Common handling of stopped instances across cloud providers. +](https://github.com/kubernetes/kubernetes/issues/46442) + +since azure disk PVC could not be attached to one node. + +**Relate issues**: + - [Trouble attaching volume](https://github.com/Azure/AKS/issues/884#issuecomment-571165826) + +**Work around**: + +When using disk PVC config in deployment, `maxSurge: 0` could make sure there would not be no more than two pods in `Running/ContainerCreating` state when doing rollingUpdate: +``` +template: +... + strategy: + rollingUpdate: + maxSurge: 0 + maxUnavailable: 1 + type: RollingUpdate +``` + +Refer to [Rolling Updates with Kubernetes Deployments](https://tachingchen.com/blog/kubernetes-rolling-update-with-deployment/) for more detailed rollingUpdate config, and you could find `maxSurge: 0` setting example [here](https://github.com/andyzhangx/demo/blob/c3199932c4c00ca1095481e845642a0ec4bda598/linux/azuredisk/attach-stress-test/deployment/deployment-azuredisk1.yaml#L45-L49) + +**Note** + + - error messages: + - `Multi-Attach error for volume "pvc-e9b72e86-129a-11ea-9a02-9abdbf393c78" Volume is already used by pod(s)` + +two pods are using same disk PVC, this issue could happen even using `Deployment` with one replica, check detailed explanation and workaround here with above explanation + + - `Multi-Attach error for volume "pvc-0d7740b9-3a43-11e9-93d5-dee1946e6ce9" Volume is already exclusively attached to one node and can't be attached to another` + +This could be a transient error when move volume from one node to another, use following command to find attached node: +```console +kubectl get no -o yaml | grep volumesAttached -A 15 | grep pvc-0d7740b9-3a43-11e9-93d5-dee1946e6ce9 -B 10 -A 15 +``` + +related code: [reportMultiAttachError](https://github.com/kubernetes/kubernetes/blob/36e40fb850293076b415ae3d376f5f81dc897105/pkg/controller/volume/attachdetach/reconciler/reconciler.go#L300) + +## 26. attached non-existing disk volume on agent node + +**Issue details**: + +There is little possibility that attach/detach disk and disk deletion happened in same time, that would cause race condition. This PR add remediation when attach/detach disk, if returned 404 error, it will filter out all non-existing disks and try attach/detach operation again. + +**Fix** + + - [fix: add remediation in azure disk attach/detach](https://github.com/kubernetes/kubernetes/pull/88444) + - [fix: azure disk remediation issue](https://github.com/kubernetes/kubernetes/pull/88620) + +| k8s version | fixed version | +| ---- | ---- | +| v1.14 | no fix | +| v1.15 | 1.15.11 | +| v1.16 | 1.16.8 | +| v1.17 | 1.17.4 | +| v1.18 | 1.18.0 | + +**Work around**: + +Detach disk in problem manually + +## 27. failed to get azure instance id for node (not a vmss instance) + +**Issue details**: + +[PR#81266](https://github.com/kubernetes/kubernetes/pull/81266) does not convert the VMSS node name which causes error like this: +``` +failed to get azure instance id for node \"k8s-agentpool1-32474172-vmss_1216\" (not a vmss instance) +``` +That will make dangling attach return error, and k8s volume attach/detach controller will getVmssInstance, and since the nodeName is in an incorrect format, it will always clean vmss cache if node not found, thus incur a get vmss API call storm. + +**Fix** + + - [fix: azure disk dangling attach issue on VMSS which would cause API throttling](https://github.com/kubernetes/kubernetes/pull/90749) + +| k8s version | fixed version | +| ---- | ---- | +| v1.14 | only hotfixed with image `mcr.microsoft.com/oss/kubernetes/hyperkube:v1.14.8-hotfix.20200529.1` | +| v1.15 | only hotfixed with image `mcr.microsoft.com/oss/kubernetes/hyperkube:v1.15.11-hotfix.20200529.1`, `mcr.microsoft.com/oss/kubernetes/hyperkube:v1.15.12-hotfix.20200603` | +| v1.16 | 1.16.10 (also hotfixed with image `mcr.microsoft.com/oss/kubernetes/hyperkube:v1.16.9-hotfix.20200529.1`) | +| v1.17 | 1.17.6 | +| v1.18 | 1.18.3 | +| v1.19 | 1.19.0 | + +**Work around**: + +1. Stop kube-controller-manager +2. detach disk in problem from that vmss node manually +```console +az vmss disk detach -g --name --instance-id --lun number +``` + +e.g. per below logs, +``` +E0501 11:15:40.981758 1 attacher.go:277] failed to detach azure disk "/subscriptions/xxx/resourceGroups/rg/providers/Microsoft.Compute/disks/rg-dynamic-pvc-dc282131-b669-47db-8d57-cb3b9789ac3e", err failed to get azure instance id for node "k8s-agentpool1-32474172-vmss_1216" (not a vmss instance) +``` + - find lun number of disk `rg-dynamic-pvc-dc282131-b669-47db-8d57-cb3b9789ac3e`: +```console +az vmss show -g rg --name k8s-agentpool1-32474172-vmss --instance-id 1216 +``` + - detach vmss disk manually: +```console +az vmss disk detach -g rg --name k8s-agentpool1-32474172-vmss --instance-id 1216 --lun number +``` +3. Start kube-controller-manager diff --git a/content/en/FAQ/known-issues/azurefile.md b/content/en/FAQ/known-issues/azurefile.md new file mode 100644 index 0000000000..0eb5c0634b --- /dev/null +++ b/content/en/FAQ/known-issues/azurefile.md @@ -0,0 +1,382 @@ +--- +title: "AzureFile CSI Driver Known Issues" +linkTitle: "AzureFile" +type: docs +--- + + + +- [azure file plugin known issues](#azure-file-plugin-known-issues) + - [Recommended stable version for azure file](#recommended-stable-version-for-azure-file) + - [1. azure file mountOptions setting](#1-azure-file-mountoptions-setting) + - [file/dir mode setting:](#filedir-mode-setting) + - [other useful `mountOptions` setting:](#other-useful-mountoptions-setting) + - [2. permission issue of azure file dynamic provision in acs-engine](#2-permission-issue-of-azure-file-dynamic-provision-in-acs-engine) + - [3. Azure file support on Sovereign Cloud](#3-azure-file-support-on-sovereign-cloud) + - [4. azure file dynamic provision failed due to cluster name length issue](#4-azure-file-dynamic-provision-failed-due-to-cluster-name-length-issue) + - [5. azure file dynamic provision failed due to no storage account in current resource group](#5-azure-file-dynamic-provision-failed-due-to-no-storage-account-in-current-resource-group) + - [6. azure file plugin on Windows does not work after node restart](#6-azure-file-plugin-on-windows-does-not-work-after-node-restart) + - [7. file permission could not be changed using azure file, e.g. postgresql](#7-file-permission-could-not-be-changed-using-azure-file-eg-postgresql) + - [8. Could not delete pod with AzureFile volume if storage account key changed](#8-could-not-delete-pod-with-azurefile-volume-if-storage-account-key-changed) + - [9. Long latency when handling lots of small files](#9-long-latency-compared-to-disk-when-handling-lots-of-small-files) + - [10. `allow access from selected network` setting on storage account will break azure file dynamic provisioning](#10-allow-access-from-selected-network-setting-on-storage-account-will-break-azure-file-dynamic-provisioning) + - [11. azure file remount on Windows in same node would fail](#11-azure-file-remount-on-windows-in-same-node-would-fail) + - [12. update azure file secret if azure storage account key changed](#12-update-azure-file-secret-if-azure-storage-account-key-changed) + - [13. Create Azure Files PV AuthorizationFailure when using advanced networking](#13-create-azure-files-pv-authorizationfailure-when-using-advanced-networking) + - [14. initial delay(5s) in mounting azure file](#14-initial-delay5s-in-mounting-azure-file) + + +## Recommended stable version for azure file + +| k8s version | stable version | +| ---- | ---- | +| v1.7 | 1.7.14+ | +| v1.8 | 1.8.11+ | +| v1.9 | 1.9.7+ | +| v1.10 | 1.10.2+ | +| v1.11 | 1.11.8+ | +| v1.12 | 1.12.6+ | +| v1.13 | 1.13.4+ | +| v1.14 | 1.14.0+ | + +## 1. azure file mountOptions setting + +### file/dir mode setting: + +**Issue details**: + +- `fileMode`, `dirMode` value would be different in different versions, in latest master branch, it's `0755` by default, to set a different value, follow this [mount options support of azure file](https://github.com/andyzhangx/Demo/blob/master/linux/azurefile/azurefile-mountoptions.md) (available from v1.8.5). +- For version v1.8.0-v1.8.4, since [mount options support of azure file](https://github.com/andyzhangx/Demo/blob/master/linux/azurefile/azurefile-mountoptions.md) is not available, as a workaround, [securityContext](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) could be specified for the pod, [detailed pod example](https://github.com/andyzhangx/Demo/blob/master/linux/azurefile/demo-azurefile-securitycontext.yaml) + +```yaml + securityContext: + runAsUser: XXX + fsGroup: XXX +``` + +| version | `fileMode`, `dirMode` value | +| ---- | ---- | +| v1.6.x, v1.7.x | 0777 | +| v1.8.0 ~ v1.8.5, v1.9.0 | 0700 | +| v1.8.6 or later, v1.9.1 ~ v1.10.9, v1.11.0 ~ v1.11.3, v1.12.0 ~ v.12.1 | 0755 | +| v1.10.10 or later | 0777 | +| v1.11.4 or later | 0777 | +| v1.12.2 or later | 0777 | +| v1.13.x | 0777 | + +### other useful `mountOptions` setting: + +- `mfsymlinks`: make azure file(cifs) mount supports symbolic link +- `nobrl`: Do not send byte range lock requests to the server. This is necessary for certain applications that break with cifs style mandatory byte range locks (and most cifs servers do not yet support requesting advisory byte range locks). Error message could be like following: + +```sh +Error: SQLITE_BUSY: database is locked +``` + +**Related issues** + +- [azureFile volume mode too strict for container with non root user](https://github.com/kubernetes/kubernetes/issues/54610) +- [Unable to connect to SQL-lite db mounted on AzureFile/AzureDisks [SQLITE_BUSY: database is locked]](https://github.com/kubernetes/kubernetes/issues/59755) +- [Allow nobrl parameter like docker to use sqlite over network drive](https://github.com/kubernetes/kubernetes/issues/61767) +- [Error to deploy mongo with azure file storage](https://github.com/kubernetes/kubernetes/issues/58308) + +## 2. permission issue of azure file dynamic provision in acs-engine + +**Issue details**: + +From acs-engine v0.12.0, RBAC is enabled, azure file dynamic provision does not work from this version + +**error logs**: + +```sh +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Warning ProvisioningFailed 8s persistentvolume-controller Failed to provision volume with StorageClass "azurefile": Couldn't create secret secrets is forbidden: User "system:serviceaccount:kube-syste +m:persistent-volume-binder" cannot create secrets in the namespace "default" + Warning ProvisioningFailed 8s persistentvolume-controller Failed to provision volume with StorageClass "azurefile": failed to find a matching storage account +``` + +**Related issues** + +- [azure file PVC need secrets create permission for persistent-volume-binder](https://github.com/kubernetes/kubernetes/issues/59543) + +**Workaround**: + +- Add a ClusterRole and ClusterRoleBinding for [azure file dynamic provision](https://github.com/andyzhangx/Demo/tree/master/linux/azurefile#dynamic-provisioning-for-azure-file-in-linux-support-from-v170) + +```sh +kubectl create -f https://raw.githubusercontent.com/andyzhangx/Demo/master/aks-engine/rbac/azure-cloud-provider-deployment.yaml +``` +- delete the original PVC and recreate PVC + +**Fix** + +- PR in acs-engine: [fix azure file dynamic provision permission issue](https://github.com/Azure/acs-engine/pull/2238) + +## 3. Azure file support on Sovereign Cloud + +[Azure file on Sovereign Cloud](https://github.com/kubernetes/kubernetes/pull/48460) is supported from v1.7.11, v1.8.0 + +## 4. azure file dynamic provision failed due to cluster name length issue + +**Issue details**: +k8s cluster name length must be less than 16 characters, otherwise following error will be received when creating dynamic privisioning azure file pvc, this bug exists in [v1.7.0, v1.7.10]: + > Note: check `cluster-name` by running `grep cluster-name /etc/kubernetes/manifests/kube-controller-manager.yaml` on master node + +```sh +persistentvolume-controller Warning ProvisioningFailed Failed to provision volume with StorageClass "azurefile": failed to find a matching storage account +``` + +**Fix** + +- PR [Fix share name generation in azure file provisioner](https://github.com/kubernetes/kubernetes/pull/48326) + +| k8s version | fixed version | +| ---- | ---- | +| v1.7 | 1.7.11 | +| v1.8 | 1.8.0 | +| v1.9 | 1.9.0 | + +## 5. azure file dynamic provision failed due to no storage account in current resource group + +**Issue details**: + +When create an azure file PVC, there will be error if there is no storage account in current resource group, error info would be like following: + +```sh +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Warning ProvisioningFailed 10s (x5 over 1m) persistentvolume-controller Failed to provision volume with StorageClass "azurefile-premium": failed to find a matching storage account +``` + +**Related issues** + +- [failed to create azure file pvc if there is no storage account in current resource group](https://github.com/kubernetes/kubernetes/issues/56556) + +**Workaround**: +specify a storage account in azure file dynamic provision, you should make sure the specified storage account is in the same resource group as your k8s cluster. In AKS, the specified storage account should be in `shadow resource group`(naming as `MC_+{RESOUCE-GROUP-NAME}+{CLUSTER-NAME}+{REGION}`) which contains all resources of your aks cluster. + +**Fix** + +- PR [fix the create azure file pvc failure if there is no storage account in current resource group](https://github.com/kubernetes/kubernetes/pull/56557) + +| k8s version | fixed version | +| ---- | ---- | +| v1.7 | 1.7.14 | +| v1.8 | 1.8.9 | +| v1.9 | 1.9.4 | +| v1.10 | 1.10.0 | + +## 6. azure file plugin on Windows does not work after node restart + +**Issue details**: +azure file plugin on Windows does not work after node restart, this is due to `New-SmbGlobalMapping` cmdlet has lost account name/key after reboot + +**Related issues** + +- [azure file plugin on Windows does not work after node restart](https://github.com/kubernetes/kubernetes/issues/60624) + +**Workaround**: + +- delete the original pod with azure file mount +- create the pod again + +**Fix** + +- PR [fix azure file plugin failure issue on Windows after node restart](https://github.com/kubernetes/kubernetes/pull/60625) + +| k8s version | fixed version | +| ---- | ---- | +| v1.7 | not support in upstream | +| v1.8 | 1.8.10 | +| v1.9 | 1.9.7 | +| v1.10 | 1.10.0 | + +## 7. file permission could not be changed using azure file, e.g. postgresql + +**error logs** when running postgresql on azure file plugin: +``` +initdb: could not change permissions of directory "/var/lib/postgresql/data": Operation not permitted +fixing permissions on existing directory /var/lib/postgresql/data +``` + +**Issue details**: +azure file plugin is using cifs/SMB protocol, file/dir permission could not be changed after mounting + +**Workaround**: + +Use `mountOptions` with `dir_mode`, `file_mode` set as `0777`: + +```yaml +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + name: azurefile +provisioner: kubernetes.io/azure-file +mountOptions: + - dir_mode=0777 + - file_mode=0777 +``` +> follow detailed config [here](../linux/azurefile/postgresql) + +**Related issues** +[Persistent Volume Claim permissions](https://github.com/Azure/AKS/issues/225) + +## 8. Could not delete pod with AzureFile volume if storage account key changed + +**Issue details**: + +- kubelet fails to umount azurefile volume when there is azure file connection, below is an easy repro: + - create a pod with azure file mount + - regenerate the account key of the storage account + - delete the pod, and the pod will never be deleted due to `UnmountVolume.TearDown` error + +**error logs** + +```sh +nestedpendingoperations.go:263] Operation for "\"kubernetes.io/azure-file/cc5c86cd-422a-11e8-91d7-000d3a03ee84-myvolume\" (\"cc5c86cd-422a-11e8-91d7-000d3a03ee84\")" failed. No retries permitted until 2018-04-17 10:35:40.240272223 +0000 UTC m=+1185722.391925424 (durationBeforeRetry 500ms). Error: "UnmountVolume.TearDown failed for volume \"myvolume\" (UniqueName: \"kubernetes.io/azure-file/cc5c86cd-422a-11e8-91d7-000d3a03ee84-myvolume\") pod \"cc5c86cd-422a-11e8-91d7-000d3a03ee84\" (UID: \"cc5c86cd-422a-11e8-91d7-000d3a03ee84\") : Error checking if path exists: stat /var/lib/kubelet/pods/cc5c86cd-422a-11e8-91d7-000d3a03ee84/volumes/kubernetes.io~azure-file/myvolume: resource temporarily unavailable +... +kubelet_volumes.go:128] Orphaned pod "380b02f3-422b-11e8-91d7-000d3a03ee84" found, but volume paths are still present on disk +``` + +**Workaround**: + +manually umount the azure file mount path on the agent node and then the pod will be deleted right after that + +```sh +sudo umount /var/lib/kubelet/pods/cc5c86cd-422a-11e8-91d7-000d3a03ee84/volumes/kubernetes.io~azure-file/myvolume +``` + +**Fix** + +- PR [Fix bug:Kubelet failure to umount mount points](https://github.com/kubernetes/kubernetes/pull/52324) + +| k8s version | fixed version | +| ---- | ---- | +| v1.7 | no fix(no cherry-pick fix is allowed) | +| v1.8 | 1.8.8 | +| v1.9 | 1.9.7 | +| v1.10 | 1.10.0 | + +**Related issues** + +- [UnmountVolume.TearDown fails for AzureFile volume, locks up node](https://github.com/kubernetes/kubernetes/issues/62824) +- [Kubelet failure to umount glusterfs mount points](https://github.com/kubernetes/kubernetes/issues/41141) + +## 9. Long latency compared to disk when handling lots of small files + +**Related issues** + - [`azurefile` is very slow](https://github.com/Azure/AKS/issues/223) + - [Can't roll out Wordpress chart with PV on AzureFile](https://github.com/helm/charts/issues/5751) + + + ## 10. `allow access from selected network` setting on storage account will break azure file dynamic provisioning + When set `allow access from selected network` on storage account and will get following error when creating a file share by k8s: + ``` + persistentvolume-controller (combined from similar events): Failed to provision volume with StorageClass "azurefile": failed to create share kubernetes-dynamic-pvc-xxx in account xxx: failed to create file share, err: storage: service returned error: StatusCode=403, ErrorCode=AuthorizationFailure, ErrorMessage=This request is not authorized to perform this operation. + ``` + +That's because k8s `persistentvolume-controller` is on master node which is not in the selected network, and that's why it could not create file share on that storage account. + +**Workaround**: + +use azure file static provisioning instead + - create azure file share in advance, and then provide storage account and file share name in k8s, here is an [example](https://docs.microsoft.com/en-us/azure/aks/azure-files-volume) + + **Related issues** + - [Azure Files PV AuthorizationFailure when using advanced networking ](https://github.com/Azure/AKS/issues/804) + +## 11. azure file remount on Windows in same node would fail + +**Issue details**: + +If user delete a pod with azure file mount in deployment and it would probably schedule a pod on same node, azure file mount will fail since `New-SmbGlobalMapping` command would fail if file share is already mounted on the node. + +**error logs** + +Error logs would be like following: +``` +E0118 08:15:52.041014 2112 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/azure-file/42c0ea39-1af9-11e9-8941-000d3af95268-pvc-d7e1b5f9-1af3-11e9-8941-000d3af95268\" (\"42c0ea39-1af9-11e9-8941-000d3af95268\")" failed. No retries permitted until 2019-01-18 08:15:53.0410149 +0000 GMT m=+732.446642701 (durationBeforeRetry 1s). Error: "MountVolume.SetUp failed for volume \"pvc-d7e1b5f9-1af3-11e9-8941-000d3af95268\" (UniqueName: \"kubernetes.io/azure-file/42c0ea39-1af9-11e9-8941-000d3af95268-pvc-d7e1b5f9-1af3-11e9-8941-000d3af95268\") pod \"deployment-azurefile-697f98d559-6zrlf\" (UID: \"42c0ea39-1af9-11e9-8941-000d3af95268\") : azureMount: SmbGlobalMapping failed: exit status 1, only SMB mount is supported now, output: \"New-SmbGlobalMapping : Generic failure \\r\\nAt line:1 char:190\\r\\n+ ... , $PWord;New-SmbGlobalMapping -RemotePath $Env:smbremotepath -Cred ...\\r\\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\r\\n + CategoryInfo : NotSpecified: (MSFT_SmbGlobalMapping:ROOT/Microsoft/...mbGlobalMapping) [New-SmbGlobalMa \\r\\n pping], CimException\\r\\n + FullyQualifiedErrorId : HRESULT 0x80041001,New-SmbGlobalMapping\\r\\n \\r\\n\"" +``` + +**Fix** + +- PR [fix smb remount issue on Windows](https://github.com/kubernetes/kubernetes/pull/73661) + +| k8s version | fixed version | +| ---- | ---- | +| v1.10 | no fix | +| v1.11 | 1.11.8 | +| v1.12 | 1.12.6 | +| v1.13 | 1.13.4 | +| v1.14 | 1.14.0 | + +**Related issues** + +- [azure file remount on Windows in same node would fail](https://github.com/kubernetes/kubernetes/issues/73087) +- [Mounting volume to pods fails randomly](https://github.com/Azure/aks-engine/issues/327) + +## 12. update azure file secret if azure storage account key changed + +**Issue details**: +There would be azure file mount failure if azure storage account key changed + +**Workaround**: +User needs to update `azurestorageaccountkey` field manually in azure file secret(secret name format: `azure-storage-account-{storage-account-name}-secret` in `default` namespace): +``` +kubectl delete secret azure-storage-account-{storage-account-name}-secret +kubectl create secret generic azure-storage-account-{storage-account-name}-secret --from-literal azurestorageaccountname=... --from-literal azurestorageaccountkey="..." --type=Opaque +``` + > make sure there is no `\r` in the account name and key, here is a [failed case](https://github.com/MicrosoftDocs/azure-docs/issues/61650#issuecomment-683274588) + - delete original pod(may use `--force --grace-period=0`) and wait a few minutes for new pod retry azure file mount + +## 13. Create Azure Files PV AuthorizationFailure when using advanced networking + +**Issue details**: + +When create an azure file PV using advanced networking, user may hit following error: +``` +err: storage: service returned error: StatusCode=403, ErrorCode=AuthorizationFailure, ErrorMessage=This request is not authorized to perform this operation +``` + +Before api-version `2019-06-01`, create file share action is considered as data-path operation, since `2019-06-01`, it would be considered as control-path operation, not blocked by advanced networking any more. + +**Related issues** + - [Azure Files PV AuthorizationFailure when using advanced networking](https://github.com/Azure/AKS/issues/804) + - [Azure Files PV AuthorizationFailure when using advanced networking](https://github.com/kubernetes/kubernetes/issues/85354) + + **Fix** + +- PR [Switch to use AzureFile management SDK](https://github.com/kubernetes/kubernetes/pull/90350) + +| k8s version | fixed version | +| ---- | ---- | +| v1.18 | no fix | +| v1.19 | 1.19.0 | + +**Workaround**: + +Shut down the advanced networking when create azure file PV. + +## 14. initial delay(5s) in mounting azure file + +**Issue details**: + +When starting pods with AFS volumes, there is an initial delay of five seconds until the pod is transitioning from the "Scheduled" state. The reason for this is that currently the volume mounting happens inside a wait.Poll which will initially wait a specified interval(currently 5 seconds) before execution. This issue is introduced by PR [fix: azure file mount timeout issue](https://github.com/kubernetes/kubernetes/pull/88610) with v1.15.11+, v1.16.8+, v1.17.4+, v1.18.0+ + + **Fix** + - [initial delay(5s) when starting Pods with Azure File volumes](https://github.com/kubernetes/kubernetes/issues/93025) + + **Fix** + +- PR [fix: initial delay in mounting azure disk & file](https://github.com/kubernetes/kubernetes/pull/93052) + +| k8s version | fixed version | +| ---- | ---- | +| v1.15 | no fix | +| v1.16 | 1.16.14 | +| v1.17 | 1.17.10 | +| v1.18 | 1.18.7 | +| v1.19 | 1.19.0 | diff --git a/content/en/_index.html b/content/en/_index.html new file mode 100644 index 0000000000..59bee0a728 --- /dev/null +++ b/content/en/_index.html @@ -0,0 +1,38 @@ ++++ +title = "Cloud Provider Azure" +linkTitle = "Cloud Provider Azure" + ++++ + +{{< blocks/cover title="Cloud Provider Azure" image_anchor="center" height="full" color="primary" >}} + +An Azure implementation of the Kubernetes Cloud Provider. + +
+ }}"> + Get Started + + + Contribute + + {{< blocks/link-down color="info" >}} +
+{{< /blocks/cover >}} + +{{< blocks/section type="row" >}} + +{{% blocks/feature icon="fa-brands fa-github" title="Contributions welcome!" url="https://github.com/kubernetes-sigs/cloud-provider-azure" %}} +We do a [Pull Request](https://github.com/kubernetes-sigs/cloud-provider-azure/pulls) contributions workflow on +**GitHub**. New users +are always welcome! +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa-brands fa-slack" title="Join our slack channel!" url="blog" %}} +Please join #provider-azure in [Kubernetes slack workspace](http://slack.kubernetes.io/). +{{% /blocks/feature %}} + +{{% blocks/feature icon="fa-brands fa-blogger" title="Check out release notes!" url="blog" %}} +For announcement of latest features, etc. +{{% /blocks/feature %}} + +{{< /blocks/section >}} diff --git a/content/en/blog/_index.md b/content/en/blog/_index.md new file mode 100644 index 0000000000..6a847a6827 --- /dev/null +++ b/content/en/blog/_index.md @@ -0,0 +1,7 @@ +--- +title: "Release Notes" +linkTitle: "Release Notes" +menu: + main: + weight: 6 +--- diff --git a/content/en/blog/releases/_index.md b/content/en/blog/releases/_index.md new file mode 100644 index 0000000000..c4fdb7ec04 --- /dev/null +++ b/content/en/blog/releases/_index.md @@ -0,0 +1,5 @@ +--- +title: "Release Notes" +linkTitle: "Release Notes" +weight: 1 +--- diff --git a/content/en/blog/releases/v0.1.0.md b/content/en/blog/releases/v0.1.0.md new file mode 100644 index 0000000000..b5b4d3c3c2 --- /dev/null +++ b/content/en/blog/releases/v0.1.0.md @@ -0,0 +1,11 @@ +--- +title: "v0.1.0" +linkTitle: "v0.1.0" +date: 2019-03-26 +description: > + Cloud Provider Azure v0.1.0 +--- + +The alpha version of azure-cloud-controller-manager. Please see [docs](https://github.com/kubernetes/cloud-provider-azure/blob/master/docs/cloud-controller-manager.md) for documentation. + +The image is available at `mcr.microsoft.com/k8s/core/azure-cloud-controller-manager:v0.1.0`. diff --git a/content/en/blog/releases/v0.2.0.md b/content/en/blog/releases/v0.2.0.md new file mode 100644 index 0000000000..850ef693c2 --- /dev/null +++ b/content/en/blog/releases/v0.2.0.md @@ -0,0 +1,13 @@ +--- +title: "v0.2.0" +linkTitle: "v0.2.0" +date: 2019-06-27 +description: > + Cloud Provider Azure v0.2.0 +--- + +The alpha version of azure-cloud-controller-manager, which has upgraded Kubernetes version to v1.15.0. + +Please see [docs](https://github.com/kubernetes/cloud-provider-azure/blob/master/docs/cloud-controller-manager.md) for documentation. + +The image is available at `mcr.microsoft.com/k8s/core/azure-cloud-controller-manager:v0.2.0`. diff --git a/content/en/blog/releases/v0.3.0.md b/content/en/blog/releases/v0.3.0.md new file mode 100644 index 0000000000..db4a40feda --- /dev/null +++ b/content/en/blog/releases/v0.3.0.md @@ -0,0 +1,16 @@ +--- +title: "v0.3.0" +linkTitle: "v0.3.0" +date: 2019-09-24 +description: > + Cloud Provider Azure v0.3.0 +--- + +The alpha version of azure-cloud-controller-manager and azure-cloud-node-manager, which have upgraded Kubernetes version to v1.16. + +Please see [docs](https://github.com/kubernetes/cloud-provider-azure/blob/master/docs/cloud-controller-manager.md) for documentation. + +The image is available at + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.3.0` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.3.0` diff --git a/content/en/blog/releases/v0.4.0.md b/content/en/blog/releases/v0.4.0.md new file mode 100644 index 0000000000..338e08e1bc --- /dev/null +++ b/content/en/blog/releases/v0.4.0.md @@ -0,0 +1,16 @@ +--- +title: "v0.4.0" +linkTitle: "v0.4.0" +date: 2019-12-17 +description: > + Cloud Provider Azure v0.4.0 +--- + +The alpha version of azure-cloud-controller-manager and azure-cloud-node-manager, which have upgraded Kubernetes version to v1.17. + +Please see [docs](https://github.com/kubernetes/cloud-provider-azure/blob/master/docs/cloud-controller-manager.md) for documentation. + +The image is available at + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.4.0` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.4.0` diff --git a/content/en/blog/releases/v0.4.1.md b/content/en/blog/releases/v0.4.1.md new file mode 100644 index 0000000000..532b4c333a --- /dev/null +++ b/content/en/blog/releases/v0.4.1.md @@ -0,0 +1,14 @@ +--- +title: "v0.4.1" +linkTitle: "v0.4.1" +date: 2019-12-30 +description: > + Cloud Provider Azure v0.4.1 +--- + +The alpha version of azure-cloud-controller-manager and azure-cloud-node-manager, which fixes the node address update issues. + +The image is available at + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.4.1` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.4.1` diff --git a/content/en/blog/releases/v0.5.0.md b/content/en/blog/releases/v0.5.0.md new file mode 100644 index 0000000000..252fea6674 --- /dev/null +++ b/content/en/blog/releases/v0.5.0.md @@ -0,0 +1,16 @@ +--- +title: "v0.5.0" +linkTitle: "v0.5.0" +date: 2020-03-27 +description: > + Cloud Provider Azure v0.5.0 +--- + +The alpha version of `azure-cloud-controller-manager` and `azure-cloud-node-manager`, which have upgraded Kubernetes version to v1.18. It also adds Windows support for azure-cloud-node-manager. + +Please see [docs](https://github.com/kubernetes/cloud-provider-azure/blob/master/docs/cloud-controller-manager.md) for documentation. + +The image is available at + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.5.0` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.5.0` diff --git a/content/en/blog/releases/v0.5.1.md b/content/en/blog/releases/v0.5.1.md new file mode 100644 index 0000000000..fde3917910 --- /dev/null +++ b/content/en/blog/releases/v0.5.1.md @@ -0,0 +1,21 @@ +--- +title: "v0.5.1" +linkTitle: "v0.5.1" +date: 2020-04-27 +description: > + Cloud Provider Azure v0.5.1 +--- + +## Changes since v0.5.0 + +------- + +- Update Kubernetes vendor to adopt bug fixes from in-tree cloud provider([#330](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/330)) +- Use a service account for CCM ([#329](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/329)) +- Update images for out-of-tree examples ([#328](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/328)) +- Fix wrong init url for kubemark tests ([#327](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/327)) + +The image is available at + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.5.1` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.5.1` diff --git a/content/en/blog/releases/v0.6.0.md b/content/en/blog/releases/v0.6.0.md new file mode 100644 index 0000000000..70e16eb5b4 --- /dev/null +++ b/content/en/blog/releases/v0.6.0.md @@ -0,0 +1,27 @@ +--- +title: "v0.6.0" +linkTitle: "v0.6.0" +date: 2020-09-01 +description: > + Cloud Provider Azure v0.6.0 +--- + +## Major changes since v0.5.0 + +------- + +- Update vendor against k/k release-1.19([#385](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/385)) +- Increase the e2e test coverage for cluster autoscaler([#364](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/364)) +- Use hugo to generate doc website([#358](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/358)) +- Update E2E test related docs and script([#355](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/355)) +- Partly decouple k/k([#350](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/350)) +- Update go module against k8s.io/cloud-provider([#348](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/348)) +- Use distroless/static as base image([#333](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/333)) +- Enable running ccm e2e test in a job([#345](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/345)) + +The image is available at + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.6.0` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.6.0` + +Since v0.5.0, our docs are moved to [a dedicated website](https://kubernetes-sigs.github.io/cloud-provider-azure/) and the `docs/` directory is deprecated. diff --git a/content/en/blog/releases/v0.7.0.md b/content/en/blog/releases/v0.7.0.md new file mode 100644 index 0000000000..c008d15110 --- /dev/null +++ b/content/en/blog/releases/v0.7.0.md @@ -0,0 +1,235 @@ +--- +title: "v0.7.0" +linkTitle: "v0.7.0" +date: 2021-01-06 +description: > + Cloud Provider Azure v0.7.0 +--- + +## Major changes since v0.6.0 + +Cloud Provider Azure v0.7.0 updates Kubernetes vendor to v1.20 and moves to **beta**. The images are available at + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.7.0` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.7.0` + +## Enhancements + +- Features inherited from in-tree Azure cloud provider + - Multiple standard load balancers in the same cluster. + - Multiple load balancer typed services sharing one IP address. + - Customized load balancer health probe. + - Tagging resources managed by provider azure. +- Code improvements inherited from in-tree Azure cloud provider + - Add metrics for cloud provider operations like “EnsureLoadBalancer”. + - Improve the unit/E2E test coverage in provider azure. +- Upgrade Azure compute API version to 2020-06-30: ([#444](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/444), [@andyzhangx](https://github.com/andyzhangx)) +- Use batch operation for azure disk attach/detach: ([#453](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/453), [@andyzhangx](https://github.com/andyzhangx)) + + +## Bug Fixes + +- Fix nil VMSS name when setting service to auto mode ([#439](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/439), [@nilo19](https://github.com/nilo19)) +- Fix readyz probe ([#394](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/394), [@nilo19](https://github.com/nilo19)) +- Ignore in-cluster config when `--master` or `--kubeconfig` is set explicitly ([#397](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/397), [@nilo19](https://github.com/nilo19)) +- Support change the LB selection mode on the existing services ([#445](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/445), [@nilo19](https://github.com/nilo19)) +- Use network.Interface.VirtualMachine.ID to get the VM ([#443](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/443), [@nilo19](https://github.com/nilo19)) +- Skip the exclude LB test on multi node pool cluster ([#455](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/455), [@nilo19](https://github.com/nilo19)) + +## Cleanups + +- Duplicate the in-tree cloud provider code to the out-of-tree repo ([#433](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/433), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added + +- cloud.google.com/go/bigquery: v1.4.0 +- cloud.google.com/go/datastore: v1.1.0 +- cloud.google.com/go/firestore: v1.1.0 +- cloud.google.com/go/pubsub: v1.2.0 +- cloud.google.com/go/storage: v1.6.0 +- dmitri.shuralyov.com/gpu/mtl: 666a987 +- github.com/armon/go-metrics: [f0300d1](https://github.com/armon/go-metrics/tree/f0300d1) +- github.com/armon/go-radix: [7fddfc3](https://github.com/armon/go-radix/tree/7fddfc3) +- github.com/bketelsen/crypt: [5cbc8cc](https://github.com/bketelsen/crypt/tree/5cbc8cc) +- github.com/checkpoint-restore/go-criu/v4: [v4.1.0](https://github.com/checkpoint-restore/go-criu/v4/tree/v4.1.0) +- github.com/chzyer/logex: [v1.1.10](https://github.com/chzyer/logex/tree/v1.1.10) +- github.com/chzyer/readline: [2972be2](https://github.com/chzyer/readline/tree/2972be2) +- github.com/chzyer/test: [a1ea475](https://github.com/chzyer/test/tree/a1ea475) +- github.com/cilium/ebpf: [1c8d4c9](https://github.com/cilium/ebpf/tree/1c8d4c9) +- github.com/containerd/cgroups: [0dbf7f0](https://github.com/containerd/cgroups/tree/0dbf7f0) +- github.com/containerd/console: [v1.0.0](https://github.com/containerd/console/tree/v1.0.0) +- github.com/containerd/containerd: [v1.4.1](https://github.com/containerd/containerd/tree/v1.4.1) +- github.com/containerd/continuity: [aaeac12](https://github.com/containerd/continuity/tree/aaeac12) +- github.com/containerd/fifo: [a9fb20d](https://github.com/containerd/fifo/tree/a9fb20d) +- github.com/containerd/go-runc: [5a6d9f3](https://github.com/containerd/go-runc/tree/5a6d9f3) +- github.com/containerd/ttrpc: [v1.0.2](https://github.com/containerd/ttrpc/tree/v1.0.2) +- github.com/containerd/typeurl: [v1.0.1](https://github.com/containerd/typeurl/tree/v1.0.1) +- github.com/coreos/bbolt: [v1.3.2](https://github.com/coreos/bbolt/tree/v1.3.2) +- github.com/coreos/go-systemd/v22: [v22.1.0](https://github.com/coreos/go-systemd/v22/tree/v22.1.0) +- github.com/cyphar/filepath-securejoin: [v0.2.2](https://github.com/cyphar/filepath-securejoin/tree/v0.2.2) +- github.com/euank/go-kmsg-parser: [v2.0.0+incompatible](https://github.com/euank/go-kmsg-parser/tree/v2.0.0) +- github.com/fvbommel/sortorder: [v1.0.1](https://github.com/fvbommel/sortorder/tree/v1.0.1) +- github.com/globalsign/mgo: [eeefdec](https://github.com/globalsign/mgo/tree/eeefdec) +- github.com/go-gl/glfw/v3.3/glfw: [6f7a984](https://github.com/go-gl/glfw/v3.3/glfw/tree/6f7a984) +- github.com/go-gl/glfw: [e6da0ac](https://github.com/go-gl/glfw/tree/e6da0ac) +- github.com/godbus/dbus/v5: [v5.0.3](https://github.com/godbus/dbus/v5/tree/v5.0.3) +- github.com/gopherjs/gopherjs: [0766667](https://github.com/gopherjs/gopherjs/tree/0766667) +- github.com/gorilla/mux: [v1.8.0](https://github.com/gorilla/mux/tree/v1.8.0) +- github.com/hashicorp/consul/api: [v1.1.0](https://github.com/hashicorp/consul/api/tree/v1.1.0) +- github.com/hashicorp/consul/sdk: [v0.1.1](https://github.com/hashicorp/consul/sdk/tree/v0.1.1) +- github.com/hashicorp/errwrap: [v1.0.0](https://github.com/hashicorp/errwrap/tree/v1.0.0) +- github.com/hashicorp/go-cleanhttp: [v0.5.1](https://github.com/hashicorp/go-cleanhttp/tree/v0.5.1) +- github.com/hashicorp/go-immutable-radix: [v1.0.0](https://github.com/hashicorp/go-immutable-radix/tree/v1.0.0) +- github.com/hashicorp/go-msgpack: [v0.5.3](https://github.com/hashicorp/go-msgpack/tree/v0.5.3) +- github.com/hashicorp/go-multierror: [v1.0.0](https://github.com/hashicorp/go-multierror/tree/v1.0.0) +- github.com/hashicorp/go-rootcerts: [v1.0.0](https://github.com/hashicorp/go-rootcerts/tree/v1.0.0) +- github.com/hashicorp/go-sockaddr: [v1.0.0](https://github.com/hashicorp/go-sockaddr/tree/v1.0.0) +- github.com/hashicorp/go-uuid: [v1.0.1](https://github.com/hashicorp/go-uuid/tree/v1.0.1) +- github.com/hashicorp/go.net: [v0.0.1](https://github.com/hashicorp/go.net/tree/v0.0.1) +- github.com/hashicorp/logutils: [v1.0.0](https://github.com/hashicorp/logutils/tree/v1.0.0) +- github.com/hashicorp/mdns: [v1.0.0](https://github.com/hashicorp/mdns/tree/v1.0.0) +- github.com/hashicorp/memberlist: [v0.1.3](https://github.com/hashicorp/memberlist/tree/v0.1.3) +- github.com/hashicorp/serf: [v0.8.2](https://github.com/hashicorp/serf/tree/v0.8.2) +- github.com/ianlancetaylor/demangle: [5e5cf60](https://github.com/ianlancetaylor/demangle/tree/5e5cf60) +- github.com/jmespath/go-jmespath/internal/testify: [v1.5.1](https://github.com/jmespath/go-jmespath/internal/testify/tree/v1.5.1) +- github.com/jtolds/gls: [v4.20.0+incompatible](https://github.com/jtolds/gls/tree/v4.20.0) +- github.com/karrick/godirwalk: [v1.16.1](https://github.com/karrick/godirwalk/tree/v1.16.1) +- github.com/kr/logfmt: [b84e30a](https://github.com/kr/logfmt/tree/b84e30a) +- github.com/mindprince/gonvml: [9ebdce4](https://github.com/mindprince/gonvml/tree/9ebdce4) +- github.com/mistifyio/go-zfs: [f784269](https://github.com/mistifyio/go-zfs/tree/f784269) +- github.com/mitchellh/cli: [v1.0.0](https://github.com/mitchellh/cli/tree/v1.0.0) +- github.com/mitchellh/go-testing-interface: [v1.0.0](https://github.com/mitchellh/go-testing-interface/tree/v1.0.0) +- github.com/mitchellh/gox: [v0.4.0](https://github.com/mitchellh/gox/tree/v0.4.0) +- github.com/mitchellh/iochan: [v1.0.0](https://github.com/mitchellh/iochan/tree/v1.0.0) +- github.com/moby/sys/mountinfo: [v0.1.3](https://github.com/moby/sys/mountinfo/tree/v0.1.3) +- github.com/modocache/gover: [b58185e](https://github.com/modocache/gover/tree/b58185e) +- github.com/morikuni/aec: [v1.0.0](https://github.com/morikuni/aec/tree/v1.0.0) +- github.com/niemeyer/pretty: [a10e7ca](https://github.com/niemeyer/pretty/tree/a10e7ca) +- github.com/opencontainers/image-spec: [v1.0.1](https://github.com/opencontainers/image-spec/tree/v1.0.1) +- github.com/opencontainers/runtime-spec: [4d89ac9](https://github.com/opencontainers/runtime-spec/tree/4d89ac9) +- github.com/pascaldekloe/goe: [57f6aae](https://github.com/pascaldekloe/goe/tree/57f6aae) +- github.com/pborman/uuid: [v1.2.0](https://github.com/pborman/uuid/tree/v1.2.0) +- github.com/posener/complete: [v1.1.1](https://github.com/posener/complete/tree/v1.1.1) +- github.com/ryanuber/columnize: [9b3edd6](https://github.com/ryanuber/columnize/tree/9b3edd6) +- github.com/sean-/seed: [e2103e2](https://github.com/sean-/seed/tree/e2103e2) +- github.com/seccomp/libseccomp-golang: [v0.9.1](https://github.com/seccomp/libseccomp-golang/tree/v0.9.1) +- github.com/smartystreets/assertions: [b2de0cb](https://github.com/smartystreets/assertions/tree/b2de0cb) +- github.com/smartystreets/goconvey: [v1.6.4](https://github.com/smartystreets/goconvey/tree/v1.6.4) +- github.com/subosito/gotenv: [v1.2.0](https://github.com/subosito/gotenv/tree/v1.2.0) +- github.com/syndtr/gocapability: [d983527](https://github.com/syndtr/gocapability/tree/d983527) +- github.com/willf/bitset: [d5bec33](https://github.com/willf/bitset/tree/d5bec33) +- github.com/yuin/goldmark: [v1.1.27](https://github.com/yuin/goldmark/tree/v1.1.27) +- golang.org/x/term: 7de9c90 +- gopkg.in/ini.v1: v1.51.0 +- k8s.io/api: fcac651 +- k8s.io/apiextensions-apiserver: a7ee1ef +- k8s.io/apimachinery: 15c5dba +- k8s.io/apiserver: aed7ab0 +- k8s.io/cli-runtime: 2e4b259 +- k8s.io/client-go: e24efdc +- k8s.io/cluster-bootstrap: 614b98e +- k8s.io/code-generator: v0.21.0-alpha.0 +- k8s.io/component-base: 1e84b32 +- k8s.io/component-helpers: 7cb42b6 +- k8s.io/controller-manager: b2c380a +- k8s.io/cri-api: v0.21.0-alpha.0 +- k8s.io/csi-translation-lib: 8333033 +- k8s.io/kube-aggregator: 6c47de4 +- k8s.io/kube-controller-manager: 18c28a4 +- k8s.io/kube-proxy: deb12d4 +- k8s.io/kube-scheduler: 0f62d39 +- k8s.io/kubectl: 5cfbd40 +- k8s.io/kubelet: 92ded5e +- k8s.io/legacy-cloud-providers: 716c3da +- k8s.io/metrics: d70c0e0 +- k8s.io/mount-utils: v0.21.0-alpha.0 +- k8s.io/sample-apiserver: 1f4e6a9 +- rsc.io/binaryregexp: v0.2.0 + +### Updated + +- cloud.google.com/go: v0.38.0 → v0.54.0 +- github.com/Azure/azure-sdk-for-go: [8277be3 → v49.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/8277be3...v49.1.0) +- github.com/GoogleCloudPlatform/k8s-cloud-provider: [27a4ced → 7901bc8](https://github.com/GoogleCloudPlatform/k8s-cloud-provider/compare/27a4ced...7901bc8) +- github.com/Microsoft/go-winio: [v0.4.14 → v0.4.15](https://github.com/Microsoft/go-winio/compare/v0.4.14...v0.4.15) +- github.com/Microsoft/hcsshim: [672e52e → 5eafd15](https://github.com/Microsoft/hcsshim/compare/672e52e...5eafd15) +- github.com/alecthomas/template: [a0175ee → fb15b89](https://github.com/alecthomas/template/compare/a0175ee...fb15b89) +- github.com/alecthomas/units: [2efee85 → c3de453](https://github.com/alecthomas/units/compare/2efee85...c3de453) +- github.com/aws/aws-sdk-go: [v1.28.2 → v1.35.24](https://github.com/aws/aws-sdk-go/compare/v1.28.2...v1.35.24) +- github.com/containernetworking/cni: [v0.7.1 → v0.8.0](https://github.com/containernetworking/cni/compare/v0.7.1...v0.8.0) +- github.com/coredns/corefile-migration: [v1.0.6 → v1.0.10](https://github.com/coredns/corefile-migration/compare/v1.0.6...v1.0.10) +- github.com/coreos/etcd: [v3.3.10+incompatible → v3.3.13+incompatible](https://github.com/coreos/etcd/compare/v3.3.10...v3.3.13) +- github.com/creack/pty: [v1.1.7 → v1.1.9](https://github.com/creack/pty/compare/v1.1.7...v1.1.9) +- github.com/dnaeon/go-vcr: [v1.0.1 → v1.1.0](https://github.com/dnaeon/go-vcr/compare/v1.0.1...v1.1.0) +- github.com/docker/docker: [be7ac8b → bd33bbf](https://github.com/docker/docker/compare/be7ac8b...bd33bbf) +- github.com/docker/go-connections: [v0.3.0 → v0.4.0](https://github.com/docker/go-connections/compare/v0.3.0...v0.4.0) +- github.com/fsnotify/fsnotify: [v1.4.7 → v1.4.9](https://github.com/fsnotify/fsnotify/compare/v1.4.7...v1.4.9) +- github.com/go-kit/kit: [v0.8.0 → v0.9.0](https://github.com/go-kit/kit/compare/v0.8.0...v0.9.0) +- github.com/go-logfmt/logfmt: [v0.3.0 → v0.4.0](https://github.com/go-logfmt/logfmt/compare/v0.3.0...v0.4.0) +- github.com/google/cadvisor: [v0.35.0 → v0.38.5](https://github.com/google/cadvisor/compare/v0.35.0...v0.38.5) +- github.com/google/pprof: [3ea8567 → 1ebb73c](https://github.com/google/pprof/compare/3ea8567...1ebb73c) +- github.com/googleapis/gax-go/v2: [v2.0.4 → v2.0.5](https://github.com/googleapis/gax-go/v2/compare/v2.0.4...v2.0.5) +- github.com/gorilla/websocket: [v1.4.0 → v1.4.2](https://github.com/gorilla/websocket/compare/v1.4.0...v1.4.2) +- github.com/jmespath/go-jmespath: [c2b33e8 → v0.4.0](https://github.com/jmespath/go-jmespath/compare/c2b33e8...v0.4.0) +- github.com/jstemmer/go-junit-report: [af01ea7 → v0.9.1](https://github.com/jstemmer/go-junit-report/compare/af01ea7...v0.9.1) +- github.com/kr/pretty: [v0.1.0 → v0.2.0](https://github.com/kr/pretty/compare/v0.1.0...v0.2.0) +- github.com/kr/text: [v0.1.0 → v0.2.0](https://github.com/kr/text/compare/v0.1.0...v0.2.0) +- github.com/mattn/go-isatty: [v0.0.9 → v0.0.4](https://github.com/mattn/go-isatty/compare/v0.0.9...v0.0.4) +- github.com/moby/ipvs: [v1.0.0 → v1.0.1](https://github.com/moby/ipvs/compare/v1.0.0...v1.0.1) +- github.com/mrunalp/fileutils: [7d4729f → abd8a0e](https://github.com/mrunalp/fileutils/compare/7d4729f...abd8a0e) +- github.com/opencontainers/runc: [v1.0.0-rc10 → v1.0.0-rc92](https://github.com/opencontainers/runc/compare/v1.0.0-rc10...v1.0.0-rc92) +- github.com/opencontainers/selinux: [5215b18 → v1.6.0](https://github.com/opencontainers/selinux/compare/5215b18...v1.6.0) +- github.com/quobyte/api: [v0.1.2 → v0.1.8](https://github.com/quobyte/api/compare/v0.1.2...v0.1.8) +- github.com/spf13/viper: [v1.3.2 → v1.7.0](https://github.com/spf13/viper/compare/v1.3.2...v1.7.0) +- github.com/storageos/go-api: [343b3ef → v2.2.0+incompatible](https://github.com/storageos/go-api/compare/343b3ef...v2.2.0) +- github.com/tmc/grpc-websocket-proxy: [89b8d40 → 0ad062e](https://github.com/tmc/grpc-websocket-proxy/compare/89b8d40...0ad062e) +- github.com/urfave/cli: [v1.20.0 → v1.22.2](https://github.com/urfave/cli/compare/v1.20.0...v1.22.2) +- github.com/vishvananda/netlink: [v1.0.0 → v1.1.0](https://github.com/vishvananda/netlink/compare/v1.0.0...v1.1.0) +- github.com/vishvananda/netns: [be1fbed → db3c7e5](https://github.com/vishvananda/netns/compare/be1fbed...db3c7e5) +- go.etcd.io/bbolt: v1.3.3 → v1.3.5 +- go.opencensus.io: v0.21.0 → v0.22.3 +- golang.org/x/exp: 4b39c73 → 6cc2880 +- golang.org/x/image: 0694c2d → cff245a +- golang.org/x/lint: 959b441 → 738671d +- golang.org/x/mobile: d3739f8 → d2bd2a2 +- golang.org/x/mod: 4bf6d31 → v0.3.0 +- golang.org/x/net: 13f9640 → ac852fb +- golang.org/x/tools: 5eefd05 → c1934b7 +- golang.org/x/xerrors: a985d34 → 5ec99f8 +- google.golang.org/api: 5213b80 → v0.20.0 +- google.golang.org/protobuf: v1.24.0 → v1.25.0 +- gopkg.in/check.v1: 788fd78 → 8fa4692 +- honnef.co/go/tools: v0.0.1-2019.2.2 → v0.0.1-2020.1.3 +- k8s.io/cloud-provider: 52e5381 → 82fca6d +- k8s.io/klog/v2: v2.2.0 → v2.4.0 +- k8s.io/kube-openapi: 6aeccd4 → d219536 +- k8s.io/kubernetes: bb8a5d2 → f58c4d8 +- k8s.io/system-validators: v1.1.2 → v1.2.0 +- sigs.k8s.io/structured-merge-diff/v4: v4.0.1 → v4.0.2 + +### Removed + +- github.com/xlab/handysort: [fb3537e](https://github.com/xlab/handysort/tree/fb3537e) +- k8s.io/kubernetes/staging/src/k8s.io/api: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/apimachinery: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/apiserver: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/cli-runtime: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/client-go: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/code-generator: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/component-base: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/cri-api: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/kube-proxy: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/kubectl: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/kubelet: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/metrics: 70a6823 +- k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver: 70a6823 +- vbom.ml/util: db5cfe1 diff --git a/content/en/blog/releases/v0.7.1.md b/content/en/blog/releases/v0.7.1.md new file mode 100644 index 0000000000..57e0e59827 --- /dev/null +++ b/content/en/blog/releases/v0.7.1.md @@ -0,0 +1,30 @@ +--- +title: "v0.7.1" +linkTitle: "v0.7.1" +date: 2021-02-24 +description: > + Cloud Provider Azure v0.7.1 +--- + +# Changelog since v0.7.0 + +## Changes by Kind + +### Feature + +- Feat: Add service annotation `ServiceAnnotationDenyAllExpectSourceRanges` ([#487](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/487), [@nilo19](https://github.com/nilo19)) +- Feat: skip account matching with special tags ([#490](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/490), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: vm client changes for Azure Stack Hub support ([#477](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/477), [@JesusAlvarezTorres](https://github.com/JesusAlvarezTorres)) +- Implement cloudprovider.InstancesV2 interface ([#466](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/466), [@nilo19](https://github.com/nilo19)) +- Support etag when putting network interface. ([#483](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/483), [@nilo19](https://github.com/nilo19)) +- Updates all the references for azure network API to point to `2020-07-01` which is the latest API Version ([#502](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/502), [@MirzaSikander](https://github.com/MirzaSikander)) + +### Bug or Regression + +- Aggregate errors when putting vmss ([#482](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/482), [@nilo19](https://github.com/nilo19)) +- Output the actual error when VMSS PUT fails rather than the error from the previous GET ([#486](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/486), [@devigned](https://github.com/devigned)) + +### Other (Cleanup or Flake) + +- Add e2e test for annotation `service.beta.kubernetes.io/azure-deny-all-except-load-balancer-source-ranges` ([#489](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/489), [@nilo19](https://github.com/nilo19)) +- Add log level in armclient ([#497](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/497), [@nilo19](https://github.com/nilo19)) diff --git a/content/en/blog/releases/v0.7.10.md b/content/en/blog/releases/v0.7.10.md new file mode 100644 index 0000000000..3499988d1b --- /dev/null +++ b/content/en/blog/releases/v0.7.10.md @@ -0,0 +1,26 @@ +--- +title: "v0.7.10" +linkTitle: "v0.7.10" +date: 2021-11-23 +description: > + Cloud Provider Azure v0.7.10 +--- + +# Changelog since v0.7.9 + +## Changes by Kind + +### Bug or Regression + +- Fix: do not delete the lb that does not exist ([#864](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/864), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.11.md b/content/en/blog/releases/v0.7.11.md new file mode 100644 index 0000000000..792f575bfb --- /dev/null +++ b/content/en/blog/releases/v0.7.11.md @@ -0,0 +1,42 @@ +--- +title: "v0.7.11" +linkTitle: "v0.7.11" +date: 2022-01-10 +description: > + Cloud Provider Azure v0.7.11 +--- + +# Changelog since v0.7.10 + +## Changes by Kind + +### Bug or Regression + +- Fix: return all LBs in the resource group in ListManagedLBs when deleting the LB, so the LB deleting will not be skipped ([#971](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/971), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Cherry-pick #607 to solve flaky tests: + - should add all nodes in different agent pools to backends [MultipleAgentPools]: fail to find `backendAddressPoolID` in `lbBackendAddressPoolsIDMap` + - Found no or more than 1 virtual network in resource group same as cluster name + - cannot obtain the master node + + Failures e.g. + https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/969/pull-cloud-provider-azure-e2e-ccm-capz-1-20/1479028839588827136 + + Cherry-pick #627 to solve "get outbound rules" issue + Cherry-pick #841 to solve "not equal 0" issue + + Failures e.g. + https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_cloud-provider-azure/982/pull-cloud-provider-azure-e2e-ccm-capz-1-20/1480370475220602880 ([#982](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/982), [@lzhecheng](https://github.com/lzhecheng)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.12.md b/content/en/blog/releases/v0.7.12.md new file mode 100644 index 0000000000..a241056b16 --- /dev/null +++ b/content/en/blog/releases/v0.7.12.md @@ -0,0 +1,29 @@ +--- +title: "v0.7.12" +linkTitle: "v0.7.12" +date: 2022-01-20 +description: > + Cloud Provider Azure v0.7.12 +--- +# Changelog since v0.7.11 + +## Changes by Kind + +### Feature + +- Chore: upgrade azure-sdk-for-go to v58.2.0 and compute sdk to 2021-07-01 ([#991](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/991), [@andyzhangx](https://github.com/andyzhangx)) + +### Bug or Regression + +- Fix: do not update tags on load balancer, security group and route table if both tags and tagsMap are empty ([#1004](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1004), [@nilo19](https://github.com/nilo19)) +- This PR helps solve failure in ci-kubernetes-kubemark-100-azure-test. It was using an old aks-engine that doesn't support K8s v1.19. + https://storage.googleapis.com/kubernetes-jenkins/logs/ci-kubernetes-kubemark-100-azure-test/1480408092028964864/build-log.txt ([#985](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/985), [@lzhecheng](https://github.com/lzhecheng)) + +### Uncategorized + +- Upgrade docker/dockerfile image ([#990](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/990), [@lzhecheng](https://github.com/lzhecheng)) + +## Dependencies + +### Added +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.13.md b/content/en/blog/releases/v0.7.13.md new file mode 100644 index 0000000000..ee50066fcb --- /dev/null +++ b/content/en/blog/releases/v0.7.13.md @@ -0,0 +1,194 @@ +--- +title: "v0.7.13" +linkTitle: "v0.7.13" +date: 2022-02-07 +description: > + Cloud Provider Azure v0.7.13 +--- +# Changelog since v0.7.12 + +## Changes by Kind + +### Feature + +- Chore: upgrade `github.com/gogo/protobuf` to v1.3.2, `golang.org/x/crypto` to v0.0.0-20220112180741-5e0467b6c7ce and `golang.org/x/text` to v0.3.7 ([#1036](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1036), [@lodrem](https://github.com/lodrem)) +- Feat: support platformSubFaultDomain node label ([#1081](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1081), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: use zones in the pre-existing frontend IP configurations for internal LBs ([#1089](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1089), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +- github.com/DataDog/datadog-go: [v3.2.0+incompatible](https://github.com/DataDog/datadog-go/tree/v3.2.0) +- github.com/OneOfOne/xxhash: [v1.2.2](https://github.com/OneOfOne/xxhash/tree/v1.2.2) +- github.com/antihax/optional: [v1.0.0](https://github.com/antihax/optional/tree/v1.0.0) +- github.com/cespare/xxhash: [v1.1.0](https://github.com/cespare/xxhash/tree/v1.1.0) +- github.com/circonus-labs/circonus-gometrics: [v2.3.1+incompatible](https://github.com/circonus-labs/circonus-gometrics/tree/v2.3.1) +- github.com/circonus-labs/circonusllhist: [v0.1.3](https://github.com/circonus-labs/circonusllhist/tree/v0.1.3) +- github.com/cncf/udpa/go: [04548b0](https://github.com/cncf/udpa/go/tree/04548b0) +- github.com/cncf/xds/go: [a8f9461](https://github.com/cncf/xds/go/tree/a8f9461) +- github.com/dgryski/go-sip13: [e10d5fe](https://github.com/dgryski/go-sip13/tree/e10d5fe) +- github.com/go-task/slim-sprig: [348f09d](https://github.com/go-task/slim-sprig/tree/348f09d) +- github.com/golang-jwt/jwt/v4: [v4.2.0](https://github.com/golang-jwt/jwt/v4/tree/v4.2.0) +- github.com/hashicorp/go-hclog: [v1.0.0](https://github.com/hashicorp/go-hclog/tree/v1.0.0) +- github.com/hashicorp/go-retryablehttp: [v0.5.3](https://github.com/hashicorp/go-retryablehttp/tree/v0.5.3) +- github.com/iancoleman/strcase: [v0.2.0](https://github.com/iancoleman/strcase/tree/v0.2.0) +- github.com/kr/fs: [v0.1.0](https://github.com/kr/fs/tree/v0.1.0) +- github.com/lyft/protoc-gen-star: [v0.5.3](https://github.com/lyft/protoc-gen-star/tree/v0.5.3) +- github.com/nxadm/tail: [v1.4.8](https://github.com/nxadm/tail/tree/v1.4.8) +- github.com/oklog/ulid: [v1.3.1](https://github.com/oklog/ulid/tree/v1.3.1) +- github.com/onsi/ginkgo/v2: [v2.0.0](https://github.com/onsi/ginkgo/v2/tree/v2.0.0) +- github.com/pkg/sftp: [v1.10.1](https://github.com/pkg/sftp/tree/v1.10.1) +- github.com/prometheus/tsdb: [v0.7.1](https://github.com/prometheus/tsdb/tree/v0.7.1) +- github.com/sagikazarmark/crypt: [v0.3.0](https://github.com/sagikazarmark/crypt/tree/v0.3.0) +- github.com/spaolacci/murmur3: [f09979e](https://github.com/spaolacci/murmur3/tree/f09979e) +- github.com/tv42/httpunix: [b75d861](https://github.com/tv42/httpunix/tree/b75d861) +- github.com/ugorji/go: [v1.1.4](https://github.com/ugorji/go/tree/v1.1.4) +- go.etcd.io/etcd/api/v3: v3.5.1 +- go.etcd.io/etcd/client/pkg/v3: v3.5.1 +- go.etcd.io/etcd/client/v2: v2.305.1 +- go.opentelemetry.io/proto/otlp: v0.7.0 +- gopkg.in/yaml.v3: 496545a +- rsc.io/quote/v3: v3.1.0 +- rsc.io/sampler: v1.3.0 + +### Changed +- cloud.google.com/go/firestore: v1.1.0 → v1.6.1 +- github.com/Azure/azure-sdk-for-go: [v53.1.0+incompatible → v61.4.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v53.1.0...v61.4.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.10 → v0.9.18](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.10...v0.9.18) +- github.com/Azure/go-autorest/autorest/mocks: [v0.3.0 → v0.4.1](https://github.com/Azure/go-autorest/autorest/mocks/compare/v0.3.0...v0.4.1) +- github.com/Azure/go-autorest/autorest/to: [v0.2.0 → v0.4.0](https://github.com/Azure/go-autorest/autorest/to/compare/v0.2.0...v0.4.0) +- github.com/Azure/go-autorest/autorest: [v0.11.17 → v0.11.24](https://github.com/Azure/go-autorest/autorest/compare/v0.11.17...v0.11.24) +- github.com/Azure/go-autorest/logger: [v0.2.0 → v0.2.1](https://github.com/Azure/go-autorest/logger/compare/v0.2.0...v0.2.1) +- github.com/armon/go-metrics: [f0300d1 → v0.3.10](https://github.com/armon/go-metrics/compare/f0300d1...v0.3.10) +- github.com/armon/go-radix: [7fddfc3 → v1.0.0](https://github.com/armon/go-radix/compare/7fddfc3...v1.0.0) +- github.com/beorn7/perks: [v1.0.0 → v1.0.1](https://github.com/beorn7/perks/compare/v1.0.0...v1.0.1) +- github.com/blang/semver: [v3.5.0+incompatible → v3.5.1+incompatible](https://github.com/blang/semver/compare/v3.5.0...v3.5.1) +- github.com/census-instrumentation/opencensus-proto: [v0.2.1 → v0.3.0](https://github.com/census-instrumentation/opencensus-proto/compare/v0.2.1...v0.3.0) +- github.com/cespare/xxhash/v2: [v2.1.1 → v2.1.2](https://github.com/cespare/xxhash/v2/compare/v2.1.1...v2.1.2) +- github.com/coreos/go-systemd/v22: [v22.1.0 → v22.3.2](https://github.com/coreos/go-systemd/v22/compare/v22.1.0...v22.3.2) +- github.com/coreos/pkg: [97fdf19 → 399ea9e](https://github.com/coreos/pkg/compare/97fdf19...399ea9e) +- github.com/cpuguy83/go-md2man/v2: [v2.0.0 → v2.0.1](https://github.com/cpuguy83/go-md2man/v2/compare/v2.0.0...v2.0.1) +- github.com/creack/pty: [v1.1.9 → v1.1.7](https://github.com/creack/pty/compare/v1.1.9...v1.1.7) +- github.com/envoyproxy/go-control-plane: [5f8ba28 → v0.10.1](https://github.com/envoyproxy/go-control-plane/compare/5f8ba28...v0.10.1) +- github.com/envoyproxy/protoc-gen-validate: [v0.1.0 → v0.6.2](https://github.com/envoyproxy/protoc-gen-validate/compare/v0.1.0...v0.6.2) +- github.com/evanphx/json-patch: [v4.2.0+incompatible → v5.6.0+incompatible](https://github.com/evanphx/json-patch/compare/v4.2.0...v5.6.0) +- github.com/fatih/color: [v1.7.0 → v1.13.0](https://github.com/fatih/color/compare/v1.7.0...v1.13.0) +- github.com/fsnotify/fsnotify: [v1.4.9 → v1.5.1](https://github.com/fsnotify/fsnotify/compare/v1.4.9...v1.5.1) +- github.com/go-logr/logr: [v0.2.0 → v0.4.0](https://github.com/go-logr/logr/compare/v0.2.0...v0.4.0) +- github.com/godbus/dbus/v5: [v5.0.3 → v5.0.4](https://github.com/godbus/dbus/v5/compare/v5.0.3...v5.0.4) +- github.com/gofrs/uuid: [v4.0.0+incompatible → v4.2.0+incompatible](https://github.com/gofrs/uuid/compare/v4.0.0...v4.2.0) +- github.com/gogo/protobuf: [v1.3.1 → v1.3.2](https://github.com/gogo/protobuf/compare/v1.3.1...v1.3.2) +- github.com/golang/groupcache: [02826c3 → 41bb18b](https://github.com/golang/groupcache/compare/02826c3...41bb18b) +- github.com/golang/mock: [v1.3.1 → v1.6.0](https://github.com/golang/mock/compare/v1.3.1...v1.6.0) +- github.com/golang/protobuf: [v1.3.2 → v1.5.2](https://github.com/golang/protobuf/compare/v1.3.2...v1.5.2) +- github.com/google/cadvisor: [v0.38.5 → v0.38.8](https://github.com/google/cadvisor/compare/v0.38.5...v0.38.8) +- github.com/google/go-cmp: [v0.3.0 → v0.5.6](https://github.com/google/go-cmp/compare/v0.3.0...v0.5.6) +- github.com/google/pprof: [1ebb73c → 94a9f03](https://github.com/google/pprof/compare/1ebb73c...94a9f03) +- github.com/google/uuid: [v1.1.1 → v1.1.2](https://github.com/google/uuid/compare/v1.1.1...v1.1.2) +- github.com/googleapis/gax-go/v2: [v2.0.5 → v2.1.1](https://github.com/googleapis/gax-go/v2/compare/v2.0.5...v2.1.1) +- github.com/grpc-ecosystem/grpc-gateway: [v1.9.5 → v1.16.0](https://github.com/grpc-ecosystem/grpc-gateway/compare/v1.9.5...v1.16.0) +- github.com/hashicorp/consul/api: [v1.1.0 → v1.11.0](https://github.com/hashicorp/consul/api/compare/v1.1.0...v1.11.0) +- github.com/hashicorp/consul/sdk: [v0.1.1 → v0.8.0](https://github.com/hashicorp/consul/sdk/compare/v0.1.1...v0.8.0) +- github.com/hashicorp/go-cleanhttp: [v0.5.1 → v0.5.2](https://github.com/hashicorp/go-cleanhttp/compare/v0.5.1...v0.5.2) +- github.com/hashicorp/go-immutable-radix: [v1.0.0 → v1.3.1](https://github.com/hashicorp/go-immutable-radix/compare/v1.0.0...v1.3.1) +- github.com/hashicorp/go-multierror: [v1.0.0 → v1.1.0](https://github.com/hashicorp/go-multierror/compare/v1.0.0...v1.1.0) +- github.com/hashicorp/go-rootcerts: [v1.0.0 → v1.0.2](https://github.com/hashicorp/go-rootcerts/compare/v1.0.0...v1.0.2) +- github.com/hashicorp/golang-lru: [v0.5.1 → v0.5.4](https://github.com/hashicorp/golang-lru/compare/v0.5.1...v0.5.4) +- github.com/hashicorp/mdns: [v1.0.0 → v1.0.4](https://github.com/hashicorp/mdns/compare/v1.0.0...v1.0.4) +- github.com/hashicorp/memberlist: [v0.1.3 → v0.3.0](https://github.com/hashicorp/memberlist/compare/v0.1.3...v0.3.0) +- github.com/hashicorp/serf: [v0.8.2 → v0.9.6](https://github.com/hashicorp/serf/compare/v0.8.2...v0.9.6) +- github.com/ianlancetaylor/demangle: [5e5cf60 → 28f6c0f](https://github.com/ianlancetaylor/demangle/compare/5e5cf60...28f6c0f) +- github.com/json-iterator/go: [v1.1.8 → v1.1.12](https://github.com/json-iterator/go/compare/v1.1.8...v1.1.12) +- github.com/kisielk/errcheck: [v1.2.0 → v1.5.0](https://github.com/kisielk/errcheck/compare/v1.2.0...v1.5.0) +- github.com/konsorten/go-windows-terminal-sequences: [v1.0.1 → v1.0.3](https://github.com/konsorten/go-windows-terminal-sequences/compare/v1.0.1...v1.0.3) +- github.com/kr/text: [v0.2.0 → v0.1.0](https://github.com/kr/text/compare/v0.2.0...v0.1.0) +- github.com/magiconair/properties: [v1.8.1 → v1.8.5](https://github.com/magiconair/properties/compare/v1.8.1...v1.8.5) +- github.com/mattn/go-colorable: [v0.0.9 → v0.1.12](https://github.com/mattn/go-colorable/compare/v0.0.9...v0.1.12) +- github.com/mattn/go-isatty: [v0.0.4 → v0.0.14](https://github.com/mattn/go-isatty/compare/v0.0.4...v0.0.14) +- github.com/matttproud/golang_protobuf_extensions: [v1.0.1 → c182aff](https://github.com/matttproud/golang_protobuf_extensions/compare/v1.0.1...c182aff) +- github.com/miekg/dns: [v1.1.4 → v1.1.41](https://github.com/miekg/dns/compare/v1.1.4...v1.1.41) +- github.com/mitchellh/cli: [v1.0.0 → v1.1.0](https://github.com/mitchellh/cli/compare/v1.0.0...v1.1.0) +- github.com/mitchellh/mapstructure: [v1.1.2 → v1.4.3](https://github.com/mitchellh/mapstructure/compare/v1.1.2...v1.4.3) +- github.com/modern-go/reflect2: [v1.0.1 → v1.0.2](https://github.com/modern-go/reflect2/compare/v1.0.1...v1.0.2) +- github.com/onsi/ginkgo: [v1.11.0 → v1.16.5](https://github.com/onsi/ginkgo/compare/v1.11.0...v1.16.5) +- github.com/onsi/gomega: [v1.7.0 → v1.18.1](https://github.com/onsi/gomega/compare/v1.7.0...v1.18.1) +- github.com/opencontainers/go-digest: [v1.0.0-rc1 → v1.0.0](https://github.com/opencontainers/go-digest/compare/v1.0.0-rc1...v1.0.0) +- github.com/pascaldekloe/goe: [57f6aae → v0.1.0](https://github.com/pascaldekloe/goe/compare/57f6aae...v0.1.0) +- github.com/pelletier/go-toml: [v1.2.0 → v1.9.4](https://github.com/pelletier/go-toml/compare/v1.2.0...v1.9.4) +- github.com/pkg/errors: [v0.8.1 → v0.9.1](https://github.com/pkg/errors/compare/v0.8.1...v0.9.1) +- github.com/posener/complete: [v1.1.1 → v1.2.3](https://github.com/posener/complete/compare/v1.1.1...v1.2.3) +- github.com/prometheus/procfs: [v0.0.2 → v0.2.0](https://github.com/prometheus/procfs/compare/v0.0.2...v0.2.0) +- github.com/rogpeppe/fastuuid: [6724a57 → v1.2.0](https://github.com/rogpeppe/fastuuid/compare/6724a57...v1.2.0) +- github.com/rubiojr/go-vhd: [0bfd3b3 → 02e2102](https://github.com/rubiojr/go-vhd/compare/0bfd3b3...02e2102) +- github.com/russross/blackfriday/v2: [v2.0.1 → v2.1.0](https://github.com/russross/blackfriday/v2/compare/v2.0.1...v2.1.0) +- github.com/sirupsen/logrus: [v1.4.2 → v1.6.0](https://github.com/sirupsen/logrus/compare/v1.4.2...v1.6.0) +- github.com/spf13/afero: [v1.2.2 → v1.6.0](https://github.com/spf13/afero/compare/v1.2.2...v1.6.0) +- github.com/spf13/cast: [v1.3.0 → v1.4.1](https://github.com/spf13/cast/compare/v1.3.0...v1.4.1) +- github.com/spf13/cobra: [v0.0.5 → v1.3.0](https://github.com/spf13/cobra/compare/v0.0.5...v1.3.0) +- github.com/spf13/viper: [v1.7.0 → v1.10.0](https://github.com/spf13/viper/compare/v1.7.0...v1.10.0) +- github.com/stretchr/testify: [v1.4.0 → v1.7.0](https://github.com/stretchr/testify/compare/v1.4.0...v1.7.0) +- github.com/yuin/goldmark: [v1.1.27 → v1.3.5](https://github.com/yuin/goldmark/compare/v1.1.27...v1.3.5) +- go.etcd.io/etcd: 262c939 → dd1b699 +- go.opencensus.io: v0.22.3 → v0.23.0 +- go.uber.org/atomic: v1.3.2 → v1.7.0 +- go.uber.org/multierr: v1.1.0 → v1.6.0 +- go.uber.org/zap: v1.10.0 → v1.17.0 +- golang.org/x/crypto: bac4c82 → 5e0467b +- golang.org/x/lint: 738671d → 6edffad +- golang.org/x/mod: v0.3.0 → v0.5.0 +- golang.org/x/net: ac852fb → 69e39ba +- golang.org/x/oauth2: 0f29369 → d3ed0bb +- golang.org/x/sync: cd5d95a → 036812b +- golang.org/x/sys: 742c48e → 1d35b9e +- golang.org/x/text: v0.3.2 → v0.3.7 +- golang.org/x/time: 9d24e82 → 3af7569 +- golang.org/x/tools: c1934b7 → v0.1.5 +- google.golang.org/api: v0.20.0 → v0.62.0 +- google.golang.org/appengine: v1.5.0 → v1.6.7 +- google.golang.org/genproto: 24fa4b2 → 3a66f56 +- google.golang.org/grpc: v1.27.1 → v1.27.0 +- google.golang.org/protobuf: v1.25.0 → v1.27.1 +- gopkg.in/check.v1: 8fa4692 → 41f04d3 +- gopkg.in/ini.v1: v1.51.0 → v1.66.2 +- gopkg.in/yaml.v2: v2.2.8 → v2.4.0 +- k8s.io/api: fcac651 → v0.20.15 +- k8s.io/apiextensions-apiserver: a7ee1ef → v0.20.15 +- k8s.io/apimachinery: 15c5dba → v0.20.15 +- k8s.io/apiserver: aed7ab0 → v0.20.15 +- k8s.io/cli-runtime: 2e4b259 → v0.20.15 +- k8s.io/client-go: e24efdc → v0.20.15 +- k8s.io/cloud-provider: 82fca6d → v0.20.15 +- k8s.io/cluster-bootstrap: 614b98e → v0.20.15 +- k8s.io/code-generator: v0.21.0-alpha.0 → v0.20.15 +- k8s.io/component-base: 1e84b32 → v0.20.15 +- k8s.io/component-helpers: 7cb42b6 → v0.20.15 +- k8s.io/controller-manager: b2c380a → v0.20.15 +- k8s.io/cri-api: v0.21.0-alpha.0 → v0.20.15 +- k8s.io/csi-translation-lib: 8333033 → v0.20.15 +- k8s.io/gengo: e0e292d → 83324d8 +- k8s.io/klog/v2: v2.4.0 → v2.9.0 +- k8s.io/kube-aggregator: 6c47de4 → v0.20.15 +- k8s.io/kube-controller-manager: 18c28a4 → v0.20.15 +- k8s.io/kube-openapi: d219536 → 83f114c +- k8s.io/kube-proxy: deb12d4 → v0.20.15 +- k8s.io/kube-scheduler: 0f62d39 → v0.20.15 +- k8s.io/kubectl: 5cfbd40 → v0.20.15 +- k8s.io/kubelet: 92ded5e → v0.20.15 +- k8s.io/kubernetes: f58c4d8 → v1.20.15 +- k8s.io/legacy-cloud-providers: 716c3da → v0.20.15 +- k8s.io/metrics: d70c0e0 → v0.20.15 +- k8s.io/mount-utils: v0.21.0-alpha.0 → v0.20.15 +- k8s.io/sample-apiserver: 1f4e6a9 → v0.20.15 +- k8s.io/utils: 6e3d28b → 67b214c +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.9 → v0.0.22 +- sigs.k8s.io/structured-merge-diff/v4: v4.0.2 → v4.1.2 + +### Removed +- github.com/coreos/go-etcd: [v2.0.0+incompatible](https://github.com/coreos/go-etcd/tree/v2.0.0) +- github.com/cpuguy83/go-md2man: [v1.0.10](https://github.com/cpuguy83/go-md2man/tree/v1.0.10) +- github.com/niemeyer/pretty: [a10e7ca](https://github.com/niemeyer/pretty/tree/a10e7ca) +- github.com/ugorji/go/codec: [d75b2dc](https://github.com/ugorji/go/codec/tree/d75b2dc) +- rsc.io/binaryregexp: v0.2.0 diff --git a/content/en/blog/releases/v0.7.14.md b/content/en/blog/releases/v0.7.14.md new file mode 100644 index 0000000000..c90acb6a6c --- /dev/null +++ b/content/en/blog/releases/v0.7.14.md @@ -0,0 +1,49 @@ +--- +title: v0.7.14 +linkTitle: v0.7.14 +date: 2022-02-23 +description: Cloud Provider Azure v0.7.14 +--- + + +## Changes by Kind + +### Feature + +- Following configuration will be applied to the all ports of service. + + "service.beta.kubernetes.io/azure-load-balancer-health-probe-protocol" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-interval" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-num-of-probe" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path" + + If health probe is needed, user should specify AppProtocol in port object of Service spec. + And following protocols are supported: http, tcp, https + + Additional annotations are added. where port is the port number of port object + + service.beta.kubernetes.io/port_{port}_health-probe_interval + service.beta.kubernetes.io/port_{port}_health-probe_num-of-probe + service.beta.kubernetes.io/port_{port}_health-probe_request-path + + Please refer to docs. ([#1131](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1131), [@MartinForReal](https://github.com/MartinForReal)) + +### Bug or Regression + +- This code change fixes the bug that UDP services would trigger unnecessary LoadBalancer updates. The root cause is that a field not working for non-TCP protocols is considered. + ref: #1090 ([#1108](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1108), [@lzhecheng](https://github.com/lzhecheng)) + +### Uncategorized + +- If spec.LoadBalancerSourceRanges is specified and lb is in internal mode, LB is open for public access.(close by default for security reasons) ([#1124](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1124), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v61.4.0+incompatible → v61.6.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v61.4.0...v61.6.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.15.md b/content/en/blog/releases/v0.7.15.md new file mode 100644 index 0000000000..9f5ba10173 --- /dev/null +++ b/content/en/blog/releases/v0.7.15.md @@ -0,0 +1,20 @@ +--- +title: v0.7.15 +linkTitle: v0.7.15 +date: 2022-03-04 +description: Cloud Provider Azure v0.7.15 +--- + + + + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v61.6.0+incompatible → v62.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v61.6.0...v62.0.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.16.md b/content/en/blog/releases/v0.7.16.md new file mode 100644 index 0000000000..63f22aebad --- /dev/null +++ b/content/en/blog/releases/v0.7.16.md @@ -0,0 +1,73 @@ +--- +title: v0.7.16 +linkTitle: v0.7.16 +date: 2022-03-22 +description: Cloud Provider Azure v0.7.16 +--- + + + + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- cloud.google.com/go/firestore: v1.6.1 → v1.1.0 +- github.com/Azure/azure-sdk-for-go: [v62.0.0+incompatible → v62.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.0.0...v62.3.0) +- github.com/armon/go-metrics: [v0.3.10 → f0300d1](https://github.com/armon/go-metrics/compare/v0.3.10...f0300d1) +- github.com/armon/go-radix: [v1.0.0 → 7fddfc3](https://github.com/armon/go-radix/compare/v1.0.0...7fddfc3) +- github.com/census-instrumentation/opencensus-proto: [v0.3.0 → v0.2.1](https://github.com/census-instrumentation/opencensus-proto/compare/v0.3.0...v0.2.1) +- github.com/coreos/go-systemd/v22: [v22.3.2 → v22.1.0](https://github.com/coreos/go-systemd/v22/compare/v22.3.2...v22.1.0) +- github.com/envoyproxy/go-control-plane: [v0.10.1 → 5f8ba28](https://github.com/envoyproxy/go-control-plane/compare/v0.10.1...5f8ba28) +- github.com/envoyproxy/protoc-gen-validate: [v0.6.2 → v0.1.0](https://github.com/envoyproxy/protoc-gen-validate/compare/v0.6.2...v0.1.0) +- github.com/fatih/color: [v1.13.0 → v1.7.0](https://github.com/fatih/color/compare/v1.13.0...v1.7.0) +- github.com/godbus/dbus/v5: [v5.0.4 → v5.0.3](https://github.com/godbus/dbus/v5/compare/v5.0.4...v5.0.3) +- github.com/grpc-ecosystem/grpc-gateway: [v1.16.0 → v1.9.5](https://github.com/grpc-ecosystem/grpc-gateway/compare/v1.16.0...v1.9.5) +- github.com/hashicorp/consul/api: [v1.11.0 → v1.1.0](https://github.com/hashicorp/consul/api/compare/v1.11.0...v1.1.0) +- github.com/hashicorp/consul/sdk: [v0.8.0 → v0.1.1](https://github.com/hashicorp/consul/sdk/compare/v0.8.0...v0.1.1) +- github.com/hashicorp/go-cleanhttp: [v0.5.2 → v0.5.1](https://github.com/hashicorp/go-cleanhttp/compare/v0.5.2...v0.5.1) +- github.com/hashicorp/go-immutable-radix: [v1.3.1 → v1.0.0](https://github.com/hashicorp/go-immutable-radix/compare/v1.3.1...v1.0.0) +- github.com/hashicorp/go-multierror: [v1.1.0 → v1.0.0](https://github.com/hashicorp/go-multierror/compare/v1.1.0...v1.0.0) +- github.com/hashicorp/go-rootcerts: [v1.0.2 → v1.0.0](https://github.com/hashicorp/go-rootcerts/compare/v1.0.2...v1.0.0) +- github.com/hashicorp/mdns: [v1.0.4 → v1.0.0](https://github.com/hashicorp/mdns/compare/v1.0.4...v1.0.0) +- github.com/hashicorp/memberlist: [v0.3.0 → v0.1.3](https://github.com/hashicorp/memberlist/compare/v0.3.0...v0.1.3) +- github.com/hashicorp/serf: [v0.9.6 → v0.8.2](https://github.com/hashicorp/serf/compare/v0.9.6...v0.8.2) +- github.com/magiconair/properties: [v1.8.5 → v1.8.1](https://github.com/magiconair/properties/compare/v1.8.5...v1.8.1) +- github.com/mattn/go-colorable: [v0.1.12 → v0.0.9](https://github.com/mattn/go-colorable/compare/v0.1.12...v0.0.9) +- github.com/mattn/go-isatty: [v0.0.14 → v0.0.4](https://github.com/mattn/go-isatty/compare/v0.0.14...v0.0.4) +- github.com/miekg/dns: [v1.1.41 → v1.1.4](https://github.com/miekg/dns/compare/v1.1.41...v1.1.4) +- github.com/mitchellh/cli: [v1.1.0 → v1.0.0](https://github.com/mitchellh/cli/compare/v1.1.0...v1.0.0) +- github.com/mitchellh/mapstructure: [v1.4.3 → v1.1.2](https://github.com/mitchellh/mapstructure/compare/v1.4.3...v1.1.2) +- github.com/pascaldekloe/goe: [v0.1.0 → 57f6aae](https://github.com/pascaldekloe/goe/compare/v0.1.0...57f6aae) +- github.com/pelletier/go-toml: [v1.9.4 → v1.2.0](https://github.com/pelletier/go-toml/compare/v1.9.4...v1.2.0) +- github.com/posener/complete: [v1.2.3 → v1.1.1](https://github.com/posener/complete/compare/v1.2.3...v1.1.1) +- github.com/rogpeppe/fastuuid: [v1.2.0 → 6724a57](https://github.com/rogpeppe/fastuuid/compare/v1.2.0...6724a57) +- github.com/spf13/afero: [v1.6.0 → v1.2.2](https://github.com/spf13/afero/compare/v1.6.0...v1.2.2) +- github.com/spf13/cast: [v1.4.1 → v1.3.0](https://github.com/spf13/cast/compare/v1.4.1...v1.3.0) +- github.com/spf13/cobra: [v1.3.0 → v1.4.0](https://github.com/spf13/cobra/compare/v1.3.0...v1.4.0) +- github.com/spf13/viper: [v1.10.0 → v1.7.0](https://github.com/spf13/viper/compare/v1.10.0...v1.7.0) +- github.com/stretchr/testify: [v1.7.0 → v1.7.1](https://github.com/stretchr/testify/compare/v1.7.0...v1.7.1) +- golang.org/x/mod: v0.5.0 → v0.4.2 +- gopkg.in/ini.v1: v1.66.2 → v1.51.0 + +### Removed +- github.com/DataDog/datadog-go: [v3.2.0+incompatible](https://github.com/DataDog/datadog-go/tree/v3.2.0) +- github.com/antihax/optional: [v1.0.0](https://github.com/antihax/optional/tree/v1.0.0) +- github.com/circonus-labs/circonus-gometrics: [v2.3.1+incompatible](https://github.com/circonus-labs/circonus-gometrics/tree/v2.3.1) +- github.com/circonus-labs/circonusllhist: [v0.1.3](https://github.com/circonus-labs/circonusllhist/tree/v0.1.3) +- github.com/cncf/udpa/go: [04548b0](https://github.com/cncf/udpa/go/tree/04548b0) +- github.com/cncf/xds/go: [a8f9461](https://github.com/cncf/xds/go/tree/a8f9461) +- github.com/hashicorp/go-hclog: [v1.0.0](https://github.com/hashicorp/go-hclog/tree/v1.0.0) +- github.com/hashicorp/go-retryablehttp: [v0.5.3](https://github.com/hashicorp/go-retryablehttp/tree/v0.5.3) +- github.com/iancoleman/strcase: [v0.2.0](https://github.com/iancoleman/strcase/tree/v0.2.0) +- github.com/kr/fs: [v0.1.0](https://github.com/kr/fs/tree/v0.1.0) +- github.com/lyft/protoc-gen-star: [v0.5.3](https://github.com/lyft/protoc-gen-star/tree/v0.5.3) +- github.com/pkg/sftp: [v1.10.1](https://github.com/pkg/sftp/tree/v1.10.1) +- github.com/sagikazarmark/crypt: [v0.3.0](https://github.com/sagikazarmark/crypt/tree/v0.3.0) +- github.com/tv42/httpunix: [b75d861](https://github.com/tv42/httpunix/tree/b75d861) +- go.etcd.io/etcd/api/v3: v3.5.1 +- go.etcd.io/etcd/client/pkg/v3: v3.5.1 +- go.etcd.io/etcd/client/v2: v2.305.1 +- go.opentelemetry.io/proto/otlp: v0.7.0 diff --git a/content/en/blog/releases/v0.7.17.md b/content/en/blog/releases/v0.7.17.md new file mode 100644 index 0000000000..7fc0043978 --- /dev/null +++ b/content/en/blog/releases/v0.7.17.md @@ -0,0 +1,28 @@ +--- +title: v0.7.17 +linkTitle: v0.7.17 +date: 2022-03-25 +description: Cloud Provider Azure v0.7.17 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: only check the frontend IP config that is owned by the service ([#1323](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1323), [@nilo19](https://github.com/nilo19)) + +### Uncategorized + +- Fixed a bug in health probe generator. Probe related configuration is not updated due to variable scope ([#1324](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1324), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.18.md b/content/en/blog/releases/v0.7.18.md new file mode 100644 index 0000000000..7f6f24a785 --- /dev/null +++ b/content/en/blog/releases/v0.7.18.md @@ -0,0 +1,25 @@ +--- +title: v0.7.18 +linkTitle: v0.7.18 +date: 2022-03-25 +description: Cloud Provider Azure v0.7.18 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: only check the frontend IP config that is owned by the service (#1323, @nilo19) +- Fix: update load balancer rule when probe changes (#1350, @k8s-infra-cherrypick-robot) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.19.md b/content/en/blog/releases/v0.7.19.md new file mode 100644 index 0000000000..e35b0ad54c --- /dev/null +++ b/content/en/blog/releases/v0.7.19.md @@ -0,0 +1,37 @@ +--- +title: v0.7.19 +linkTitle: v0.7.19 +date: 2022-04-13 +description: Cloud Provider Azure v0.7.19 +--- + + +## Changes by Kind + +### Bug or Regression + +- The cloud provider will create TCP probe rule if the probe protocol is not supported. ([#1397](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1397), [@MartinForReal](https://github.com/MartinForReal)) + +### Uncategorized + +- Fix a bug: If users specify a subnet name like "a--------------------------------------------------z", it leads to "InvalidResourceName" error. ([#1466](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1466), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- UserAgents can now be passed as part of the cloud provider config ([#1422](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1422), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v62.3.0+incompatible → v63.2.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.3.0...v63.2.0) +- github.com/Azure/go-autorest/autorest/mocks: [v0.4.1 → v0.4.2](https://github.com/Azure/go-autorest/autorest/mocks/compare/v0.4.1...v0.4.2) +- github.com/Azure/go-autorest/autorest: [v0.11.24 → v0.11.25](https://github.com/Azure/go-autorest/autorest/compare/v0.11.24...v0.11.25) +- github.com/google/pprof: [94a9f03 → 1ebb73c](https://github.com/google/pprof/compare/94a9f03...1ebb73c) +- github.com/ianlancetaylor/demangle: [28f6c0f → 5e5cf60](https://github.com/ianlancetaylor/demangle/compare/28f6c0f...5e5cf60) +- github.com/onsi/ginkgo/v2: [v2.0.0 → v2.1.3](https://github.com/onsi/ginkgo/v2/compare/v2.0.0...v2.1.3) +- github.com/onsi/gomega: [v1.18.1 → v1.19.0](https://github.com/onsi/gomega/compare/v1.18.1...v1.19.0) +- golang.org/x/net: 69e39ba → 27dd868 +- golang.org/x/term: 7de9c90 → 03fcf44 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.2.md b/content/en/blog/releases/v0.7.2.md new file mode 100644 index 0000000000..f0056063f2 --- /dev/null +++ b/content/en/blog/releases/v0.7.2.md @@ -0,0 +1,20 @@ +--- +title: "v0.7.2" +linkTitle: "v0.7.2" +date: 2021-02-28 +description: > + Cloud Provider Azure v0.7.2 +--- + +Cloud Provider Azure v0.7.2 allows to disable AzureStackCloud API versions when using AzureStackCloud config on public cloud (e.g. for customizing ARM endpoints). The images are available at + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.7.2` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.7.2` + +# Changelog since v0.7.1 + +## Changes by Kind + +### Bug or Regression + +- Allow disabling AzureStackCloud API versions when using AzureStackCloud config on public cloud ([#525](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/525), [@feiskyer](https://github.com/feiskyer)) \ No newline at end of file diff --git a/content/en/blog/releases/v0.7.20.md b/content/en/blog/releases/v0.7.20.md new file mode 100644 index 0000000000..d8445a66c4 --- /dev/null +++ b/content/en/blog/releases/v0.7.20.md @@ -0,0 +1,35 @@ +--- +title: v0.7.20 +linkTitle: v0.7.20 +date: 2022-04-19 +description: Cloud Provider Azure v0.7.20 +--- + + +## Changes by Kind + +### Uncategorized + +- Fix InstanceV2.InstanceExists: it should return false instead of ErrInstanceNotFound ([#1510](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1510), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +- github.com/golang/snappy: [v0.0.3](https://github.com/golang/snappy/tree/v0.0.3) +- github.com/google/martian/v3: [v3.2.1](https://github.com/google/martian/v3/tree/v3.2.1) +- google.golang.org/grpc/cmd/protoc-gen-go-grpc: v1.1.0 +- rsc.io/binaryregexp: v0.2.0 + +### Changed +- cloud.google.com/go/bigquery: v1.4.0 → v1.8.0 +- cloud.google.com/go/pubsub: v1.2.0 → v1.3.1 +- cloud.google.com/go/storage: v1.6.0 → v1.10.0 +- cloud.google.com/go: v0.54.0 → v0.99.0 +- github.com/Azure/azure-sdk-for-go: [v63.2.0+incompatible → v63.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.2.0...v63.3.0) +- github.com/google/pprof: [1ebb73c → 4bb14d4](https://github.com/google/pprof/compare/1ebb73c...4bb14d4) +- github.com/ianlancetaylor/demangle: [5e5cf60 → 28f6c0f](https://github.com/ianlancetaylor/demangle/compare/5e5cf60...28f6c0f) +- honnef.co/go/tools: v0.0.1-2020.1.3 → v0.0.1-2020.1.4 +- k8s.io/utils: 67b214c → 6203023 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.21.md b/content/en/blog/releases/v0.7.21.md new file mode 100644 index 0000000000..c4cb473ff4 --- /dev/null +++ b/content/en/blog/releases/v0.7.21.md @@ -0,0 +1,22 @@ +--- +title: v0.7.21 +linkTitle: v0.7.21 +date: 2022-04-30 +description: Cloud Provider Azure v0.7.21 +--- + + + + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v63.3.0+incompatible → v63.4.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.3.0...v63.4.0) +- github.com/Azure/go-autorest/autorest: [v0.11.25 → v0.11.27](https://github.com/Azure/go-autorest/autorest/compare/v0.11.25...v0.11.27) +- sigs.k8s.io/yaml: v1.2.0 → v1.3.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.3.md b/content/en/blog/releases/v0.7.3.md new file mode 100644 index 0000000000..d93aa4d4d7 --- /dev/null +++ b/content/en/blog/releases/v0.7.3.md @@ -0,0 +1,68 @@ +--- +title: "v0.7.3" +linkTitle: "v0.7.3" +date: 2021-04-19 +description: > + Cloud Provider Azure v0.7.3 +--- + +# Major changes since v0.7.2 + +Cloud Provider Azure v0.7.3 supports out-of-tree node ipam controller, sharing the primary SLB with multiple vmSets, and a bunch of other features/bug fixes. The images are available at: + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.7.3` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.7.3` + +## Changes by Kind + +### Feature + +- Chore: remove get file in CreateFileShare ([#534](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/534), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: add ARM node provider ([#580](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/580), [@JesusAlvarezTorres](https://github.com/JesusAlvarezTorres)) +- Feat: add disable RetentionPolicy parameter ([#545](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/545), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: add update vm interface ([#592](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/592), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: implement cloud allocator for vmas ([#555](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/555), [@nilo19](https://github.com/nilo19)) +- Feat: implement cloud cidr allocator for VMSS ([#539](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/539), [@nilo19](https://github.com/nilo19)) +- Feat: support sharing the primary slb with multiple vmSets ([#578](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/578), [@nilo19](https://github.com/nilo19)) +- Feat: support system tag ([#558](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/558), [@nilo19](https://github.com/nilo19)) +- Feat: upgrade azure sdk to v53.1.0 ([#589](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/589), [@andyzhangx](https://github.com/andyzhangx)) + +### Documentation + +- Doc: add doc for out-of-tree node ipam controller ([#553](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/553), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Allow disabling AzureStackCloud API versions when using AzureStackCloud config on public cloud ([#525](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/525), [@feiskyer](https://github.com/feiskyer)) +- Avoid caching the VMSS instances whose network profile is nil ([#583](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/583), [@feiskyer](https://github.com/feiskyer)) +- Azure_storageaccount.go:99] found skip-matching tag for account %!s(*string=0xc000cbd7b0), skip matching ([#529](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/529), [@andyzhangx](https://github.com/andyzhangx)) +- Ensure only LoadBalancer rule is created when HA mode is enabled ([#536](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/536), [@feiskyer](https://github.com/feiskyer)) +- Ensure service deleted when the Azure resource group has been deleted ([#584](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/584), [@feiskyer](https://github.com/feiskyer)) +- Fix node public IP fetching from instance metadata service when the node is part of standard load balancer backend pool. ([#540](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/540), [@feiskyer](https://github.com/feiskyer)) +- Fix: avoid panic when RouteTablePropertiesFormat is nil ([#568](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/568), [@feiskyer](https://github.com/feiskyer)) +- Fix: not delete existing pip when service is deleted ([#574](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/574), [@nilo19](https://github.com/nilo19)) +- Fix: support sharing the primary slb when there are both external and internal load balancers in the cluster ([#588](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/588), [@nilo19](https://github.com/nilo19)) +- Fixed routes not created issues before Pod scheduling. When using kubenet, 1) cloud-node-manager supports "--wait-routes=true" to indicate a node would wait for route updates before accepting Pod scheduling and 2) route controller would wait a while for new routes to take effect (default is 30s). ([#528](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/528), [@feiskyer](https://github.com/feiskyer)) +- Ignore not a VMSS error for VMAS nodes in reconcileBackendPools ([#551](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/551), [@CecileRobertMichon](https://github.com/CecileRobertMichon)) + +### Other (Cleanup or Flake) + +- Chore: move consts in azure_vmss.go to consts.go ([#554](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/554), [@nilo19](https://github.com/nilo19)) +- Chore: remove bazel support ([#585](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/585), [@nilo19](https://github.com/nilo19)) +- Chore: switch to network api 2020-08-01 ([#569](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/569), [@nilo19](https://github.com/nilo19)) +- Enable docker BuildKit and update Go to 1.15.8 ([#548](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/548), [@CecileRobertMichon](https://github.com/CecileRobertMichon)) +- Update Azure compute API version to 2020-12-01 ([#579](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/579), [@feiskyer](https://github.com/feiskyer)) + +### Uncategorized + +- Fix availability set cache in vmss cache ([#537](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/537), [@CecileRobertMichon](https://github.com/CecileRobertMichon)) +- Fix: check disk state before attach disk ([#564](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/564), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: convert backend pool id to lower case before using it ([#561](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/561), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +- github.com/gofrs/uuid: [v4.0.0+incompatible](https://github.com/gofrs/uuid/tree/v4.0.0) + +### Changed +- github.com/Azure/azure-sdk-for-go: [v51.2.0+incompatible → v53.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v51.2.0...v53.1.0) diff --git a/content/en/blog/releases/v0.7.4.md b/content/en/blog/releases/v0.7.4.md new file mode 100644 index 0000000000..22ab0b7416 --- /dev/null +++ b/content/en/blog/releases/v0.7.4.md @@ -0,0 +1,27 @@ +--- +title: "v0.7.4" +linkTitle: "v0.7.4" +date: 2021-04-23 +description: > + Cloud Provider Azure v0.7.4 +--- + +# Major changes since v0.7.3 + +Cloud Provider Azure v0.7.4 includes several critical bug fixes. The images are available at: + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v0.7.4` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v0.7.4` + +## Changes by Kind + +### Documentation + +- Chore: enrich docs ([#590](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/590), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: arm node provider Windows initialization ([#595](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/595), [@JesusAlvarezTorres](https://github.com/JesusAlvarezTorres)) +- Fix: call the counterpart function of availabilitySet when the instance is not a vmss vm ([#597](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/597), [@nilo19](https://github.com/nilo19)) +- Fix: potential race condition in detach disk ([#593](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/593), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: support sharing the primary slb when there are both external and internal load balancers in the cluster ([#588](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/588), [@nilo19](https://github.com/nilo19)) diff --git a/content/en/blog/releases/v0.7.5.md b/content/en/blog/releases/v0.7.5.md new file mode 100644 index 0000000000..add33caf07 --- /dev/null +++ b/content/en/blog/releases/v0.7.5.md @@ -0,0 +1,72 @@ +--- +title: "v0.7.5" +linkTitle: "v0.7.5" +date: 2021-06-21 +description: > + Cloud Provider Azure v0.7.5 +--- + +# Major changes since v0.7.4 + +## Changes by Kind + +### Feature + +- Chore: upgrade TLS1.0 to TLS1.2 in account creation ([#675](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/675), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: Enable creation of storage accounts that support large file shares ([#606](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/606), [@nearora-msft](https://github.com/nearora-msft)) +- Feat: add support for additional public IPs via service annotation "service.beta.kubernetes.io/azure-additional-public-ips" ([#691](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/691), [@feiskyer](https://github.com/feiskyer)) +- Feat: enable creation of private endpoint for storage account ([#652](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/652), [@nearora-msft](https://github.com/nearora-msft)) +- Feat: support reloading cloud controller manager from secret dynamically ([#613](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/613), [@nilo19](https://github.com/nilo19)) + +### Documentation + +- Chore: update docs for service tags NSG ([#647](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/647), [@feiskyer](https://github.com/feiskyer)) +- Docs: add 'securityGroupResourceGroup' cloud-config value ([#668](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/668), [@aslafy-z](https://github.com/aslafy-z)) + +### Failing Test + +- Fix: serviceOwnsFrontendIP shouldn't report error when the public IP doesn't match ([#649](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/649), [@feiskyer](https://github.com/feiskyer)) + +### Bug or Regression + +- Do not set cached Sku when updating VMSS and VMSS instances ([#630](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/630), [@feiskyer](https://github.com/feiskyer)) +- Fix: avoid nil-pointer panic when checking the frontend IP configuration ([#615](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/615), [@nilo19](https://github.com/nilo19)) +- Fix: cleanup outdated routes ([#661](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/661), [@nilo19](https://github.com/nilo19)) +- Fix: detach disk panic on Azure Stack ([#688](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/688), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: make tags case-insensitive for both keys and values ([#669](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/669), [@nilo19](https://github.com/nilo19)) +- Fix: not tagging static public IP ([#616](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/616), [@nilo19](https://github.com/nilo19)) +- Fix: remove GetDisk operation in AttachDisk ([#678](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/678), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: return empty VMAS name if using standalone VM ([#679](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/679), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: add e2e test for byo public IP ([#627](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/627), [@nilo19](https://github.com/nilo19)) +- Chore: add more buckets for operation metrics ([#656](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/656), [@andyzhangx](https://github.com/andyzhangx)) +- Chore: completely decouple k/k ([#601](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/601), [@nilo19](https://github.com/nilo19)) +- Chore: only logs rate limiting configurations when rate limit is enabled ([#608](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/608), [@feiskyer](https://github.com/feiskyer)) +- Chore: only put pip if it is necessary ([#686](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/686), [@nilo19](https://github.com/nilo19)) +- Chore: only reconciling routes in cloud controller manager ([#671](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/671), [@nilo19](https://github.com/nilo19)) +- Chore: set default config secret name and namespace ([#662](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/662), [@nilo19](https://github.com/nilo19)) +- Fix: wait for the success of the initial run of syncRegionZonesMap ([#646](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/646), [@nilo19](https://github.com/nilo19)) +- Update Azure Go SDK to v55.0.0 ([#643](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/643), [@feiskyer](https://github.com/feiskyer)) +- Update cloud-provider vendor to v1.21 ([#603](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/603), [@feiskyer](https://github.com/feiskyer)) +- Upgrade to 2020-02-01/storage ([#628](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/628), [@andyzhangx](https://github.com/andyzhangx)) +- `GetTestCloud` properly initializes the disk controller fields enabling them to be used in unit tests and mocked. ([#689](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/689), [@edreed](https://github.com/edreed)) + +### Uncategorized + +- Add CreateOrUpdateBackendPools() interface for LoadBalancer client ([#620](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/620), [@feiskyer](https://github.com/feiskyer)) +- Feat: add NFSv3 account creation support ([#633](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/633), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: leave the probe path empty for TCP probes ([#680](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/680), [@nilo19](https://github.com/nilo19)) +- Fix: no sleep when GetDisk is throttled ([#629](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/629), [@andyzhangx](https://github.com/andyzhangx)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.6.md b/content/en/blog/releases/v0.7.6.md new file mode 100644 index 0000000000..d3ef20810a --- /dev/null +++ b/content/en/blog/releases/v0.7.6.md @@ -0,0 +1,20 @@ +--- +title: "v0.7.6" +linkTitle: "v0.7.6" +date: 2021-07-20 +description: > + Cloud Provider Azure v0.7.6 +--- + +# Changelog since v0.7.5 + +## Changes by Kind + +### Feature + +- Feat: Provide IPv6 support for internal load balancer ([#703](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/703), [@tomkerkhove](https://github.com/tomkerkhove)) + +### Bug or Regression + +- Fix: not send availability zones as part of create for edge zones ([#709](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/709), [@MirzaSikander](https://github.com/MirzaSikander)) + diff --git a/content/en/blog/releases/v0.7.7.md b/content/en/blog/releases/v0.7.7.md new file mode 100644 index 0000000000..2ddadc4991 --- /dev/null +++ b/content/en/blog/releases/v0.7.7.md @@ -0,0 +1,21 @@ +--- +title: "v0.7.7" +linkTitle: "v0.7.7" +date: 2021-08-13 +description: > + Cloud Provider Azure v0.7.7 +--- + +# Changelog since v0.7.6 + +## Changes by Kind + +### Bug or Regression + +- Fix: ensure NSG rules are handled regardless of case + - fix: enable git command by default + - fix: ensure VM with provisioningState=Creating and powerState=Stopped is treated as Creating instead of Stopped ([#747](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/747), [@feiskyer](https://github.com/feiskyer)) + +### Features + +- Feat: Provide IPv6 support for internal load balancer ([#712](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/712), [@feiskyer](https://github.com/feiskyer)) diff --git a/content/en/blog/releases/v0.7.8.md b/content/en/blog/releases/v0.7.8.md new file mode 100644 index 0000000000..f98a899c7b --- /dev/null +++ b/content/en/blog/releases/v0.7.8.md @@ -0,0 +1,26 @@ +--- +title: "v0.7.8" +linkTitle: "v0.7.8" +date: 2021-08-30 +description: > + Cloud Provider Azure v0.7.8 +--- + +# Changelog since v0.7.7 + +## Changes by Kind + +### Bug or Regression + +- Fix: use correct gitVersion in userAgent ([#766](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/766), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v0.7.9.md b/content/en/blog/releases/v0.7.9.md new file mode 100644 index 0000000000..d92cebb9cf --- /dev/null +++ b/content/en/blog/releases/v0.7.9.md @@ -0,0 +1,35 @@ +--- +title: "v0.7.9" +linkTitle: "v0.7.9" +date: 2021-10-21 +description: > + Cloud Provider Azure v0.7.9 +--- + +# Changelog since v0.7.8 + +## Changes by Kind + +### Bug or Regression + +- Fix: avoid wrapping RawError twice ([#805](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/805), [@feiskyer](https://github.com/feiskyer)) +- Fix: do not crash if the region does not support zones ([#852](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/852), [@nilo19](https://github.com/nilo19)) +- Fix: do not delete the lb that does not exist ([#864](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/864), [@nilo19](https://github.com/nilo19)) +- Fix: use correct gitVersion in userAgent ([#766](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/766), [@feiskyer](https://github.com/feiskyer)) + +### Uncategorized + +- Chore: support multi-arch cloud-node-manager image ([#837](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/837), [@mainred](https://github.com/mainred)) +- Fix: skip instance not found when decoupling vmss from lb ([#843](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/843), [@nilo19](https://github.com/nilo19)) +- Use docker buildx for multi-arch node image ([#857](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/857), [@mainred](https://github.com/mainred)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.0.md b/content/en/blog/releases/v1.0.0.md new file mode 100644 index 0000000000..9b8ff38509 --- /dev/null +++ b/content/en/blog/releases/v1.0.0.md @@ -0,0 +1,32 @@ +--- +title: "v1.0.0" +linkTitle: "v1.0.0" +date: 2021-05-07 +description: > + Cloud Provider Azure v1.0.0 +--- + +# Major changes since v0.7.4 + +Cloud Provider Azure v1.0.0 includes several critical bug fixes. The images are available at: + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v1.0.0` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v1.0.0` + +## Changes by Kind + +### Feature + +- Feat: Enable creation of storage accounts that support large file shares ([#606](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/606), [@nearora-msft](https://github.com/nearora-msft)) +- Feat: support reloading cloud controller manager from secret dynamically ([#613](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/613), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: avoid nil-pointer panic when checking the frontend IP configuration ([#615](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/615), [@nilo19](https://github.com/nilo19)) +- Fix: not tagging static public IP ([#616](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/616), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: completely decouple k/k ([#601](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/601), [@nilo19](https://github.com/nilo19)) +- Chore: only logs rate limiting configurations when rate limit is enabled ([#608](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/608), [@feiskyer](https://github.com/feiskyer)) +- Update cloud-provider vendor to v1.21 ([#603](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/603), [@feiskyer](https://github.com/feiskyer)) diff --git a/content/en/blog/releases/v1.0.1.md b/content/en/blog/releases/v1.0.1.md new file mode 100644 index 0000000000..8e4bb772e9 --- /dev/null +++ b/content/en/blog/releases/v1.0.1.md @@ -0,0 +1,44 @@ +--- +title: "v1.0.1" +linkTitle: "v1.0.1" +date: 2021-06-21 +description: > + Cloud Provider Azure v1.0.1 +--- + +# Major changes since v1.0.0 + +Cloud Provider Azure v1.0.1 includes several critical bug fixes. The images are available at: + +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v1.0.1` +- `mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v1.0.1` + +## Changes by Kind + +### Documentation + +- Chore: update docs for service tags NSG ([#647](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/647), [@feiskyer](https://github.com/feiskyer)) +- Docs: add 'securityGroupResourceGroup' cloud-config value ([#668](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/668), [@aslafy-z](https://github.com/aslafy-z)) + +### Failing Test + +- Fix: serviceOwnsFrontendIP shouldn't report error when the public IP doesn't match ([#649](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/649), [@feiskyer](https://github.com/feiskyer)) + +### Bug or Regression + +- Do not set cached Sku when updating VMSS and VMSS instances ([#630](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/630), [@feiskyer](https://github.com/feiskyer)) +- Fix: cleanup outdated routes ([#661](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/661), [@nilo19](https://github.com/nilo19)) +- Fix: make tags case-insensitive for both keys and values ([#669](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/669), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: add e2e test for byo public IP ([#627](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/627), [@nilo19](https://github.com/nilo19)) +- Chore: add more buckets for operation metrics ([#656](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/656), [@andyzhangx](https://github.com/andyzhangx)) +- Chore: only reconciling routes in cloud controller manager ([#671](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/671), [@nilo19](https://github.com/nilo19)) +- Chore: set default config secret name and namespace ([#662](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/662), [@nilo19](https://github.com/nilo19)) +- Fix: wait for the success of the initial run of syncRegionZonesMap ([#646](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/646), [@nilo19](https://github.com/nilo19)) +- Update Azure Go SDK to v55.0.0 ([#643](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/643), [@feiskyer](https://github.com/feiskyer)) +- Upgrade to 2020-02-01/storage ([#628](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/628), [@andyzhangx](https://github.com/andyzhangx)) +- Add CreateOrUpdateBackendPools() interface for LoadBalancer client ([#620](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/620), [@feiskyer](https://github.com/feiskyer)) +- Feat: add NFSv3 account creation support ([#633](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/633), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: no sleep when GetDisk is throttled ([#629](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/629), [@andyzhangx](https://github.com/andyzhangx)) diff --git a/content/en/blog/releases/v1.0.10.md b/content/en/blog/releases/v1.0.10.md new file mode 100644 index 0000000000..71b07512d6 --- /dev/null +++ b/content/en/blog/releases/v1.0.10.md @@ -0,0 +1,162 @@ +--- +title: "v1.0.10" +linkTitle: "v1.0.10" +date: 2022-02-07 +description: > + Cloud Provider Azure v1.0.10 +--- +# Changelog since v1.0.9 + +## Changes by Kind + +### Feature + +- Feat: support platformSubFaultDomain node label ([#1082](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1082), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: use zones in the pre-existing frontend IP configurations for internal LBs ([#1095](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1095), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +- github.com/DataDog/datadog-go: [v3.2.0+incompatible](https://github.com/DataDog/datadog-go/tree/v3.2.0) +- github.com/OneOfOne/xxhash: [v1.2.2](https://github.com/OneOfOne/xxhash/tree/v1.2.2) +- github.com/antihax/optional: [v1.0.0](https://github.com/antihax/optional/tree/v1.0.0) +- github.com/cespare/xxhash: [v1.1.0](https://github.com/cespare/xxhash/tree/v1.1.0) +- github.com/circonus-labs/circonus-gometrics: [v2.3.1+incompatible](https://github.com/circonus-labs/circonus-gometrics/tree/v2.3.1) +- github.com/circonus-labs/circonusllhist: [v0.1.3](https://github.com/circonus-labs/circonusllhist/tree/v0.1.3) +- github.com/cncf/udpa/go: [04548b0](https://github.com/cncf/udpa/go/tree/04548b0) +- github.com/cncf/xds/go: [a8f9461](https://github.com/cncf/xds/go/tree/a8f9461) +- github.com/coreos/go-systemd/v22: [v22.3.2](https://github.com/coreos/go-systemd/v22/tree/v22.3.2) +- github.com/dgryski/go-sip13: [e10d5fe](https://github.com/dgryski/go-sip13/tree/e10d5fe) +- github.com/go-gl/glfw: [e6da0ac](https://github.com/go-gl/glfw/tree/e6da0ac) +- github.com/go-stack/stack: [v1.8.0](https://github.com/go-stack/stack/tree/v1.8.0) +- github.com/go-task/slim-sprig: [348f09d](https://github.com/go-task/slim-sprig/tree/348f09d) +- github.com/godbus/dbus/v5: [v5.0.4](https://github.com/godbus/dbus/v5/tree/v5.0.4) +- github.com/golang-jwt/jwt/v4: [v4.2.0](https://github.com/golang-jwt/jwt/v4/tree/v4.2.0) +- github.com/golang/snappy: [v0.0.3](https://github.com/golang/snappy/tree/v0.0.3) +- github.com/google/martian/v3: [v3.2.1](https://github.com/google/martian/v3/tree/v3.2.1) +- github.com/hashicorp/go-hclog: [v1.0.0](https://github.com/hashicorp/go-hclog/tree/v1.0.0) +- github.com/hashicorp/go-retryablehttp: [v0.5.3](https://github.com/hashicorp/go-retryablehttp/tree/v0.5.3) +- github.com/iancoleman/strcase: [v0.2.0](https://github.com/iancoleman/strcase/tree/v0.2.0) +- github.com/konsorten/go-windows-terminal-sequences: [v1.0.1](https://github.com/konsorten/go-windows-terminal-sequences/tree/v1.0.1) +- github.com/kr/fs: [v0.1.0](https://github.com/kr/fs/tree/v0.1.0) +- github.com/kr/pty: [v1.1.5](https://github.com/kr/pty/tree/v1.1.5) +- github.com/lyft/protoc-gen-star: [v0.5.3](https://github.com/lyft/protoc-gen-star/tree/v0.5.3) +- github.com/nxadm/tail: [v1.4.8](https://github.com/nxadm/tail/tree/v1.4.8) +- github.com/oklog/ulid: [v1.3.1](https://github.com/oklog/ulid/tree/v1.3.1) +- github.com/onsi/ginkgo/v2: [v2.0.0](https://github.com/onsi/ginkgo/v2/tree/v2.0.0) +- github.com/pkg/sftp: [v1.10.1](https://github.com/pkg/sftp/tree/v1.10.1) +- github.com/prometheus/tsdb: [v0.7.1](https://github.com/prometheus/tsdb/tree/v0.7.1) +- github.com/sagikazarmark/crypt: [v0.3.0](https://github.com/sagikazarmark/crypt/tree/v0.3.0) +- github.com/spaolacci/murmur3: [f09979e](https://github.com/spaolacci/murmur3/tree/f09979e) +- github.com/tv42/httpunix: [b75d861](https://github.com/tv42/httpunix/tree/b75d861) +- go.etcd.io/etcd/api/v3: v3.5.1 +- go.etcd.io/etcd/client/pkg/v3: v3.5.1 +- go.etcd.io/etcd/client/v2: v2.305.1 +- go.opentelemetry.io/proto/otlp: v0.7.0 +- google.golang.org/grpc/cmd/protoc-gen-go-grpc: v1.1.0 +- rsc.io/binaryregexp: v0.2.0 + +### Changed +- cloud.google.com/go/bigquery: v1.4.0 → v1.8.0 +- cloud.google.com/go/firestore: v1.1.0 → v1.6.1 +- cloud.google.com/go/pubsub: v1.2.0 → v1.3.1 +- cloud.google.com/go/storage: v1.6.0 → v1.10.0 +- cloud.google.com/go: v0.54.0 → v0.99.0 +- github.com/Azure/azure-sdk-for-go: [v54.1.0+incompatible → v61.4.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v54.1.0...v61.4.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.10 → v0.9.18](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.10...v0.9.18) +- github.com/Azure/go-autorest/autorest/to: [v0.2.0 → v0.4.0](https://github.com/Azure/go-autorest/autorest/to/compare/v0.2.0...v0.4.0) +- github.com/Azure/go-autorest/autorest/validation: [v0.1.0 → v0.3.1](https://github.com/Azure/go-autorest/autorest/validation/compare/v0.1.0...v0.3.1) +- github.com/Azure/go-autorest/autorest: [v0.11.17 → v0.11.24](https://github.com/Azure/go-autorest/autorest/compare/v0.11.17...v0.11.24) +- github.com/Azure/go-autorest/logger: [v0.2.0 → v0.2.1](https://github.com/Azure/go-autorest/logger/compare/v0.2.0...v0.2.1) +- github.com/armon/go-metrics: [f0300d1 → v0.3.10](https://github.com/armon/go-metrics/compare/f0300d1...v0.3.10) +- github.com/armon/go-radix: [7fddfc3 → v1.0.0](https://github.com/armon/go-radix/compare/7fddfc3...v1.0.0) +- github.com/census-instrumentation/opencensus-proto: [v0.2.1 → v0.3.0](https://github.com/census-instrumentation/opencensus-proto/compare/v0.2.1...v0.3.0) +- github.com/cespare/xxhash/v2: [v2.1.1 → v2.1.2](https://github.com/cespare/xxhash/v2/compare/v2.1.1...v2.1.2) +- github.com/cpuguy83/go-md2man/v2: [v2.0.0 → v2.0.1](https://github.com/cpuguy83/go-md2man/v2/compare/v2.0.0...v2.0.1) +- github.com/dnaeon/go-vcr: [v1.1.0 → v1.2.0](https://github.com/dnaeon/go-vcr/compare/v1.1.0...v1.2.0) +- github.com/envoyproxy/go-control-plane: [5f8ba28 → v0.10.1](https://github.com/envoyproxy/go-control-plane/compare/5f8ba28...v0.10.1) +- github.com/envoyproxy/protoc-gen-validate: [v0.1.0 → v0.6.2](https://github.com/envoyproxy/protoc-gen-validate/compare/v0.1.0...v0.6.2) +- github.com/evanphx/json-patch: [v4.9.0+incompatible → v5.6.0+incompatible](https://github.com/evanphx/json-patch/compare/v4.9.0...v5.6.0) +- github.com/fatih/color: [v1.7.0 → v1.13.0](https://github.com/fatih/color/compare/v1.7.0...v1.13.0) +- github.com/fsnotify/fsnotify: [v1.4.7 → v1.5.1](https://github.com/fsnotify/fsnotify/compare/v1.4.7...v1.5.1) +- github.com/gofrs/uuid: [v4.0.0+incompatible → v4.2.0+incompatible](https://github.com/gofrs/uuid/compare/v4.0.0...v4.2.0) +- github.com/golang/groupcache: [8c9f03a → 41bb18b](https://github.com/golang/groupcache/compare/8c9f03a...41bb18b) +- github.com/golang/mock: [v1.4.1 → v1.6.0](https://github.com/golang/mock/compare/v1.4.1...v1.6.0) +- github.com/golang/protobuf: [v1.4.3 → v1.5.2](https://github.com/golang/protobuf/compare/v1.4.3...v1.5.2) +- github.com/google/go-cmp: [v0.5.2 → v0.5.6](https://github.com/google/go-cmp/compare/v0.5.2...v0.5.6) +- github.com/google/pprof: [1ebb73c → 4bb14d4](https://github.com/google/pprof/compare/1ebb73c...4bb14d4) +- github.com/googleapis/gax-go/v2: [v2.0.5 → v2.1.1](https://github.com/googleapis/gax-go/v2/compare/v2.0.5...v2.1.1) +- github.com/grpc-ecosystem/grpc-gateway: [v1.9.5 → v1.16.0](https://github.com/grpc-ecosystem/grpc-gateway/compare/v1.9.5...v1.16.0) +- github.com/hashicorp/consul/api: [v1.1.0 → v1.11.0](https://github.com/hashicorp/consul/api/compare/v1.1.0...v1.11.0) +- github.com/hashicorp/consul/sdk: [v0.1.1 → v0.8.0](https://github.com/hashicorp/consul/sdk/compare/v0.1.1...v0.8.0) +- github.com/hashicorp/go-cleanhttp: [v0.5.1 → v0.5.2](https://github.com/hashicorp/go-cleanhttp/compare/v0.5.1...v0.5.2) +- github.com/hashicorp/go-immutable-radix: [v1.0.0 → v1.3.1](https://github.com/hashicorp/go-immutable-radix/compare/v1.0.0...v1.3.1) +- github.com/hashicorp/go-multierror: [v1.0.0 → v1.1.0](https://github.com/hashicorp/go-multierror/compare/v1.0.0...v1.1.0) +- github.com/hashicorp/go-rootcerts: [v1.0.0 → v1.0.2](https://github.com/hashicorp/go-rootcerts/compare/v1.0.0...v1.0.2) +- github.com/hashicorp/golang-lru: [v0.5.1 → v0.5.4](https://github.com/hashicorp/golang-lru/compare/v0.5.1...v0.5.4) +- github.com/hashicorp/mdns: [v1.0.0 → v1.0.4](https://github.com/hashicorp/mdns/compare/v1.0.0...v1.0.4) +- github.com/hashicorp/memberlist: [v0.1.3 → v0.3.0](https://github.com/hashicorp/memberlist/compare/v0.1.3...v0.3.0) +- github.com/hashicorp/serf: [v0.8.2 → v0.9.6](https://github.com/hashicorp/serf/compare/v0.8.2...v0.9.6) +- github.com/ianlancetaylor/demangle: [5e5cf60 → 28f6c0f](https://github.com/ianlancetaylor/demangle/compare/5e5cf60...28f6c0f) +- github.com/json-iterator/go: [v1.1.10 → v1.1.12](https://github.com/json-iterator/go/compare/v1.1.10...v1.1.12) +- github.com/magiconair/properties: [v1.8.1 → v1.8.5](https://github.com/magiconair/properties/compare/v1.8.1...v1.8.5) +- github.com/mattn/go-colorable: [v0.0.9 → v0.1.12](https://github.com/mattn/go-colorable/compare/v0.0.9...v0.1.12) +- github.com/mattn/go-isatty: [v0.0.4 → v0.0.14](https://github.com/mattn/go-isatty/compare/v0.0.4...v0.0.14) +- github.com/miekg/dns: [v1.0.14 → v1.1.41](https://github.com/miekg/dns/compare/v1.0.14...v1.1.41) +- github.com/mitchellh/cli: [v1.0.0 → v1.1.0](https://github.com/mitchellh/cli/compare/v1.0.0...v1.1.0) +- github.com/mitchellh/mapstructure: [v1.1.2 → v1.4.3](https://github.com/mitchellh/mapstructure/compare/v1.1.2...v1.4.3) +- github.com/modern-go/reflect2: [v1.0.1 → v1.0.2](https://github.com/modern-go/reflect2/compare/v1.0.1...v1.0.2) +- github.com/onsi/ginkgo: [v1.11.0 → v1.16.5](https://github.com/onsi/ginkgo/compare/v1.11.0...v1.16.5) +- github.com/onsi/gomega: [v1.8.1 → v1.18.1](https://github.com/onsi/gomega/compare/v1.8.1...v1.18.1) +- github.com/pascaldekloe/goe: [57f6aae → v0.1.0](https://github.com/pascaldekloe/goe/compare/57f6aae...v0.1.0) +- github.com/pelletier/go-toml: [v1.2.0 → v1.9.4](https://github.com/pelletier/go-toml/compare/v1.2.0...v1.9.4) +- github.com/posener/complete: [v1.1.1 → v1.2.3](https://github.com/posener/complete/compare/v1.1.1...v1.2.3) +- github.com/rogpeppe/fastuuid: [6724a57 → v1.2.0](https://github.com/rogpeppe/fastuuid/compare/6724a57...v1.2.0) +- github.com/rubiojr/go-vhd: [02e2102 → ccecf6c](https://github.com/rubiojr/go-vhd/compare/02e2102...ccecf6c) +- github.com/russross/blackfriday/v2: [v2.0.1 → v2.1.0](https://github.com/russross/blackfriday/v2/compare/v2.0.1...v2.1.0) +- github.com/sirupsen/logrus: [v1.7.0 → v1.8.1](https://github.com/sirupsen/logrus/compare/v1.7.0...v1.8.1) +- github.com/spf13/afero: [v1.2.2 → v1.6.0](https://github.com/spf13/afero/compare/v1.2.2...v1.6.0) +- github.com/spf13/cast: [v1.3.0 → v1.4.1](https://github.com/spf13/cast/compare/v1.3.0...v1.4.1) +- github.com/spf13/cobra: [v1.1.1 → v1.3.0](https://github.com/spf13/cobra/compare/v1.1.1...v1.3.0) +- github.com/spf13/jwalterweatherman: [v1.0.0 → v1.1.0](https://github.com/spf13/jwalterweatherman/compare/v1.0.0...v1.1.0) +- github.com/spf13/viper: [v1.7.0 → v1.10.0](https://github.com/spf13/viper/compare/v1.7.0...v1.10.0) +- github.com/stretchr/testify: [v1.6.1 → v1.7.0](https://github.com/stretchr/testify/compare/v1.6.1...v1.7.0) +- github.com/yuin/goldmark: [v1.2.1 → v1.3.5](https://github.com/yuin/goldmark/compare/v1.2.1...v1.3.5) +- go.opencensus.io: v0.22.3 → v0.23.0 +- go.uber.org/atomic: v1.6.0 → v1.7.0 +- go.uber.org/multierr: v1.5.0 → v1.6.0 +- go.uber.org/zap: v1.16.0 → v1.17.0 +- golang.org/x/crypto: 5ea612d → 5e0467b +- golang.org/x/lint: 738671d → 6edffad +- golang.org/x/mod: ce943fd → v0.5.0 +- golang.org/x/net: 3d97a24 → 491a49a +- golang.org/x/oauth2: bf48bf1 → d3ed0bb +- golang.org/x/sync: 67f06af → 036812b +- golang.org/x/sys: a50acf3 → 1d35b9e +- golang.org/x/text: v0.3.4 → v0.3.7 +- golang.org/x/tools: v0.1.0 → v0.1.5 +- google.golang.org/api: v0.20.0 → v0.62.0 +- google.golang.org/appengine: v1.6.5 → v1.6.7 +- google.golang.org/genproto: 8816d57 → 3a66f56 +- google.golang.org/protobuf: v1.25.0 → v1.27.1 +- gopkg.in/ini.v1: v1.51.0 → v1.66.2 +- gopkg.in/yaml.v3: 9f266ea → 496545a +- honnef.co/go/tools: v0.0.1-2020.1.3 → v0.0.1-2020.1.4 +- k8s.io/api: 648b778 → v0.21.9 +- k8s.io/apimachinery: 8daf289 → v0.21.9 +- k8s.io/apiserver: 940c107 → v0.21.9 +- k8s.io/client-go: 8c8fa70 → v0.21.9 +- k8s.io/cloud-provider: 1ea896e → v0.21.9 +- k8s.io/component-base: 5860d9b → v0.21.9 +- k8s.io/controller-manager: 146a790 → v0.21.9 +- k8s.io/klog/v2: v2.8.0 → v2.9.0 +- k8s.io/kube-openapi: 591a79e → 3cc51fd +- k8s.io/utils: 67b214c → da69540 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.15 → v0.0.27 +- sigs.k8s.io/structured-merge-diff/v4: v4.1.1 → v4.2.1 + +### Removed +- go.uber.org/tools: 2cfd321 diff --git a/content/en/blog/releases/v1.0.11.md b/content/en/blog/releases/v1.0.11.md new file mode 100644 index 0000000000..f9d516cfc7 --- /dev/null +++ b/content/en/blog/releases/v1.0.11.md @@ -0,0 +1,57 @@ +--- +title: v1.0.11 +linkTitle: v1.0.11 +date: 2022-02-23 +description: Cloud Provider Azure v1.0.11 +--- + + +## Changes by Kind + +### Feature + +- Following configuration will be applied to the all ports of service. + + "service.beta.kubernetes.io/azure-load-balancer-health-probe-protocol" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-interval" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-num-of-probe" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path" + + If health probe is needed, user should specify AppProtocol in port object of Service spec. + And following protocols are supported: http, tcp, https + + Additional annotations are added. where port is the port number of port object + + service.beta.kubernetes.io/port_{port}_health-probe_interval + service.beta.kubernetes.io/port_{port}_health-probe_num-of-probe + service.beta.kubernetes.io/port_{port}_health-probe_request-path + + Please refer to docs. ([#1130](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1130), [@MartinForReal](https://github.com/MartinForReal)) + +### Bug or Regression + +- This code change fixes the bug that UDP services would trigger unnecessary LoadBalancer updates. The root cause is that a field not working for non-TCP protocols is considered. + ref: #1090 ([#1107](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1107), [@lzhecheng](https://github.com/lzhecheng)) + +### Uncategorized + +- Fix: remove outdated ipv4 route when the corresponding node is deleted ([#1186](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1186), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- If spec.LoadBalancerSourceRanges is specified and lb is in internal mode, LB is open for public access.(close by default for security reasons) ([#1123](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1123), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v61.4.0+incompatible → v61.6.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v61.4.0...v61.6.0) +- k8s.io/api: v0.21.9 → v0.21.10 +- k8s.io/apimachinery: v0.21.9 → v0.21.10 +- k8s.io/apiserver: v0.21.9 → v0.21.10 +- k8s.io/client-go: v0.21.9 → v0.21.10 +- k8s.io/cloud-provider: v0.21.9 → v0.21.10 +- k8s.io/component-base: v0.21.9 → v0.21.10 +- k8s.io/controller-manager: v0.21.9 → v0.21.10 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.12.md b/content/en/blog/releases/v1.0.12.md new file mode 100644 index 0000000000..f4095c5b4a --- /dev/null +++ b/content/en/blog/releases/v1.0.12.md @@ -0,0 +1,24 @@ +--- +title: v1.0.12 +linkTitle: v1.0.12 +date: 2022-03-04 +description: Cloud Provider Azure v1.0.12 +--- + + +## Changes by Kind + +### Uncategorized + +- Fix: remove outdated ipv4 route when the corresponding node is deleted ([#1186](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1186), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v61.6.0+incompatible → v62.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v61.6.0...v62.0.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.13.md b/content/en/blog/releases/v1.0.13.md new file mode 100644 index 0000000000..a06c3531c2 --- /dev/null +++ b/content/en/blog/releases/v1.0.13.md @@ -0,0 +1,95 @@ +--- +title: v1.0.13 +linkTitle: v1.0.13 +date: 2022-03-22 +description: Cloud Provider Azure v1.0.13 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: remove agent pool LB if that vmSet is changed to primary vmSet + fix: reuse previous private IP address when changing load balancers ([#1299](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1299), [@nilo19](https://github.com/nilo19)) + +### Uncategorized + +- Chore: add verbose logs for latency and operation start timestamps ([#1260](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1260), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +- go.uber.org/goleak: v1.1.10 + +### Changed +- cloud.google.com/go/firestore: v1.6.1 → v1.1.0 +- cloud.google.com/go: v0.99.0 → v0.65.0 +- github.com/Azure/azure-sdk-for-go: [v62.0.0+incompatible → v62.2.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.0.0...v62.2.0) +- github.com/armon/go-metrics: [v0.3.10 → f0300d1](https://github.com/armon/go-metrics/compare/v0.3.10...f0300d1) +- github.com/armon/go-radix: [v1.0.0 → 7fddfc3](https://github.com/armon/go-radix/compare/v1.0.0...7fddfc3) +- github.com/census-instrumentation/opencensus-proto: [v0.3.0 → v0.2.1](https://github.com/census-instrumentation/opencensus-proto/compare/v0.3.0...v0.2.1) +- github.com/envoyproxy/go-control-plane: [v0.10.1 → 5f8ba28](https://github.com/envoyproxy/go-control-plane/compare/v0.10.1...5f8ba28) +- github.com/envoyproxy/protoc-gen-validate: [v0.6.2 → v0.1.0](https://github.com/envoyproxy/protoc-gen-validate/compare/v0.6.2...v0.1.0) +- github.com/fatih/color: [v1.13.0 → v1.7.0](https://github.com/fatih/color/compare/v1.13.0...v1.7.0) +- github.com/google/martian/v3: [v3.2.1 → v3.0.0](https://github.com/google/martian/v3/compare/v3.2.1...v3.0.0) +- github.com/google/pprof: [4bb14d4 → 94a9f03](https://github.com/google/pprof/compare/4bb14d4...94a9f03) +- github.com/googleapis/gax-go/v2: [v2.1.1 → v2.0.5](https://github.com/googleapis/gax-go/v2/compare/v2.1.1...v2.0.5) +- github.com/hashicorp/consul/api: [v1.11.0 → v1.1.0](https://github.com/hashicorp/consul/api/compare/v1.11.0...v1.1.0) +- github.com/hashicorp/consul/sdk: [v0.8.0 → v0.1.1](https://github.com/hashicorp/consul/sdk/compare/v0.8.0...v0.1.1) +- github.com/hashicorp/go-cleanhttp: [v0.5.2 → v0.5.1](https://github.com/hashicorp/go-cleanhttp/compare/v0.5.2...v0.5.1) +- github.com/hashicorp/go-immutable-radix: [v1.3.1 → v1.0.0](https://github.com/hashicorp/go-immutable-radix/compare/v1.3.1...v1.0.0) +- github.com/hashicorp/go-multierror: [v1.1.0 → v1.0.0](https://github.com/hashicorp/go-multierror/compare/v1.1.0...v1.0.0) +- github.com/hashicorp/go-rootcerts: [v1.0.2 → v1.0.0](https://github.com/hashicorp/go-rootcerts/compare/v1.0.2...v1.0.0) +- github.com/hashicorp/mdns: [v1.0.4 → v1.0.0](https://github.com/hashicorp/mdns/compare/v1.0.4...v1.0.0) +- github.com/hashicorp/memberlist: [v0.3.0 → v0.1.3](https://github.com/hashicorp/memberlist/compare/v0.3.0...v0.1.3) +- github.com/hashicorp/serf: [v0.9.6 → v0.8.2](https://github.com/hashicorp/serf/compare/v0.9.6...v0.8.2) +- github.com/magiconair/properties: [v1.8.5 → v1.8.1](https://github.com/magiconair/properties/compare/v1.8.5...v1.8.1) +- github.com/mattn/go-colorable: [v0.1.12 → v0.0.9](https://github.com/mattn/go-colorable/compare/v0.1.12...v0.0.9) +- github.com/mattn/go-isatty: [v0.0.14 → v0.0.4](https://github.com/mattn/go-isatty/compare/v0.0.14...v0.0.4) +- github.com/miekg/dns: [v1.1.41 → v1.0.14](https://github.com/miekg/dns/compare/v1.1.41...v1.0.14) +- github.com/mitchellh/cli: [v1.1.0 → v1.0.0](https://github.com/mitchellh/cli/compare/v1.1.0...v1.0.0) +- github.com/mitchellh/mapstructure: [v1.4.3 → v1.1.2](https://github.com/mitchellh/mapstructure/compare/v1.4.3...v1.1.2) +- github.com/pascaldekloe/goe: [v0.1.0 → 57f6aae](https://github.com/pascaldekloe/goe/compare/v0.1.0...57f6aae) +- github.com/pelletier/go-toml: [v1.9.4 → v1.2.0](https://github.com/pelletier/go-toml/compare/v1.9.4...v1.2.0) +- github.com/posener/complete: [v1.2.3 → v1.1.1](https://github.com/posener/complete/compare/v1.2.3...v1.1.1) +- github.com/spf13/cast: [v1.4.1 → v1.3.0](https://github.com/spf13/cast/compare/v1.4.1...v1.3.0) +- github.com/spf13/cobra: [v1.3.0 → v1.4.0](https://github.com/spf13/cobra/compare/v1.3.0...v1.4.0) +- github.com/spf13/jwalterweatherman: [v1.1.0 → v1.0.0](https://github.com/spf13/jwalterweatherman/compare/v1.1.0...v1.0.0) +- github.com/spf13/viper: [v1.10.0 → v1.7.0](https://github.com/spf13/viper/compare/v1.10.0...v1.7.0) +- github.com/stretchr/testify: [v1.7.0 → v1.7.1](https://github.com/stretchr/testify/compare/v1.7.0...v1.7.1) +- go.opencensus.io: v0.23.0 → v0.22.4 +- golang.org/x/lint: 6edffad → 738671d +- golang.org/x/mod: v0.5.0 → v0.4.2 +- golang.org/x/tools: v0.1.5 → v0.1.1 +- google.golang.org/api: v0.62.0 → v0.30.0 +- gopkg.in/ini.v1: v1.66.2 → v1.51.0 +- k8s.io/api: v0.21.10 → v0.21.11 +- k8s.io/apimachinery: v0.21.10 → v0.21.11 +- k8s.io/apiserver: v0.21.10 → v0.21.11 +- k8s.io/client-go: v0.21.10 → v0.21.11 +- k8s.io/component-base: v0.21.10 → v0.21.11 +- k8s.io/controller-manager: v0.21.10 → v0.21.11 +- k8s.io/utils: da69540 → 6203023 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.27 → v0.0.30 + +### Removed +- github.com/DataDog/datadog-go: [v3.2.0+incompatible](https://github.com/DataDog/datadog-go/tree/v3.2.0) +- github.com/circonus-labs/circonus-gometrics: [v2.3.1+incompatible](https://github.com/circonus-labs/circonus-gometrics/tree/v2.3.1) +- github.com/circonus-labs/circonusllhist: [v0.1.3](https://github.com/circonus-labs/circonusllhist/tree/v0.1.3) +- github.com/cncf/udpa/go: [04548b0](https://github.com/cncf/udpa/go/tree/04548b0) +- github.com/cncf/xds/go: [a8f9461](https://github.com/cncf/xds/go/tree/a8f9461) +- github.com/coreos/go-systemd/v22: [v22.3.2](https://github.com/coreos/go-systemd/v22/tree/v22.3.2) +- github.com/godbus/dbus/v5: [v5.0.4](https://github.com/godbus/dbus/v5/tree/v5.0.4) +- github.com/golang/snappy: [v0.0.3](https://github.com/golang/snappy/tree/v0.0.3) +- github.com/hashicorp/go-hclog: [v1.0.0](https://github.com/hashicorp/go-hclog/tree/v1.0.0) +- github.com/hashicorp/go-retryablehttp: [v0.5.3](https://github.com/hashicorp/go-retryablehttp/tree/v0.5.3) +- github.com/iancoleman/strcase: [v0.2.0](https://github.com/iancoleman/strcase/tree/v0.2.0) +- github.com/lyft/protoc-gen-star: [v0.5.3](https://github.com/lyft/protoc-gen-star/tree/v0.5.3) +- github.com/sagikazarmark/crypt: [v0.3.0](https://github.com/sagikazarmark/crypt/tree/v0.3.0) +- github.com/tv42/httpunix: [b75d861](https://github.com/tv42/httpunix/tree/b75d861) +- go.etcd.io/etcd/api/v3: v3.5.1 +- go.etcd.io/etcd/client/pkg/v3: v3.5.1 +- go.etcd.io/etcd/client/v2: v2.305.1 +- go.opentelemetry.io/proto/otlp: v0.7.0 +- google.golang.org/grpc/cmd/protoc-gen-go-grpc: v1.1.0 diff --git a/content/en/blog/releases/v1.0.14.md b/content/en/blog/releases/v1.0.14.md new file mode 100644 index 0000000000..6a4775c9f6 --- /dev/null +++ b/content/en/blog/releases/v1.0.14.md @@ -0,0 +1,26 @@ +--- +title: v1.0.14 +linkTitle: v1.0.14 +date: 2022-03-25 +description: Cloud Provider Azure v1.0.14 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: only check the frontend IP config that is owned by the service ([#1321](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1321), [@nilo19](https://github.com/nilo19)) +- Fix: remove agent pool LB if that vmSet is changed to primary vmSet + fix: reuse previous private IP address when changing load balancers ([#1299](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1299), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v62.2.0+incompatible → v62.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.2.0...v62.3.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.15.md b/content/en/blog/releases/v1.0.15.md new file mode 100644 index 0000000000..3279884be3 --- /dev/null +++ b/content/en/blog/releases/v1.0.15.md @@ -0,0 +1,25 @@ +--- +title: v1.0.15 +linkTitle: v1.0.15 +date: 2022-03-25 +description: Cloud Provider Azure v1.0.15 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: only check the frontend IP config that is owned by the service (#1321, @nilo19) +- Fix: update load balancer rule when probe changes (#1349, @k8s-infra-cherrypick-robot) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.16.md b/content/en/blog/releases/v1.0.16.md new file mode 100644 index 0000000000..b03caa93dd --- /dev/null +++ b/content/en/blog/releases/v1.0.16.md @@ -0,0 +1,41 @@ +--- +title: v1.0.16 +linkTitle: v1.0.16 +date: 2022-04-13 +description: Cloud Provider Azure v1.0.16 +--- + + +## Changes by Kind + +### Bug or Regression + +- The cloud provider will create TCP probe rule if the probe protocol is not supported. ([#1396](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1396), [@MartinForReal](https://github.com/MartinForReal)) + +### Uncategorized + +- Chore: add mixed protocol service e2e test ([#1438](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1438), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Chore: detect data race in unit tests ([#1436](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1436), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Chore: enable mixed protocol service feature gates in e2e templates ([#1440](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1440), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Chore: only reconciling routes in cloud controller manager ([#1449](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1449), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix a bug: If users specify a subnet name like "a--------------------------------------------------z", it leads to "InvalidResourceName" error. ([#1465](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1465), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: disk attach/detach failure when operation is preempted ([#1461](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1461), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: panic due to nil pointer ([#1442](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1442), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: report an error when route table name is not configured ([#1429](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1429), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v62.3.0+incompatible → v63.2.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.3.0...v63.2.0) +- github.com/Azure/go-autorest/autorest/mocks: [v0.4.1 → v0.4.2](https://github.com/Azure/go-autorest/autorest/mocks/compare/v0.4.1...v0.4.2) +- github.com/Azure/go-autorest/autorest: [v0.11.24 → v0.11.25](https://github.com/Azure/go-autorest/autorest/compare/v0.11.24...v0.11.25) +- github.com/onsi/ginkgo/v2: [v2.0.0 → v2.1.3](https://github.com/onsi/ginkgo/v2/compare/v2.0.0...v2.1.3) +- github.com/onsi/gomega: [v1.18.1 → v1.19.0](https://github.com/onsi/gomega/compare/v1.18.1...v1.19.0) +- golang.org/x/net: 491a49a → 27dd868 +- golang.org/x/term: 6a3ed07 → 03fcf44 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.17.md b/content/en/blog/releases/v1.0.17.md new file mode 100644 index 0000000000..f94d04ec46 --- /dev/null +++ b/content/en/blog/releases/v1.0.17.md @@ -0,0 +1,28 @@ +--- +title: v1.0.17 +linkTitle: v1.0.17 +date: 2022-04-19 +description: Cloud Provider Azure v1.0.17 +--- + + +## Changes by Kind + +### Uncategorized + +- Fix InstanceV2.InstanceExists: it should return false instead of ErrInstanceNotFound ([#1511](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1511), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v63.2.0+incompatible → v63.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.2.0...v63.3.0) +- github.com/Azure/go-autorest/autorest: [v0.11.25 → v0.11.26](https://github.com/Azure/go-autorest/autorest/compare/v0.11.25...v0.11.26) +- github.com/google/pprof: [94a9f03 → 1a94d86](https://github.com/google/pprof/compare/94a9f03...1a94d86) +- github.com/ianlancetaylor/demangle: [28f6c0f → 5e5cf60](https://github.com/ianlancetaylor/demangle/compare/28f6c0f...5e5cf60) +- k8s.io/cloud-provider: v0.21.10 → v0.21.11 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.18.md b/content/en/blog/releases/v1.0.18.md new file mode 100644 index 0000000000..a47334f50d --- /dev/null +++ b/content/en/blog/releases/v1.0.18.md @@ -0,0 +1,27 @@ +--- +title: v1.0.18 +linkTitle: v1.0.18 +date: 2022-04-30 +description: Cloud Provider Azure v1.0.18 +--- + + +## Changes by Kind + +### Feature + +- Reduce ListPublicIPAddress call count by avoiding each call in loops ([#1548](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1548), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v63.3.0+incompatible → v63.4.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.3.0...v63.4.0) +- github.com/Azure/go-autorest/autorest: [v0.11.26 → v0.11.27](https://github.com/Azure/go-autorest/autorest/compare/v0.11.26...v0.11.27) +- github.com/fsnotify/fsnotify: [v1.5.1 → v1.5.4](https://github.com/fsnotify/fsnotify/compare/v1.5.1...v1.5.4) +- golang.org/x/sys: 1d35b9e → 33da011 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.19.md b/content/en/blog/releases/v1.0.19.md new file mode 100644 index 0000000000..264527d4a9 --- /dev/null +++ b/content/en/blog/releases/v1.0.19.md @@ -0,0 +1,32 @@ +--- +title: v1.0.19 +linkTitle: v1.0.19 +date: 2022-05-17 +description: Cloud Provider Azure v1.0.19 +--- + + +## Changes by Kind + +### Feature + +- Support ARM resource ID as `userAssignedIdentityID` ([#1740](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1740), [@MartinForReal](https://github.com/MartinForReal)) +- User can deploy managed Azure private link service resources by annotating the service object. + Detailed design doc can be found here: https://kubernetes-sigs.github.io/cloud-provider-azure/development/design-docs/pls-integration/ ([#1683](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1683), [@jwtty](https://github.com/jwtty)) + +### Bug or Regression + +- Cloud provider will create route for unmanaged node if dual stack is enabled. ([#1725](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1725), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fixes bug when using dual-stack in AKS that prevents IPv6 services from using ILB. ([#1723](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1723), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v63.4.0+incompatible → v64.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.4.0...v64.1.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.18 → v0.9.19](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.18...v0.9.19) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.2.md b/content/en/blog/releases/v1.0.2.md new file mode 100644 index 0000000000..3b82be51cc --- /dev/null +++ b/content/en/blog/releases/v1.0.2.md @@ -0,0 +1,37 @@ +--- +title: "v1.0.2" +linkTitle: "v1.0.2" +date: 2021-06-21 +description: > + Cloud Provider Azure v1.0.2 +--- + +# Major changes since v1.0.1 + +## Changes by Kind + +### Feature + +- Chore: upgrade TLS1.0 to TLS1.2 in account creation ([#675](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/675), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: add support for additional public IPs via service annotation "service.beta.kubernetes.io/azure-additional-public-ips" ([#691](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/691), [@feiskyer](https://github.com/feiskyer)) +- Feat: enable creation of private endpoint for storage account ([#652](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/652), [@nearora-msft](https://github.com/nearora-msft)) + +### Bug or Regression + +- Fix: detach disk panic on Azure Stack ([#688](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/688), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: make tags case-insensitive for both keys and values ([#669](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/669), [@nilo19](https://github.com/nilo19)) +- Fix: remove GetDisk operation in AttachDisk ([#678](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/678), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: return empty VMAS name if using standalone VM ([#679](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/679), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: only put pip if it is necessary ([#686](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/686), [@nilo19](https://github.com/nilo19)) +- `GetTestCloud` properly initializes the disk controller fields enabling them to be used in unit tests and mocked. ([#689](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/689), [@edreed](https://github.com/edreed)) + +### Uncategorized + +- Fix: leave the probe path empty for TCP probes ([#680](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/680), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.20.md b/content/en/blog/releases/v1.0.20.md new file mode 100644 index 0000000000..6bfefbe835 --- /dev/null +++ b/content/en/blog/releases/v1.0.20.md @@ -0,0 +1,27 @@ +--- +title: v1.0.20 +linkTitle: v1.0.20 +date: 2022-06-08 +description: Cloud Provider Azure v1.0.20 +--- + + +## Changes by Kind + +### Feature + +- Support ARM resource ID as `userAssignedIdentityID` ([#1740](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1740), [@MartinForReal](https://github.com/MartinForReal)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v64.1.0+incompatible → v65.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v64.1.0...v65.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.19 → v0.9.20](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.19...v0.9.20) +- github.com/stretchr/testify: [v1.7.1 → v1.7.2](https://github.com/stretchr/testify/compare/v1.7.1...v1.7.2) +- gopkg.in/yaml.v3: 496545a → v3.0.1 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.21.md b/content/en/blog/releases/v1.0.21.md new file mode 100644 index 0000000000..ccfbd76d6c --- /dev/null +++ b/content/en/blog/releases/v1.0.21.md @@ -0,0 +1,30 @@ +--- +title: v1.0.21 +linkTitle: v1.0.21 +date: 2022-06-19 +description: Cloud Provider Azure v1.0.21 +--- + + +## Changes by Kind + +### Bug or Regression + +- A new annotation is added in order to specify the PublicIP Prefix for creating IP of LB + + service.beta.kubernetes.io/azure-pip-prefix-id: "/subscriptions/8ecadfc9-ffff-4ea4-ffff-0d9f87e4d7c8/resourceGroups/lodrem/providers/Microsoft.Network/publicIPPrefixes/bb" ([#1858](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1858), [@lodrem](https://github.com/lodrem)) +- Fix unexpected managed PLS deletion issue when ILB subnet is specified. ([#1834](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1834), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: avoid unnessary NSG updating on service reconciling ([#1855](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1855), [@feiskyer](https://github.com/feiskyer)) +- Remove redundant restriction on pls autoApproval and visibility. + User can specify a list of subscriptions for visibility (e.g. "sub1 sub2") and a subset of this list for autoApproval (e.g. "sub1"). ([#1870](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1870), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.22.md b/content/en/blog/releases/v1.0.22.md new file mode 100644 index 0000000000..4c0188e48d --- /dev/null +++ b/content/en/blog/releases/v1.0.22.md @@ -0,0 +1,42 @@ +--- +title: v1.0.22 +linkTitle: v1.0.22 +date: 2022-07-13 +description: Cloud Provider Azure v1.0.22 +--- + + +## Changes by Kind + +### Feature + +- A new service annotation `service.beta.kubernetes.io/azure-disable-load-balancer-floating-ip` has been added to disable floating IPs in load balancer rule. + + If annotation is omitted or if the annotation is set to be "false", then floating IP will be enabled. + If the annotation is set to be "true", then floating IP will be disabled. ([#1981](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1981), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: Do not compare privateIPAllocationMethod when checking if frontend config needs update. Just check if frontend ip matches service spec to avoid unnecessary LB frontend recreation. ([#2000](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2000), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Improve the error handling for ARM APIs. For replication latency, it is possible contentLength is 0 and http + status code is 200 ([#1957](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1957), [@lzhecheng](https://github.com/lzhecheng)) +- Show correct CCM/CNM version in apiserver ([#1934](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1934), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Fix: make sure there is no duplicated rules before updating the network security group ([#2004](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2004), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/cpuguy83/go-md2man/v2: [v2.0.1 → v2.0.2](https://github.com/cpuguy83/go-md2man/v2/compare/v2.0.1...v2.0.2) +- github.com/spf13/cobra: [v1.4.0 → v1.5.0](https://github.com/spf13/cobra/compare/v1.4.0...v1.5.0) +- github.com/stretchr/objx: [v0.2.0 → v0.4.0](https://github.com/stretchr/objx/compare/v0.2.0...v0.4.0) +- github.com/stretchr/testify: [v1.7.2 → v1.8.0](https://github.com/stretchr/testify/compare/v1.7.2...v1.8.0) +- k8s.io/utils: 6203023 → 3a6ce19 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.23.md b/content/en/blog/releases/v1.0.23.md new file mode 100644 index 0000000000..357c6b6396 --- /dev/null +++ b/content/en/blog/releases/v1.0.23.md @@ -0,0 +1,35 @@ +--- +title: v1.0.23 +linkTitle: v1.0.23 +date: 2022-08-02 +description: Cloud Provider Azure v1.0.23 +--- + + +## Changes by Kind + +### Feature + +- Allow external service with floating ip disabled to create PLS. ([#2079](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2079), [@jwtty](https://github.com/jwtty)) +- Result_code in latency logs is more detailed. ([#2024](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2024), [@monianshouhou](https://github.com/monianshouhou)) + +### Bug or Regression + +- Fix: decouple the LB from the VMSS before VMSS VMs ([#2042](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2042), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Use correct subnet name in reconcileFrontendIPConfigs() ([#2084](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2084), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Fix: make sure there is no duplicated rules before updating the network security group ([#2004](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2004), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest/adal: [v0.9.20 → v0.9.21](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.20...v0.9.21) +- golang.org/x/crypto: 5e0467b → 630584e + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.3.md b/content/en/blog/releases/v1.0.3.md new file mode 100644 index 0000000000..65ff43c60c --- /dev/null +++ b/content/en/blog/releases/v1.0.3.md @@ -0,0 +1,20 @@ +--- +title: "v1.0.3" +linkTitle: "v1.0.3" +date: 2021-07-20 +description: > + Cloud Provider Azure v1.0.3 +--- + +# Changelog since v1.0.2 + +## Changes by Kind + +### Feature + +- Feat: Provide IPv6 support for internal load balancer ([#703](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/703), [@tomkerkhove](https://github.com/tomkerkhove)) + +### Bug or Regression + +- Fix: not send availability zones as part of create for edge zones ([#709](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/709), [@MirzaSikander](https://github.com/MirzaSikander)) + diff --git a/content/en/blog/releases/v1.0.4.md b/content/en/blog/releases/v1.0.4.md new file mode 100644 index 0000000000..4d60322d6a --- /dev/null +++ b/content/en/blog/releases/v1.0.4.md @@ -0,0 +1,21 @@ +--- +title: "v1.0.4" +linkTitle: "v1.0.4" +date: 2021-08-13 +description: > + Cloud Provider Azure v1.0.4 +--- + +# Changelog since v1.0.3 + +## Changes by Kind + +### Bug or Regression + +- Fix: ensure NSG rules are handled regardless of case + - fix: enable git command by default + - fix: ensure VM with provisioningState=Creating and powerState=Stopped is treated as Creating instead of Stopped ([#746](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/746), [@feiskyer](https://github.com/feiskyer)) + +### Features + +- Feat: Provide IPv6 support for internal load balancer ([#713](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/713), [@feiskyer](https://github.com/feiskyer)) diff --git a/content/en/blog/releases/v1.0.5.md b/content/en/blog/releases/v1.0.5.md new file mode 100644 index 0000000000..1a89d469f9 --- /dev/null +++ b/content/en/blog/releases/v1.0.5.md @@ -0,0 +1,30 @@ +--- +title: "v1.0.5" +linkTitle: "v1.0.5" +date: 2021-08-30 +description: > + Cloud Provider Azure v1.0.5 +--- + +# Changelog since v1.0.4 + +## Changes by Kind + +### Feature + +- Feat: reloading ccm when the config file changes ([#777](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/777), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: use correct gitVersion in userAgent ([#765](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/765), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.6.md b/content/en/blog/releases/v1.0.6.md new file mode 100644 index 0000000000..16da4ffb90 --- /dev/null +++ b/content/en/blog/releases/v1.0.6.md @@ -0,0 +1,41 @@ +--- +title: "v1.0.6" +linkTitle: "v1.0.6" +date: 2021-10-21 +description: > + Cloud Provider Azure v1.0.6 +--- + +# Changelog since v1.0.5 + +## Changes by Kind + +### Feature + +- Feat: only restart all controllers after stopping if needed ([#846](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/846), [@nilo19](https://github.com/nilo19)) +- Feat: reloading ccm when the config file changes ([#777](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/777), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: avoid wrapping RawError twice ([#804](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/804), [@feiskyer](https://github.com/feiskyer)) +- Fix: do not delete the lb that does not exist ([#865](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/865), [@nilo19](https://github.com/nilo19)) +- Fix: ignore the case when comparing azure tags in service annotation ([#811](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/811), [@nilo19](https://github.com/nilo19)) +- Fix: skip not found nodes when reconciling LB backend address pools ([#818](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/818), [@feiskyer](https://github.com/feiskyer)) + +### Uncategorized + +- Chore: support multi-arch cloud-node-manager image ([#836](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/836), [@mainred](https://github.com/mainred)) +- Fix: do not crash if the region does not support zones ([#853](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/853), [@nilo19](https://github.com/nilo19)) +- Fix: skip instance not found when decoupling vmss from lb ([#844](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/844), [@nilo19](https://github.com/nilo19)) +- Use docker buildx for multi-arch node image ([#858](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/858), [@mainred](https://github.com/mainred)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.7.md b/content/en/blog/releases/v1.0.7.md new file mode 100644 index 0000000000..90fa4eb8c0 --- /dev/null +++ b/content/en/blog/releases/v1.0.7.md @@ -0,0 +1,30 @@ +--- +title: "v1.0.7" +linkTitle: "v1.0.7" +date: 2021-11-23 +description: > + Cloud Provider Azure v1.0.7 +--- + +# Changelog since v1.0.6 + +## Changes by Kind + +### Feature + +- Feat: support json style tags ([#895](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/895), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: do not delete the lb that does not exist ([#865](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/865), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.8.md b/content/en/blog/releases/v1.0.8.md new file mode 100644 index 0000000000..bbb456dcb2 --- /dev/null +++ b/content/en/blog/releases/v1.0.8.md @@ -0,0 +1,31 @@ +--- +title: "v1.0.8" +linkTitle: "v1.0.8" +date: 2022-01-10 +description: > + Cloud Provider Azure v1.0.8 +--- + +# Changelog since v1.0.7 + +## Changes by Kind + +### Feature + +- Feat: support json style tags ([#895](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/895), [@nilo19](https://github.com/nilo19)) +- Introduce a configuration option `putVMSSVMBatchSize`. If set, the sync requests will be sent concurrently in batches when putting vmss vms. ([#966](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/966), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: return all LBs in the resource group in ListManagedLBs when deleting the LB, so the LB deleting will not be skipped ([#972](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/972), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.0.9.md b/content/en/blog/releases/v1.0.9.md new file mode 100644 index 0000000000..a82c69ddae --- /dev/null +++ b/content/en/blog/releases/v1.0.9.md @@ -0,0 +1,33 @@ +--- +title: "v1.0.9" +linkTitle: "v1.0.9" +date: 2022-01-10 +description: > + Cloud Provider Azure v1.0.9 +--- +# Changelog since v1.0.8 + +## Changes by Kind + +### Bug or Regression + +- Fix: do not update tags on load balancer, security group and route table if both tags and tagsMap are empty ([#1006](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1006), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: reduce node LIST APIs in cloud-node-manager ([#997](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/997), [@feiskyer](https://github.com/feiskyer)) + +### Uncategorized + +- Null ([#974](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/974), [@mainred](https://github.com/mainred)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.0.md b/content/en/blog/releases/v1.1.0.md new file mode 100644 index 0000000000..f3b0a0c68e --- /dev/null +++ b/content/en/blog/releases/v1.1.0.md @@ -0,0 +1,234 @@ +--- +title: "v1.1.0" +linkTitle: "v1.1.0" +date: 2021-08-13 +description: > + Cloud Provider Azure v1.1.0 +--- + +# Changelog since v1.0.0 + +## Changes by Kind + +### Feature + +- Added support for Windows Server 2004 and 20H2 to the ``azure-cloud-node-manager`` image. ([#655](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/655), [@claudiubelu](https://github.com/claudiubelu)) [SIG Windows] +- Azure_api_request_errors metric now has an added "code" label which provides more details on the errors encountered. ([#733](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/733), [@marwanad](https://github.com/marwanad)) +- Chore: upgrade TLS1.0 to TLS1.2 in account creation ([#675](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/675), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: Provide IPv6 support for internal load balancer ([#703](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/703), [@tomkerkhove](https://github.com/tomkerkhove)) +- Feat: add ListAll interface for PublicIP client ([#695](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/695), [@feiskyer](https://github.com/feiskyer)) +- Feat: add support for additional public IPs via service annotation "service.beta.kubernetes.io/azure-additional-public-ips" ([#691](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/691), [@feiskyer](https://github.com/feiskyer)) +- Feat: enable creation of private endpoint for storage account ([#652](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/652), [@nearora-msft](https://github.com/nearora-msft)) +- Feat: support async attach/detach disk ([#677](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/677), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: support networkAccessPolicy ([#701](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/701), [@andyzhangx](https://github.com/andyzhangx)) +- UserAgents can now be passed as part of the cloud provider config ([#734](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/734), [@kassarl](https://github.com/kassarl)) + +### Documentation + +- Chore: update docs for service tags NSG ([#647](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/647), [@feiskyer](https://github.com/feiskyer)) +- Docs: add 'securityGroupResourceGroup' cloud-config value ([#668](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/668), [@aslafy-z](https://github.com/aslafy-z)) + +### Failing Test + +- Fix: serviceOwnsFrontendIP shouldn't report error when the public IP doesn't match ([#649](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/649), [@feiskyer](https://github.com/feiskyer)) + +### Bug or Regression + +- Do not set cached Sku when updating VMSS and VMSS instances ([#630](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/630), [@feiskyer](https://github.com/feiskyer)) +- fixed PrivateEndpoint matching in storage account search ([#707](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/707), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: cleanup outdated routes ([#661](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/661), [@nilo19](https://github.com/nilo19)) +- Fix: detach disk panic on Azure Stack ([#688](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/688), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: enable git command by default so that images could get the correct version from git ([#745](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/745), [@feiskyer](https://github.com/feiskyer)) +- Fix: ensure NSG rules are handled regardless of case ([#741](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/741), [@feiskyer](https://github.com/feiskyer)) +- Fix: ensure VM with provisioningState=Creating and powerState=Stopped is treated as Creating instead of Stopped ([#743](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/743), [@feiskyer](https://github.com/feiskyer)) +- Fix: ensure http connections reused for ARM clients ([#711](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/711), [@feiskyer](https://github.com/feiskyer)) +- Fix: ignore the NodeCIDRMaskSize in dualstack clusters ([#721](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/721), [@nilo19](https://github.com/nilo19)) +- Fix: make tags case-insensitive for both keys and values ([#669](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/669), [@nilo19](https://github.com/nilo19)) +- Fix: remove GetDisk operation in AttachDisk ([#678](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/678), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: respect VnetResourceGroup in private link creation ([#719](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/719), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: return empty VMAS name if using standalone VM ([#679](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/679), [@nilo19](https://github.com/nilo19)) +- fix: reduce crp throttling in attach disk scenario ([#621](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/621), [@andyzhangx](https://github.com/andyzhangx)) +- fix: dangling volume issue ([#622](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/622), [@andyzhangx](https://github.com/andyzhangx)) +- fix: delete non existing disk issue ([#623](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/623), [@andyzhangx](https://github.com/andyzhangx)) +- Retry.GetError(response, err) ([#718](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/718), [@marwanad](https://github.com/marwanad)) +- fix: ensure major and minor versions are set correctly ([#749](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/749), [@feiskyer](https://github.com/feiskyer)) +- Zones logic on Azure Stack Cloud platform was disabled because it does not supported on this platform. ([#716](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/716), [@lobziik](https://github.com/lobziik)) + +### Other (Cleanup or Flake) + +- Chore: add e2e test for byo public IP ([#627](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/627), [@nilo19](https://github.com/nilo19)) +- Chore: add more buckets for operation metrics ([#656](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/656), [@andyzhangx](https://github.com/andyzhangx)) +- Chore: enrich unit test for serviceOwnsFrontendIP ([#710](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/710), [@nilo19](https://github.com/nilo19)) +- Chore: only put pip if it is necessary ([#686](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/686), [@nilo19](https://github.com/nilo19)) +- Chore: only reconciling routes in cloud controller manager ([#671](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/671), [@nilo19](https://github.com/nilo19)) +- Chore: set default config secret name and namespace ([#662](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/662), [@nilo19](https://github.com/nilo19)) +- Fix: wait for the success of the initial run of syncRegionZonesMap ([#646](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/646), [@nilo19](https://github.com/nilo19)) +- Update Azure Go SDK to v55.0.0 ([#643](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/643), [@feiskyer](https://github.com/feiskyer)) +- Upgrade to 2020-02-01/storage ([#628](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/628), [@andyzhangx](https://github.com/andyzhangx)) +- `GetTestCloud` properly initializes the disk controller fields enabling them to be used in unit tests and mocked. ([#689](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/689), [@edreed](https://github.com/edreed)) + +### Uncategorized + +- Add CreateOrUpdateBackendPools() interface for LoadBalancer client ([#620](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/620), [@feiskyer](https://github.com/feiskyer)) +- Feat: add NFSv3 account creation support ([#633](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/633), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: leave the probe path empty for TCP probes ([#680](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/680), [@nilo19](https://github.com/nilo19)) +- Fix: no sleep when GetDisk is throttled ([#629](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/629), [@andyzhangx](https://github.com/andyzhangx)) +- `GetTestCloud` now initializes the `SnapshotsClient` field to a mock implementation to facilitate unit test development for consuming projects. ([#732](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/732), [@edreed](https://github.com/edreed)) + +## Dependencies + +### Added +- github.com/OneOfOne/xxhash: [v1.2.2](https://github.com/OneOfOne/xxhash/tree/v1.2.2) +- github.com/antihax/optional: [v1.0.0](https://github.com/antihax/optional/tree/v1.0.0) +- github.com/benbjohnson/clock: [v1.0.3](https://github.com/benbjohnson/clock/tree/v1.0.3) +- github.com/certifi/gocertifi: [2c3bb06](https://github.com/certifi/gocertifi/tree/2c3bb06) +- github.com/cespare/xxhash: [v1.1.0](https://github.com/cespare/xxhash/tree/v1.1.0) +- github.com/client9/misspell: [v0.3.4](https://github.com/client9/misspell/tree/v0.3.4) +- github.com/cncf/udpa/go: [5459f2c](https://github.com/cncf/udpa/go/tree/5459f2c) +- github.com/cockroachdb/errors: [v1.2.4](https://github.com/cockroachdb/errors/tree/v1.2.4) +- github.com/cockroachdb/logtags: [eb05cc2](https://github.com/cockroachdb/logtags/tree/eb05cc2) +- github.com/coreos/go-systemd/v22: [v22.3.2](https://github.com/coreos/go-systemd/v22/tree/v22.3.2) +- github.com/dgryski/go-sip13: [e10d5fe](https://github.com/dgryski/go-sip13/tree/e10d5fe) +- github.com/felixge/httpsnoop: [v1.0.1](https://github.com/felixge/httpsnoop/tree/v1.0.1) +- github.com/getsentry/raven-go: [v0.2.0](https://github.com/getsentry/raven-go/tree/v0.2.0) +- github.com/go-gl/glfw: [e6da0ac](https://github.com/go-gl/glfw/tree/e6da0ac) +- github.com/go-kit/log: [v0.1.0](https://github.com/go-kit/log/tree/v0.1.0) +- github.com/go-stack/stack: [v1.8.0](https://github.com/go-stack/stack/tree/v1.8.0) +- github.com/go-task/slim-sprig: [348f09d](https://github.com/go-task/slim-sprig/tree/348f09d) +- github.com/godbus/dbus/v5: [v5.0.4](https://github.com/godbus/dbus/v5/tree/v5.0.4) +- github.com/google/martian/v3: [v3.1.0](https://github.com/google/martian/v3/tree/v3.1.0) +- github.com/josharian/intern: [v1.0.0](https://github.com/josharian/intern/tree/v1.0.0) +- github.com/jpillora/backoff: [v1.0.0](https://github.com/jpillora/backoff/tree/v1.0.0) +- github.com/konsorten/go-windows-terminal-sequences: [v1.0.3](https://github.com/konsorten/go-windows-terminal-sequences/tree/v1.0.3) +- github.com/kr/fs: [v0.1.0](https://github.com/kr/fs/tree/v0.1.0) +- github.com/kr/pty: [v1.1.1](https://github.com/kr/pty/tree/v1.1.1) +- github.com/nxadm/tail: [v1.4.8](https://github.com/nxadm/tail/tree/v1.4.8) +- github.com/oklog/ulid: [v1.3.1](https://github.com/oklog/ulid/tree/v1.3.1) +- github.com/opentracing/opentracing-go: [v1.1.0](https://github.com/opentracing/opentracing-go/tree/v1.1.0) +- github.com/pkg/sftp: [v1.10.1](https://github.com/pkg/sftp/tree/v1.10.1) +- github.com/prometheus/tsdb: [v0.7.1](https://github.com/prometheus/tsdb/tree/v0.7.1) +- github.com/spaolacci/murmur3: [f09979e](https://github.com/spaolacci/murmur3/tree/f09979e) +- github.com/stoewer/go-strcase: [v1.2.0](https://github.com/stoewer/go-strcase/tree/v1.2.0) +- go.etcd.io/etcd/api/v3: v3.5.0 +- go.etcd.io/etcd/client/pkg/v3: v3.5.0 +- go.etcd.io/etcd/client/v2: v2.305.0 +- go.etcd.io/etcd/client/v3: v3.5.0 +- go.etcd.io/etcd/pkg/v3: v3.5.0 +- go.etcd.io/etcd/raft/v3: v3.5.0 +- go.etcd.io/etcd/server/v3: v3.5.0 +- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc: v0.20.0 +- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp: v0.20.0 +- go.opentelemetry.io/contrib: v0.20.0 +- go.opentelemetry.io/otel/exporters/otlp: v0.20.0 +- go.opentelemetry.io/otel/metric: v0.20.0 +- go.opentelemetry.io/otel/oteltest: v0.20.0 +- go.opentelemetry.io/otel/sdk/export/metric: v0.20.0 +- go.opentelemetry.io/otel/sdk/metric: v0.20.0 +- go.opentelemetry.io/otel/sdk: v0.20.0 +- go.opentelemetry.io/otel/trace: v0.20.0 +- go.opentelemetry.io/otel: v0.20.0 +- go.opentelemetry.io/proto/otlp: v0.7.0 +- go.uber.org/goleak: v1.1.10 +- rsc.io/binaryregexp: v0.2.0 + +### Changed +- cloud.google.com/go/bigquery: v1.4.0 → v1.8.0 +- cloud.google.com/go/pubsub: v1.2.0 → v1.3.1 +- cloud.google.com/go/storage: v1.6.0 → v1.10.0 +- cloud.google.com/go: v0.54.0 → v0.81.0 +- github.com/Azure/azure-sdk-for-go: [v53.1.0+incompatible → v55.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v53.1.0...v55.0.0) +- github.com/Azure/go-ansiterm: [d6e3b33 → d185dfc](https://github.com/Azure/go-ansiterm/compare/d6e3b33...d185dfc) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.10 → v0.9.14](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.10...v0.9.14) +- github.com/Azure/go-autorest/autorest/to: [v0.2.0 → v0.4.0](https://github.com/Azure/go-autorest/autorest/to/compare/v0.2.0...v0.4.0) +- github.com/Azure/go-autorest/autorest: [v0.11.17 → v0.11.19](https://github.com/Azure/go-autorest/autorest/compare/v0.11.17...v0.11.19) +- github.com/Azure/go-autorest/logger: [v0.2.0 → v0.2.1](https://github.com/Azure/go-autorest/logger/compare/v0.2.0...v0.2.1) +- github.com/alecthomas/units: [c3de453 → f65c72e](https://github.com/alecthomas/units/compare/c3de453...f65c72e) +- github.com/bketelsen/crypt: [5cbc8cc → v0.0.4](https://github.com/bketelsen/crypt/compare/5cbc8cc...v0.0.4) +- github.com/cockroachdb/datadriven: [80d97fb → bf6692d](https://github.com/cockroachdb/datadriven/compare/80d97fb...bf6692d) +- github.com/envoyproxy/go-control-plane: [5f8ba28 → 668b12f](https://github.com/envoyproxy/go-control-plane/compare/5f8ba28...668b12f) +- github.com/evanphx/json-patch: [v4.9.0+incompatible → v4.11.0+incompatible](https://github.com/evanphx/json-patch/compare/v4.9.0...v4.11.0) +- github.com/form3tech-oss/jwt-go: [v3.2.2+incompatible → v3.2.3+incompatible](https://github.com/form3tech-oss/jwt-go/compare/v3.2.2...v3.2.3) +- github.com/fsnotify/fsnotify: [v1.4.7 → v1.4.9](https://github.com/fsnotify/fsnotify/compare/v1.4.7...v1.4.9) +- github.com/go-logfmt/logfmt: [v0.4.0 → v0.5.0](https://github.com/go-logfmt/logfmt/compare/v0.4.0...v0.5.0) +- github.com/go-openapi/jsonpointer: [v0.19.3 → v0.19.5](https://github.com/go-openapi/jsonpointer/compare/v0.19.3...v0.19.5) +- github.com/go-openapi/jsonreference: [v0.19.3 → v0.19.5](https://github.com/go-openapi/jsonreference/compare/v0.19.3...v0.19.5) +- github.com/go-openapi/swag: [v0.19.5 → v0.19.14](https://github.com/go-openapi/swag/compare/v0.19.5...v0.19.14) +- github.com/golang/groupcache: [8c9f03a → 41bb18b](https://github.com/golang/groupcache/compare/8c9f03a...41bb18b) +- github.com/golang/mock: [v1.4.1 → v1.6.0](https://github.com/golang/mock/compare/v1.4.1...v1.6.0) +- github.com/golang/protobuf: [v1.4.3 → v1.5.2](https://github.com/golang/protobuf/compare/v1.4.3...v1.5.2) +- github.com/google/btree: [v1.0.0 → v1.0.1](https://github.com/google/btree/compare/v1.0.0...v1.0.1) +- github.com/google/go-cmp: [v0.5.2 → v0.5.5](https://github.com/google/go-cmp/compare/v0.5.2...v0.5.5) +- github.com/google/pprof: [1ebb73c → cbba55b](https://github.com/google/pprof/compare/1ebb73c...cbba55b) +- github.com/googleapis/gnostic: [v0.4.1 → v0.5.5](https://github.com/googleapis/gnostic/compare/v0.4.1...v0.5.5) +- github.com/grpc-ecosystem/go-grpc-middleware: [f849b54 → v1.3.0](https://github.com/grpc-ecosystem/go-grpc-middleware/compare/f849b54...v1.3.0) +- github.com/grpc-ecosystem/grpc-gateway: [v1.9.5 → v1.16.0](https://github.com/grpc-ecosystem/grpc-gateway/compare/v1.9.5...v1.16.0) +- github.com/ianlancetaylor/demangle: [5e5cf60 → 28f6c0f](https://github.com/ianlancetaylor/demangle/compare/5e5cf60...28f6c0f) +- github.com/jonboulle/clockwork: [v0.1.0 → v0.2.2](https://github.com/jonboulle/clockwork/compare/v0.1.0...v0.2.2) +- github.com/json-iterator/go: [v1.1.10 → v1.1.11](https://github.com/json-iterator/go/compare/v1.1.10...v1.1.11) +- github.com/julienschmidt/httprouter: [v1.2.0 → v1.3.0](https://github.com/julienschmidt/httprouter/compare/v1.2.0...v1.3.0) +- github.com/magiconair/properties: [v1.8.1 → v1.8.5](https://github.com/magiconair/properties/compare/v1.8.1...v1.8.5) +- github.com/mailru/easyjson: [v0.7.0 → v0.7.6](https://github.com/mailru/easyjson/compare/v0.7.0...v0.7.6) +- github.com/mattn/go-isatty: [v0.0.4 → v0.0.3](https://github.com/mattn/go-isatty/compare/v0.0.4...v0.0.3) +- github.com/mitchellh/mapstructure: [v1.1.2 → v1.4.1](https://github.com/mitchellh/mapstructure/compare/v1.1.2...v1.4.1) +- github.com/moby/term: [df9cb8a → 9d4ed18](https://github.com/moby/term/compare/df9cb8a...9d4ed18) +- github.com/mwitkow/go-conntrack: [cc309e4 → 2f06839](https://github.com/mwitkow/go-conntrack/compare/cc309e4...2f06839) +- github.com/onsi/ginkgo: [v1.11.0 → v1.16.4](https://github.com/onsi/ginkgo/compare/v1.11.0...v1.16.4) +- github.com/onsi/gomega: [v1.8.1 → v1.15.0](https://github.com/onsi/gomega/compare/v1.8.1...v1.15.0) +- github.com/pelletier/go-toml: [v1.2.0 → v1.9.3](https://github.com/pelletier/go-toml/compare/v1.2.0...v1.9.3) +- github.com/prometheus/client_golang: [v1.7.1 → v1.11.0](https://github.com/prometheus/client_golang/compare/v1.7.1...v1.11.0) +- github.com/prometheus/common: [v0.10.0 → v0.26.0](https://github.com/prometheus/common/compare/v0.10.0...v0.26.0) +- github.com/prometheus/procfs: [v0.2.0 → v0.6.0](https://github.com/prometheus/procfs/compare/v0.2.0...v0.6.0) +- github.com/rogpeppe/fastuuid: [6724a57 → v1.2.0](https://github.com/rogpeppe/fastuuid/compare/6724a57...v1.2.0) +- github.com/sirupsen/logrus: [v1.7.0 → v1.8.1](https://github.com/sirupsen/logrus/compare/v1.7.0...v1.8.1) +- github.com/soheilhy/cmux: [v0.1.4 → v0.1.5](https://github.com/soheilhy/cmux/compare/v0.1.4...v0.1.5) +- github.com/spf13/afero: [v1.2.2 → v1.6.0](https://github.com/spf13/afero/compare/v1.2.2...v1.6.0) +- github.com/spf13/cast: [v1.3.0 → v1.3.1](https://github.com/spf13/cast/compare/v1.3.0...v1.3.1) +- github.com/spf13/cobra: [v1.1.1 → v1.2.1](https://github.com/spf13/cobra/compare/v1.1.1...v1.2.1) +- github.com/spf13/jwalterweatherman: [v1.0.0 → v1.1.0](https://github.com/spf13/jwalterweatherman/compare/v1.0.0...v1.1.0) +- github.com/spf13/viper: [v1.7.0 → v1.8.1](https://github.com/spf13/viper/compare/v1.7.0...v1.8.1) +- github.com/stretchr/testify: [v1.6.1 → v1.7.0](https://github.com/stretchr/testify/compare/v1.6.1...v1.7.0) +- github.com/tmc/grpc-websocket-proxy: [0ad062e → e5319fd](https://github.com/tmc/grpc-websocket-proxy/compare/0ad062e...e5319fd) +- github.com/yuin/goldmark: [v1.2.1 → v1.3.5](https://github.com/yuin/goldmark/compare/v1.2.1...v1.3.5) +- go.etcd.io/bbolt: v1.3.5 → v1.3.6 +- go.opencensus.io: v0.22.3 → v0.23.0 +- go.uber.org/atomic: v1.6.0 → v1.7.0 +- go.uber.org/multierr: v1.5.0 → v1.6.0 +- go.uber.org/zap: v1.16.0 → v1.17.0 +- golang.org/x/lint: 738671d → 6edffad +- golang.org/x/mod: ce943fd → v0.4.2 +- golang.org/x/net: 3d97a24 → 37e1c6a +- golang.org/x/oauth2: bf48bf1 → 2e8d934 +- golang.org/x/sync: 67f06af → 036812b +- golang.org/x/sys: a50acf3 → 59db8d7 +- golang.org/x/text: v0.3.4 → v0.3.6 +- golang.org/x/time: f8bda1e → 1f47c86 +- golang.org/x/tools: v0.1.0 → v0.1.2 +- google.golang.org/api: v0.20.0 → v0.44.0 +- google.golang.org/appengine: v1.6.5 → v1.6.7 +- google.golang.org/genproto: 8816d57 → f16073e +- google.golang.org/grpc: v1.27.1 → v1.38.0 +- google.golang.org/protobuf: v1.25.0 → v1.26.0 +- gopkg.in/ini.v1: v1.51.0 → v1.62.0 +- gopkg.in/yaml.v3: 9f266ea → 496545a +- honnef.co/go/tools: v0.0.1-2020.1.3 → v0.0.1-2020.1.4 +- k8s.io/api: 648b778 → v0.22.0 +- k8s.io/apimachinery: 8daf289 → v0.22.0 +- k8s.io/apiserver: 940c107 → v0.22.0 +- k8s.io/client-go: 8c8fa70 → v0.22.0 +- k8s.io/cloud-provider: 1ea896e → v0.22.0 +- k8s.io/component-base: 5860d9b → v0.22.0 +- k8s.io/controller-manager: 146a790 → v0.22.0 +- k8s.io/klog/v2: v2.8.0 → v2.10.0 +- k8s.io/kube-openapi: 591a79e → 9528897 +- k8s.io/utils: 67b214c → 4b05e18 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.15 → v0.0.22 +- sigs.k8s.io/structured-merge-diff/v4: v4.1.1 → v4.1.2 + +### Removed +- github.com/go-openapi/spec: [v0.19.5](https://github.com/go-openapi/spec/tree/v0.19.5) +- github.com/mattn/go-runewidth: [v0.0.2](https://github.com/mattn/go-runewidth/tree/v0.0.2) +- github.com/olekukonko/tablewriter: [a0225b3](https://github.com/olekukonko/tablewriter/tree/a0225b3) +- github.com/urfave/cli: [v1.20.0](https://github.com/urfave/cli/tree/v1.20.0) +- go.etcd.io/etcd: dd1b699 +- go.uber.org/tools: 2cfd321 +- gopkg.in/cheggaaa/pb.v1: v1.0.25 diff --git a/content/en/blog/releases/v1.1.1.md b/content/en/blog/releases/v1.1.1.md new file mode 100644 index 0000000000..5c7591a53e --- /dev/null +++ b/content/en/blog/releases/v1.1.1.md @@ -0,0 +1,37 @@ +--- +title: "v1.1.1" +linkTitle: "v1.1.1" +date: 2021-08-30 +description: > + Cloud Provider Azure v1.1.1 +--- + +# Changelog since v1.1.0 + +## Changes by Kind + +### Feature + +- Feat: reloading ccm when the config file changes ([#776](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/776), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: ignore GetDisk throttling in DeleteDisk ([#757](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/757), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: use correct gitVersion in userAgent ([#764](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/764), [@feiskyer](https://github.com/feiskyer)) +- Fix: ensure major and minor versions are set correctly ([#749](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/749), [@feiskyer](https://github.com/feiskyer)) + +### Other (Cleanup or Flake) + +- Chore: expose some public functions ([#754](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/754), [@andyzhangx](https://github.com/andyzhangx)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed + +- github.com/Azure/azure-sdk-for-go: [v55.0.0+incompatible → v55.8.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v55.0.0...v55.8.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.10.md b/content/en/blog/releases/v1.1.10.md new file mode 100644 index 0000000000..4b190958ef --- /dev/null +++ b/content/en/blog/releases/v1.1.10.md @@ -0,0 +1,26 @@ +--- +title: v1.1.10 +linkTitle: v1.1.10 +date: 2022-03-25 +description: Cloud Provider Azure v1.1.10 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: only check the frontend IP config that is owned by the service ([#1320](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1320), [@nilo19](https://github.com/nilo19)) +- Fix: remove agent pool LB if that vmSet is changed to primary vmSet + fix: reuse previous private IP address when changing load balancers ([#1298](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1298), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v62.2.0+incompatible → v62.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.2.0...v62.3.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.11.md b/content/en/blog/releases/v1.1.11.md new file mode 100644 index 0000000000..18443952ef --- /dev/null +++ b/content/en/blog/releases/v1.1.11.md @@ -0,0 +1,25 @@ +--- +title: v1.1.11 +linkTitle: v1.1.11 +date: 2022-03-25 +description: Cloud Provider Azure v1.1.11 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: only check the frontend IP config that is owned by the service (#1320, @nilo19) +- Fix: update load balancer rule when probe changes (#1348, @k8s-infra-cherrypick-robot) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.12.md b/content/en/blog/releases/v1.1.12.md new file mode 100644 index 0000000000..4f55358a05 --- /dev/null +++ b/content/en/blog/releases/v1.1.12.md @@ -0,0 +1,42 @@ +--- +title: v1.1.12 +linkTitle: v1.1.12 +date: 2022-04-13 +description: Cloud Provider Azure v1.1.12 +--- + + +## Changes by Kind + +### Bug or Regression + +- The cloud provider will create TCP probe rule if the probe protocol is not supported. ([#1395](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1395), [@MartinForReal](https://github.com/MartinForReal)) + +### Uncategorized + +- Chore: add mixed protocol service e2e test ([#1437](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1437), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Chore: detect data race in unit tests ([#1435](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1435), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Chore: enable mixed protocol service feature gates in e2e templates ([#1439](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1439), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix a bug: If users specify a subnet name like "a--------------------------------------------------z", it leads to "InvalidResourceName" error. ([#1467](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1467), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: disk attach/detach failure when operation is preempted ([#1459](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1459), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: panic due to nil pointer ([#1441](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1441), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: report an error when route table name is not configured ([#1428](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1428), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v62.3.0+incompatible → v63.2.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.3.0...v63.2.0) +- github.com/Azure/go-autorest/autorest/mocks: [v0.4.1 → v0.4.2](https://github.com/Azure/go-autorest/autorest/mocks/compare/v0.4.1...v0.4.2) +- github.com/Azure/go-autorest/autorest: [v0.11.24 → v0.11.25](https://github.com/Azure/go-autorest/autorest/compare/v0.11.24...v0.11.25) +- github.com/google/pprof: [94a9f03 → 1a94d86](https://github.com/google/pprof/compare/94a9f03...1a94d86) +- github.com/ianlancetaylor/demangle: [28f6c0f → 5e5cf60](https://github.com/ianlancetaylor/demangle/compare/28f6c0f...5e5cf60) +- github.com/onsi/ginkgo/v2: [v2.0.0 → v2.1.3](https://github.com/onsi/ginkgo/v2/compare/v2.0.0...v2.1.3) +- github.com/onsi/gomega: [v1.18.1 → v1.19.0](https://github.com/onsi/gomega/compare/v1.18.1...v1.19.0) +- golang.org/x/net: 491a49a → 27dd868 +- golang.org/x/term: 6a3ed07 → 03fcf44 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.13.md b/content/en/blog/releases/v1.1.13.md new file mode 100644 index 0000000000..f10a1c9142 --- /dev/null +++ b/content/en/blog/releases/v1.1.13.md @@ -0,0 +1,26 @@ +--- +title: v1.1.13 +linkTitle: v1.1.13 +date: 2022-04-19 +description: Cloud Provider Azure v1.1.13 +--- + + +## Changes by Kind + +### Uncategorized + +- Add azure private link service client interface to delete a private endpoint connection. ([#1497](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1497), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix InstanceV2.InstanceExists: it should return false instead of ErrInstanceNotFound ([#1512](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1512), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest: [v0.11.25 → v0.11.26](https://github.com/Azure/go-autorest/autorest/compare/v0.11.25...v0.11.26) +- k8s.io/cloud-provider: v0.22.7 → v0.22.8 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.14.md b/content/en/blog/releases/v1.1.14.md new file mode 100644 index 0000000000..85ffed0e4b --- /dev/null +++ b/content/en/blog/releases/v1.1.14.md @@ -0,0 +1,27 @@ +--- +title: v1.1.14 +linkTitle: v1.1.14 +date: 2022-04-30 +description: Cloud Provider Azure v1.1.14 +--- + + +## Changes by Kind + +### Feature + +- Reduce ListPublicIPAddress call count by avoiding each call in loops ([#1547](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1547), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v63.2.0+incompatible → v63.4.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.2.0...v63.4.0) +- github.com/Azure/go-autorest/autorest: [v0.11.26 → v0.11.27](https://github.com/Azure/go-autorest/autorest/compare/v0.11.26...v0.11.27) +- github.com/fsnotify/fsnotify: [v1.5.1 → v1.5.4](https://github.com/fsnotify/fsnotify/compare/v1.5.1...v1.5.4) +- golang.org/x/sys: 1d35b9e → 33da011 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.15.md b/content/en/blog/releases/v1.1.15.md new file mode 100644 index 0000000000..d7ac1c8dd0 --- /dev/null +++ b/content/en/blog/releases/v1.1.15.md @@ -0,0 +1,38 @@ +--- +title: v1.1.15 +linkTitle: v1.1.15 +date: 2022-05-17 +description: Cloud Provider Azure v1.1.15 +--- + + +## Changes by Kind + +### Feature + +- Support ARM resource ID as `userAssignedIdentityID` ([#1617](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1617), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- User can deploy managed Azure private link service resources by annotating the service object. + Detailed design doc can be found here: https://kubernetes-sigs.github.io/cloud-provider-azure/development/design-docs/pls-integration/ ([#1691](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1691), [@jwtty](https://github.com/jwtty)) + +### Bug or Regression + +- Cloud provider will create route for unmanaged node if dual stack is enabled. ([#1724](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1724), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fixes bug when using dual-stack in AKS that prevents IPv6 services from using ILB. ([#1722](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1722), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Azure privateEndpointClient APIs are changed: + 1. Get() and CreateOrUpdate() return *retry.Error instead of error + 2. Add etag argument for CreateOrUpdate() function. ([#1732](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1732), [@jwtty](https://github.com/jwtty)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v63.4.0+incompatible → v64.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.4.0...v64.1.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.18 → v0.9.19](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.18...v0.9.19) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.16.md b/content/en/blog/releases/v1.1.16.md new file mode 100644 index 0000000000..2f8b06ef6d --- /dev/null +++ b/content/en/blog/releases/v1.1.16.md @@ -0,0 +1,27 @@ +--- +title: v1.1.16 +linkTitle: v1.1.16 +date: 2022-06-08 +description: Cloud Provider Azure v1.1.16 +--- + + +## Changes by Kind + +### Other (Cleanup or Flake) + +- Chore: upgrade network API version to 2021-08-01 ([#1786](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1786), [@lodrem](https://github.com/lodrem)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v64.1.0+incompatible → v65.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v64.1.0...v65.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.19 → v0.9.20](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.19...v0.9.20) +- github.com/stretchr/testify: [v1.7.1 → v1.7.2](https://github.com/stretchr/testify/compare/v1.7.1...v1.7.2) +- gopkg.in/yaml.v3: 496545a → v3.0.1 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.17.md b/content/en/blog/releases/v1.1.17.md new file mode 100644 index 0000000000..36598c5315 --- /dev/null +++ b/content/en/blog/releases/v1.1.17.md @@ -0,0 +1,30 @@ +--- +title: v1.1.17 +linkTitle: v1.1.17 +date: 2022-06-19 +description: Cloud Provider Azure v1.1.17 +--- + + +## Changes by Kind + +### Bug or Regression + +- A new annotation is added in order to specify the PublicIP Prefix for creating IP of LB + + service.beta.kubernetes.io/azure-pip-prefix-id: "/subscriptions/8ecadfc9-ffff-4ea4-ffff-0d9f87e4d7c8/resourceGroups/lodrem/providers/Microsoft.Network/publicIPPrefixes/bb" ([#1857](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1857), [@lodrem](https://github.com/lodrem)) +- Fix unexpected managed PLS deletion issue when ILB subnet is specified. ([#1833](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1833), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: avoid unnessary NSG updating on service reconciling ([#1854](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1854), [@feiskyer](https://github.com/feiskyer)) +- Remove redundant restriction on pls autoApproval and visibility. + User can specify a list of subscriptions for visibility (e.g. "sub1 sub2") and a subset of this list for autoApproval (e.g. "sub1"). ([#1869](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1869), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.18.md b/content/en/blog/releases/v1.1.18.md new file mode 100644 index 0000000000..88236e990e --- /dev/null +++ b/content/en/blog/releases/v1.1.18.md @@ -0,0 +1,42 @@ +--- +title: v1.1.18 +linkTitle: v1.1.18 +date: 2022-07-13 +description: Cloud Provider Azure v1.1.18 +--- + + +## Changes by Kind + +### Feature + +- A new service annotation `service.beta.kubernetes.io/azure-disable-load-balancer-floating-ip` has been added to disable floating IPs in load balancer rule. + + If annotation is omitted or if the annotation is set to be "false", then floating IP will be enabled. + If the annotation is set to be "true", then floating IP will be disabled. ([#1980](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1980), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: Do not compare privateIPAllocationMethod when checking if frontend config needs update. Just check if frontend ip matches service spec to avoid unnecessary LB frontend recreation. ([#2003](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2003), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Improve the error handling for ARM APIs. For replication latency, it is possible contentLength is 0 and http + status code is 200 ([#1956](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1956), [@lzhecheng](https://github.com/lzhecheng)) +- Show correct CCM/CNM version in apiserver ([#1933](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1933), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Fix: make sure there is no duplicated rules before updating the network security group ([#2005](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2005), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/cpuguy83/go-md2man/v2: [v2.0.1 → v2.0.2](https://github.com/cpuguy83/go-md2man/v2/compare/v2.0.1...v2.0.2) +- github.com/spf13/cobra: [v1.4.0 → v1.5.0](https://github.com/spf13/cobra/compare/v1.4.0...v1.5.0) +- github.com/stretchr/objx: [v0.1.1 → v0.4.0](https://github.com/stretchr/objx/compare/v0.1.1...v0.4.0) +- github.com/stretchr/testify: [v1.7.2 → v1.8.0](https://github.com/stretchr/testify/compare/v1.7.2...v1.8.0) +- k8s.io/utils: 6203023 → 3a6ce19 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.19.md b/content/en/blog/releases/v1.1.19.md new file mode 100644 index 0000000000..7b7e69994a --- /dev/null +++ b/content/en/blog/releases/v1.1.19.md @@ -0,0 +1,36 @@ +--- +title: v1.1.19 +linkTitle: v1.1.19 +date: 2022-08-02 +description: Cloud Provider Azure v1.1.19 +--- + + +## Changes by Kind + +### Feature + +- Allow external service with floating ip disabled to create PLS. ([#2078](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2078), [@jwtty](https://github.com/jwtty)) +- Result_code in latency logs is more detailed. ([#2025](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2025), [@monianshouhou](https://github.com/monianshouhou)) + +### Bug or Regression + +- Fix PIP tags possibly not ensured issue in ensurePublicIPExists() ([#2050](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2050), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: decouple the LB from the VMSS before VMSS VMs ([#2043](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2043), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Use correct subnet name in reconcileFrontendIPConfigs() ([#2083](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2083), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Fix: make sure there is no duplicated rules before updating the network security group ([#2005](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2005), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest/adal: [v0.9.20 → v0.9.21](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.20...v0.9.21) +- golang.org/x/crypto: e495a2d → 630584e + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.2.md b/content/en/blog/releases/v1.1.2.md new file mode 100644 index 0000000000..5e958372ee --- /dev/null +++ b/content/en/blog/releases/v1.1.2.md @@ -0,0 +1,40 @@ +--- +title: "v1.1.2" +linkTitle: "v1.1.2" +date: 2021-10-21 +description: > + Cloud Provider Azure v1.1.2 +--- + +# Changelog since v1.1.1 + +## Changes by Kind + +### Feature + +- Feat: only restart all controllers after stopping if needed ([#847](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/847), [@nilo19](https://github.com/nilo19)) +- Feat: reloading ccm when the config file changes ([#776](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/776), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: do not crash if the region does not support zones ([#854](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/854), [@nilo19](https://github.com/nilo19)) +- Fix: do not delete the lb that does not exist ([#866](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/866), [@nilo19](https://github.com/nilo19)) +- Fix: ignore the case when comparing azure tags in service annotation ([#812](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/812), [@nilo19](https://github.com/nilo19)) +- Fix: skip not found nodes when reconciling LB backend address pools ([#817](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/817), [@feiskyer](https://github.com/feiskyer)) + +### Uncategorized + +- Chore: support multi-arch cloud-node-manager image ([#835](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/835), [@mainred](https://github.com/mainred)) +- Fix: skip instance not found when decoupling vmss from lb ([#845](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/845), [@nilo19](https://github.com/nilo19)) +- Use docker buildx for multi-arch node image ([#859](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/859), [@mainred](https://github.com/mainred)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.20.md b/content/en/blog/releases/v1.1.20.md new file mode 100644 index 0000000000..86c188ecda --- /dev/null +++ b/content/en/blog/releases/v1.1.20.md @@ -0,0 +1,33 @@ +--- +title: v1.1.20 +linkTitle: v1.1.20 +date: 2022-08-05 +description: Cloud Provider Azure v1.1.20 +--- + + +## Changes by Kind + +### Bug or Regression + +- Chore: update cloud-provider modules to v0.22.12, which includes upstream fixes for stale service spec issue (https://github.com/kubernetes/kubernetes/pull/107631). ([#2119](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2119), [@feiskyer](https://github.com/feiskyer)) + + +## Dependencies + +### Added + +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest: [v0.11.27 → v0.11.28](https://github.com/Azure/go-autorest/autorest/compare/v0.11.27...v0.11.28) +- k8s.io/api: v0.22.8 → v0.22.12 +- k8s.io/apimachinery: v0.22.8 → v0.22.12 +- k8s.io/apiserver: v0.22.8 → v0.22.12 +- k8s.io/client-go: v0.22.8 → v0.22.12 +- k8s.io/cloud-provider: v0.22.8 → v0.22.12 +- k8s.io/component-base: v0.22.8 → v0.22.12 +- k8s.io/controller-manager: v0.22.8 → v0.22.12 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.21.md b/content/en/blog/releases/v1.1.21.md new file mode 100644 index 0000000000..0c04817611 --- /dev/null +++ b/content/en/blog/releases/v1.1.21.md @@ -0,0 +1,40 @@ +--- +title: v1.1.21 +linkTitle: v1.1.21 +date: 2022-09-06 +description: Cloud Provider Azure v1.1.21 +--- + + +## Changes by Kind + +### Feature + +- Feat: add support for network resource in a different subscription when using MSI ([#2261](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2261), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Fix nsg reconciliation failure for floating-ip-disabled services in dual-stack clusters. ([#2247](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2247), [@jwtty](https://github.com/jwtty)) +- Fix: correct condition message for NodeNetworkUnavailable ([#2228](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2228), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Skip "instance not found" error for LB backend address pools ([#2196](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2196), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v65.0.0+incompatible → v66.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v65.0.0...v66.0.0) +- github.com/google/go-cmp: [v0.5.6 → v0.5.8](https://github.com/google/go-cmp/compare/v0.5.6...v0.5.8) +- github.com/google/pprof: [1a94d86 → 94a9f03](https://github.com/google/pprof/compare/1a94d86...94a9f03) +- github.com/onsi/ginkgo/v2: [v2.1.3 → v2.1.6](https://github.com/onsi/ginkgo/v2/compare/v2.1.3...v2.1.6) +- github.com/onsi/ginkgo: [v1.16.5 → v1.16.4](https://github.com/onsi/ginkgo/compare/v1.16.5...v1.16.4) +- github.com/onsi/gomega: [v1.19.0 → v1.20.2](https://github.com/onsi/gomega/compare/v1.19.0...v1.20.2) +- golang.org/x/net: 27dd868 → a158d28 +- golang.org/x/sync: 036812b → 886fb93 +- golang.org/x/sys: 33da011 → 8c9f86f +- golang.org/x/tools: v0.1.2 → v0.1.12 +- google.golang.org/protobuf: v1.27.1 → v1.28.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.22.md b/content/en/blog/releases/v1.1.22.md new file mode 100644 index 0000000000..322dc4a9c4 --- /dev/null +++ b/content/en/blog/releases/v1.1.22.md @@ -0,0 +1,26 @@ +--- +title: v1.1.22 +linkTitle: v1.1.22 +date: 2022-09-18 +description: Cloud Provider Azure v1.1.22 +--- + + +## Changes by Kind + +### Bug or Regression + +- ARM will possibly return StatusCode 200 and ContentLength -1 which is a bug. However, cloudprovider can handle it better by retrying. ([#2318](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2318), [@lzhecheng](https://github.com/lzhecheng)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/prometheus/client_golang: [v1.11.0 → v1.11.1](https://github.com/prometheus/client_golang/compare/v1.11.0...v1.11.1) +- golang.org/x/net: a158d28 → f3363e0 +- golang.org/x/sys: 8c9f86f → 3c1f352 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.23.md b/content/en/blog/releases/v1.1.23.md new file mode 100644 index 0000000000..38b00ff1d8 --- /dev/null +++ b/content/en/blog/releases/v1.1.23.md @@ -0,0 +1,24 @@ +--- +title: v1.1.23 +linkTitle: v1.1.23 +date: 2022-09-18 +description: Cloud Provider Azure v1.1.23 +--- + + +## Changes by Kind + +### Other (Cleanup or Flake) + +- Chore: update go-restful for CVE-2022-1996 ([#2324](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2324), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/emicklei/go-restful: [v2.9.5+incompatible → v2.16.0+incompatible](https://github.com/emicklei/go-restful/compare/v2.9.5...v2.16.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.24.md b/content/en/blog/releases/v1.1.24.md new file mode 100644 index 0000000000..2ef87d9c66 --- /dev/null +++ b/content/en/blog/releases/v1.1.24.md @@ -0,0 +1,33 @@ +--- +title: v1.1.24 +linkTitle: v1.1.24 +date: 2022-09-30 +description: Cloud Provider Azure v1.1.24 +--- + + +## Changes by Kind + +### Bug or Regression + +- Avoid race condition between node-sync-loop routine and service reconcile routine. + Avoid UpdateLoadBalancer() using stale service spec to update Load Balancers. ([#2427](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2427), [@jwtty](https://github.com/jwtty)) +- Check and cleanup both ELB and ILB when a service is being deleted. ([#2435](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2435), [@jwtty](https://github.com/jwtty)) +- Fix: Skip VMSS VM update operations if the VMs are not in good state + fix: Set the retryAfter to 5s when PUT failed due to concurrent operation conflict. ([#2398](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2398), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Only check response body length when request is GET. Avoids unnecessary retry when deleting an LB. ([#2391](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2391), [@jwtty](https://github.com/jwtty)) + +### Other (Cleanup or Flake) + +- Chore: update go-restful for CVE-2022-1996 ([#2324](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2324), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.1.6 → v2.2.0](https://github.com/onsi/ginkgo/v2/compare/v2.1.6...v2.2.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.25.md b/content/en/blog/releases/v1.1.25.md new file mode 100644 index 0000000000..3f786009d8 --- /dev/null +++ b/content/en/blog/releases/v1.1.25.md @@ -0,0 +1,39 @@ +--- +title: v1.1.25 +linkTitle: v1.1.25 +date: 2022-10-21 +description: Cloud Provider Azure v1.1.25 +--- + + +## Changes by Kind + +### Deprecation + +- Deprecate LoadBalancerIP with Service LB IP annotation ([#2470](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2470), [@lzhecheng](https://github.com/lzhecheng)) + +### Bug or Regression + +- Check and cleanup both ELB and ILB when a service is being deleted. ([#2435](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2435), [@jwtty](https://github.com/jwtty)) +- Check internal lb ip in subnet before keeping it, so users can change their lb subnet. ([#2532](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2532), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v66.0.0+incompatible → v67.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v66.0.0...v67.0.0) +- github.com/fsnotify/fsnotify: [v1.5.4 → v1.6.0](https://github.com/fsnotify/fsnotify/compare/v1.5.4...v1.6.0) +- github.com/ianlancetaylor/demangle: [5e5cf60 → 28f6c0f](https://github.com/ianlancetaylor/demangle/compare/5e5cf60...28f6c0f) +- github.com/inconshreveable/mousetrap: [v1.0.0 → v1.0.1](https://github.com/inconshreveable/mousetrap/compare/v1.0.0...v1.0.1) +- github.com/onsi/ginkgo/v2: [v2.2.0 → v2.3.1](https://github.com/onsi/ginkgo/v2/compare/v2.2.0...v2.3.1) +- github.com/onsi/gomega: [v1.20.2 → v1.22.1](https://github.com/onsi/gomega/compare/v1.20.2...v1.22.1) +- github.com/spf13/cobra: [v1.5.0 → v1.6.0](https://github.com/spf13/cobra/compare/v1.5.0...v1.6.0) +- github.com/yuin/goldmark: [v1.3.5 → v1.4.13](https://github.com/yuin/goldmark/compare/v1.3.5...v1.4.13) +- golang.org/x/mod: v0.4.2 → 86c51ed +- golang.org/x/sys: 3c1f352 → 2771309 +- golang.org/x/text: v0.3.7 → v0.4.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.26.md b/content/en/blog/releases/v1.1.26.md new file mode 100644 index 0000000000..5bd72e8d22 --- /dev/null +++ b/content/en/blog/releases/v1.1.26.md @@ -0,0 +1,32 @@ +--- +title: v1.1.26 +linkTitle: v1.1.26 +date: 2022-10-31 +description: Cloud Provider Azure v1.1.26 +--- + + +## Changes by Kind + +### Other (Cleanup or Flake) + +- Bump azure compute to 2022-03-01 ([#2643](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2643), [@MartinForReal](https://github.com/MartinForReal)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/stretchr/objx: [v0.4.0 → v0.5.0](https://github.com/stretchr/objx/compare/v0.4.0...v0.5.0) +- github.com/stretchr/testify: [v1.8.0 → v1.8.1](https://github.com/stretchr/testify/compare/v1.8.0...v1.8.1) +- k8s.io/api: v0.22.12 → v0.22.15 +- k8s.io/apimachinery: v0.22.12 → v0.22.15 +- k8s.io/apiserver: v0.22.12 → v0.22.15 +- k8s.io/client-go: v0.22.12 → v0.22.15 +- k8s.io/cloud-provider: v0.22.12 → v0.22.15 +- k8s.io/component-base: v0.22.12 → v0.22.15 +- k8s.io/controller-manager: v0.22.12 → v0.22.15 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.27.md b/content/en/blog/releases/v1.1.27.md new file mode 100644 index 0000000000..ba1737d8df --- /dev/null +++ b/content/en/blog/releases/v1.1.27.md @@ -0,0 +1,34 @@ +--- +title: v1.1.27 +linkTitle: v1.1.27 +date: 2022-12-05 +description: Cloud Provider Azure v1.1.27 +--- + + +## Changes by Kind + +### Bug or Regression + +- Considering thread safety, results of cache Get() should be deepcopied before used. ([#2705](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2705), [@lzhecheng](https://github.com/lzhecheng)) +- Fix an issue when DNS label of public ip is not updated when service.beta.kubernetes.io/azure-dns-label-name is changed. ([#2703](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2703), [@MartinForReal](https://github.com/MartinForReal)) +- Fix to reduce PublicIPAddress list arm calls ([#2809](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2809), [@jwtty](https://github.com/jwtty)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.0.0+incompatible → v67.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.0.0...v67.1.0) +- golang.org/x/text: v0.4.0 → v0.5.0 +- k8s.io/api: v0.22.15 → v0.22.16 +- k8s.io/apimachinery: v0.22.15 → v0.22.16 +- k8s.io/apiserver: v0.22.15 → v0.22.16 +- k8s.io/client-go: v0.22.15 → v0.22.16 +- k8s.io/cloud-provider: v0.22.15 → v0.22.16 +- k8s.io/component-base: v0.22.15 → v0.22.16 +- k8s.io/controller-manager: v0.22.15 → v0.22.16 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.3.md b/content/en/blog/releases/v1.1.3.md new file mode 100644 index 0000000000..a7aaa24e9a --- /dev/null +++ b/content/en/blog/releases/v1.1.3.md @@ -0,0 +1,31 @@ +--- +title: "v1.1.3" +linkTitle: "v1.1.3" +date: 2021-11-23 +description: > + Cloud Provider Azure v1.1.3 +--- + +# Changelog since v1.1.2 + +## Changes by Kind + +### Feature + +- Feat: support json style tags ([#896](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/896), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: do not delete the lb that does not exist ([#866](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/866), [@nilo19](https://github.com/nilo19)) +- Fix: remove outdated ipv4 route when the corresponding node is deleted ([#891](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/891), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.4.md b/content/en/blog/releases/v1.1.4.md new file mode 100644 index 0000000000..4765733afd --- /dev/null +++ b/content/en/blog/releases/v1.1.4.md @@ -0,0 +1,30 @@ +--- +title: "v1.1.4" +linkTitle: "v1.1.4" +date: 2022-01-10 +description: > + Cloud Provider Azure v1.1.4 +--- + +# Changelog since v1.1.3 + +## Changes by Kind + +### Feature + +- Introduce a configuration option `putVMSSVMBatchSize`. If set, the sync requests will be sent concurrently in batches when putting vmss vms. ([#959](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/959), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: return all LBs in the resource group in ListManagedLBs when deleting the LB, so the LB deleting will not be skipped ([#973](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/973), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.5.md b/content/en/blog/releases/v1.1.5.md new file mode 100644 index 0000000000..ebaba84209 --- /dev/null +++ b/content/en/blog/releases/v1.1.5.md @@ -0,0 +1,34 @@ +--- +title: "v1.1.5" +linkTitle: "v1.1.5" +date: 2022-01-10 +description: > + Cloud Provider Azure v1.1.5 +--- + +# Changelog since v1.1.4 + +## Changes by Kind + +### Bug or Regression + +- Fix: do not update tags on load balancer, security group and route table if both tags and tagsMap are empty ([#1007](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1007), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: reduce node LIST APIs in cloud-node-manager ([#998](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/998), [@feiskyer](https://github.com/feiskyer)) + +### Uncategorized + +- Null ([#974](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/974), [@mainred](https://github.com/mainred)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.6.md b/content/en/blog/releases/v1.1.6.md new file mode 100644 index 0000000000..88610a4735 --- /dev/null +++ b/content/en/blog/releases/v1.1.6.md @@ -0,0 +1,116 @@ +--- +title: "v1.1.6" +linkTitle: "v1.1.6" +date: 2022-02-07 +description: > + Cloud Provider Azure v1.1.6 +--- +# Changelog since v1.1.5 + +## Changes by Kind + +### Feature + +- Feat: support platformSubFaultDomain node label ([#1083](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1083), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: use zones in the pre-existing frontend IP configurations for internal LBs ([#1096](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1096), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +- github.com/DataDog/datadog-go: [v3.2.0+incompatible](https://github.com/DataDog/datadog-go/tree/v3.2.0) +- github.com/circonus-labs/circonus-gometrics: [v2.3.1+incompatible](https://github.com/circonus-labs/circonus-gometrics/tree/v2.3.1) +- github.com/circonus-labs/circonusllhist: [v0.1.3](https://github.com/circonus-labs/circonusllhist/tree/v0.1.3) +- github.com/cncf/xds/go: [a8f9461](https://github.com/cncf/xds/go/tree/a8f9461) +- github.com/golang-jwt/jwt/v4: [v4.2.0](https://github.com/golang-jwt/jwt/v4/tree/v4.2.0) +- github.com/golang/snappy: [v0.0.3](https://github.com/golang/snappy/tree/v0.0.3) +- github.com/hashicorp/go-hclog: [v1.0.0](https://github.com/hashicorp/go-hclog/tree/v1.0.0) +- github.com/hashicorp/go-retryablehttp: [v0.5.3](https://github.com/hashicorp/go-retryablehttp/tree/v0.5.3) +- github.com/iancoleman/strcase: [v0.2.0](https://github.com/iancoleman/strcase/tree/v0.2.0) +- github.com/lyft/protoc-gen-star: [v0.5.3](https://github.com/lyft/protoc-gen-star/tree/v0.5.3) +- github.com/onsi/ginkgo/v2: [v2.0.0](https://github.com/onsi/ginkgo/v2/tree/v2.0.0) +- github.com/sagikazarmark/crypt: [v0.3.0](https://github.com/sagikazarmark/crypt/tree/v0.3.0) +- github.com/tv42/httpunix: [b75d861](https://github.com/tv42/httpunix/tree/b75d861) +- google.golang.org/grpc/cmd/protoc-gen-go-grpc: v1.1.0 + +### Changed +- cloud.google.com/go/firestore: v1.1.0 → v1.6.1 +- cloud.google.com/go: v0.81.0 → v0.99.0 +- github.com/Azure/azure-sdk-for-go: [v55.8.0+incompatible → v61.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v55.8.0...v61.3.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.14 → v0.9.18](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.14...v0.9.18) +- github.com/Azure/go-autorest/autorest: [v0.11.19 → v0.11.24](https://github.com/Azure/go-autorest/autorest/compare/v0.11.19...v0.11.24) +- github.com/armon/go-metrics: [f0300d1 → v0.3.10](https://github.com/armon/go-metrics/compare/f0300d1...v0.3.10) +- github.com/armon/go-radix: [7fddfc3 → v1.0.0](https://github.com/armon/go-radix/compare/7fddfc3...v1.0.0) +- github.com/bketelsen/crypt: [v0.0.4 → 5cbc8cc](https://github.com/bketelsen/crypt/compare/v0.0.4...5cbc8cc) +- github.com/census-instrumentation/opencensus-proto: [v0.2.1 → v0.3.0](https://github.com/census-instrumentation/opencensus-proto/compare/v0.2.1...v0.3.0) +- github.com/cespare/xxhash/v2: [v2.1.1 → v2.1.2](https://github.com/cespare/xxhash/v2/compare/v2.1.1...v2.1.2) +- github.com/cncf/udpa/go: [5459f2c → 04548b0](https://github.com/cncf/udpa/go/compare/5459f2c...04548b0) +- github.com/cpuguy83/go-md2man/v2: [v2.0.0 → v2.0.1](https://github.com/cpuguy83/go-md2man/v2/compare/v2.0.0...v2.0.1) +- github.com/envoyproxy/go-control-plane: [668b12f → v0.10.1](https://github.com/envoyproxy/go-control-plane/compare/668b12f...v0.10.1) +- github.com/envoyproxy/protoc-gen-validate: [v0.1.0 → v0.6.2](https://github.com/envoyproxy/protoc-gen-validate/compare/v0.1.0...v0.6.2) +- github.com/evanphx/json-patch: [v4.11.0+incompatible → v5.6.0+incompatible](https://github.com/evanphx/json-patch/compare/v4.11.0...v5.6.0) +- github.com/fatih/color: [v1.7.0 → v1.13.0](https://github.com/fatih/color/compare/v1.7.0...v1.13.0) +- github.com/fsnotify/fsnotify: [v1.4.9 → v1.5.1](https://github.com/fsnotify/fsnotify/compare/v1.4.9...v1.5.1) +- github.com/google/go-cmp: [v0.5.5 → v0.5.6](https://github.com/google/go-cmp/compare/v0.5.5...v0.5.6) +- github.com/google/martian/v3: [v3.1.0 → v3.2.1](https://github.com/google/martian/v3/compare/v3.1.0...v3.2.1) +- github.com/google/pprof: [cbba55b → 4bb14d4](https://github.com/google/pprof/compare/cbba55b...4bb14d4) +- github.com/googleapis/gax-go/v2: [v2.0.5 → v2.1.1](https://github.com/googleapis/gax-go/v2/compare/v2.0.5...v2.1.1) +- github.com/hashicorp/consul/api: [v1.1.0 → v1.11.0](https://github.com/hashicorp/consul/api/compare/v1.1.0...v1.11.0) +- github.com/hashicorp/consul/sdk: [v0.1.1 → v0.8.0](https://github.com/hashicorp/consul/sdk/compare/v0.1.1...v0.8.0) +- github.com/hashicorp/go-cleanhttp: [v0.5.1 → v0.5.2](https://github.com/hashicorp/go-cleanhttp/compare/v0.5.1...v0.5.2) +- github.com/hashicorp/go-immutable-radix: [v1.0.0 → v1.3.1](https://github.com/hashicorp/go-immutable-radix/compare/v1.0.0...v1.3.1) +- github.com/hashicorp/go-multierror: [v1.0.0 → v1.1.0](https://github.com/hashicorp/go-multierror/compare/v1.0.0...v1.1.0) +- github.com/hashicorp/go-rootcerts: [v1.0.0 → v1.0.2](https://github.com/hashicorp/go-rootcerts/compare/v1.0.0...v1.0.2) +- github.com/hashicorp/golang-lru: [v0.5.1 → v0.5.4](https://github.com/hashicorp/golang-lru/compare/v0.5.1...v0.5.4) +- github.com/hashicorp/mdns: [v1.0.0 → v1.0.4](https://github.com/hashicorp/mdns/compare/v1.0.0...v1.0.4) +- github.com/hashicorp/memberlist: [v0.1.3 → v0.3.0](https://github.com/hashicorp/memberlist/compare/v0.1.3...v0.3.0) +- github.com/hashicorp/serf: [v0.8.2 → v0.9.6](https://github.com/hashicorp/serf/compare/v0.8.2...v0.9.6) +- github.com/json-iterator/go: [v1.1.11 → v1.1.12](https://github.com/json-iterator/go/compare/v1.1.11...v1.1.12) +- github.com/mattn/go-colorable: [v0.0.9 → v0.1.12](https://github.com/mattn/go-colorable/compare/v0.0.9...v0.1.12) +- github.com/mattn/go-isatty: [v0.0.3 → v0.0.14](https://github.com/mattn/go-isatty/compare/v0.0.3...v0.0.14) +- github.com/miekg/dns: [v1.0.14 → v1.1.41](https://github.com/miekg/dns/compare/v1.0.14...v1.1.41) +- github.com/mitchellh/cli: [v1.0.0 → v1.1.0](https://github.com/mitchellh/cli/compare/v1.0.0...v1.1.0) +- github.com/mitchellh/mapstructure: [v1.4.1 → v1.4.3](https://github.com/mitchellh/mapstructure/compare/v1.4.1...v1.4.3) +- github.com/modern-go/reflect2: [v1.0.1 → v1.0.2](https://github.com/modern-go/reflect2/compare/v1.0.1...v1.0.2) +- github.com/onsi/ginkgo: [v1.16.4 → v1.16.5](https://github.com/onsi/ginkgo/compare/v1.16.4...v1.16.5) +- github.com/onsi/gomega: [v1.15.0 → v1.18.1](https://github.com/onsi/gomega/compare/v1.15.0...v1.18.1) +- github.com/pascaldekloe/goe: [57f6aae → v0.1.0](https://github.com/pascaldekloe/goe/compare/57f6aae...v0.1.0) +- github.com/pelletier/go-toml: [v1.9.3 → v1.9.4](https://github.com/pelletier/go-toml/compare/v1.9.3...v1.9.4) +- github.com/posener/complete: [v1.1.1 → v1.2.3](https://github.com/posener/complete/compare/v1.1.1...v1.2.3) +- github.com/rubiojr/go-vhd: [02e2102 → ccecf6c](https://github.com/rubiojr/go-vhd/compare/02e2102...ccecf6c) +- github.com/russross/blackfriday/v2: [v2.0.1 → v2.1.0](https://github.com/russross/blackfriday/v2/compare/v2.0.1...v2.1.0) +- github.com/spf13/cast: [v1.3.1 → v1.4.1](https://github.com/spf13/cast/compare/v1.3.1...v1.4.1) +- github.com/spf13/cobra: [v1.2.1 → v1.3.0](https://github.com/spf13/cobra/compare/v1.2.1...v1.3.0) +- github.com/spf13/viper: [v1.8.1 → v1.10.0](https://github.com/spf13/viper/compare/v1.8.1...v1.10.0) +- go.etcd.io/etcd/api/v3: v3.5.0 → v3.5.1 +- go.etcd.io/etcd/client/pkg/v3: v3.5.0 → v3.5.1 +- go.etcd.io/etcd/client/v2: v2.305.0 → v2.305.1 +- golang.org/x/crypto: 5ea612d → e495a2d +- golang.org/x/mod: v0.4.2 → v0.5.0 +- golang.org/x/net: 37e1c6a → 491a49a +- golang.org/x/oauth2: 2e8d934 → d3ed0bb +- golang.org/x/sys: 59db8d7 → 1d35b9e +- golang.org/x/text: v0.3.6 → v0.3.7 +- golang.org/x/tools: v0.1.2 → v0.1.5 +- google.golang.org/api: v0.44.0 → v0.62.0 +- google.golang.org/genproto: f16073e → 3a66f56 +- google.golang.org/grpc: v1.38.0 → v1.42.0 +- google.golang.org/protobuf: v1.26.0 → v1.27.1 +- gopkg.in/ini.v1: v1.62.0 → v1.66.2 +- k8s.io/api: v0.22.0 → v0.22.6 +- k8s.io/apimachinery: v0.22.0 → v0.22.6 +- k8s.io/apiserver: v0.22.0 → v0.22.6 +- k8s.io/client-go: v0.22.0 → v0.22.6 +- k8s.io/cloud-provider: v0.22.0 → v0.22.6 +- k8s.io/component-base: v0.22.0 → v0.22.6 +- k8s.io/controller-manager: v0.22.0 → v0.22.6 +- k8s.io/kube-openapi: 9528897 → 2043435 +- k8s.io/utils: 4b05e18 → bdf08cb +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.22 → v0.0.27 +- sigs.k8s.io/structured-merge-diff/v4: v4.1.2 → v4.2.1 +- sigs.k8s.io/yaml: v1.2.0 → v1.3.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.7.md b/content/en/blog/releases/v1.1.7.md new file mode 100644 index 0000000000..9b45258fb0 --- /dev/null +++ b/content/en/blog/releases/v1.1.7.md @@ -0,0 +1,54 @@ +--- +title: v1.1.7 +linkTitle: v1.1.7 +date: 2022-02-23 +description: Cloud Provider Azure v1.1.7 +--- + + +## Changes by Kind + +### Feature + +- Following configuration will be applied to the all ports of service. + + "service.beta.kubernetes.io/azure-load-balancer-health-probe-protocol" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-interval" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-num-of-probe" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path" + + If health probe is needed, user should specify AppProtocol in port object of Service spec. + And following protocols are supported: http, tcp, https + + Additional annotations are added. where port is the port number of port object + + service.beta.kubernetes.io/port_{port}_health-probe_interval + service.beta.kubernetes.io/port_{port}_health-probe_num-of-probe + service.beta.kubernetes.io/port_{port}_health-probe_request-path + + Please refer to docs. ([#1128](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1128), [@MartinForReal](https://github.com/MartinForReal)) + +### Uncategorized + +- If spec.LoadBalancerSourceRanges is specified and lb is in internal mode, LB is open for public access.(close by default for security reasons) ([#1122](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1122), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- This code change fixes the bug that UDP services would trigger unnecessary LoadBalancer updates. The root cause is that a field not working for non-TCP protocols is considered. + ref: #1090 ([#1106](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1106), [@lzhecheng](https://github.com/lzhecheng)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/stretchr/objx: [v0.2.0 → v0.1.1](https://github.com/stretchr/objx/compare/v0.2.0...v0.1.1) +- k8s.io/api: v0.22.6 → v0.22.7 +- k8s.io/apimachinery: v0.22.6 → v0.22.7 +- k8s.io/apiserver: v0.22.6 → v0.22.7 +- k8s.io/client-go: v0.22.6 → v0.22.7 +- k8s.io/cloud-provider: v0.22.6 → v0.22.7 +- k8s.io/component-base: v0.22.6 → v0.22.7 +- k8s.io/controller-manager: v0.22.6 → v0.22.7 +- k8s.io/utils: bdf08cb → 6203023 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.8.md b/content/en/blog/releases/v1.1.8.md new file mode 100644 index 0000000000..f3801e581a --- /dev/null +++ b/content/en/blog/releases/v1.1.8.md @@ -0,0 +1,20 @@ +--- +title: v1.1.8 +linkTitle: v1.1.8 +date: 2022-03-04 +description: Cloud Provider Azure v1.1.8 +--- + + + + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v61.3.0+incompatible → v62.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v61.3.0...v62.0.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.1.9.md b/content/en/blog/releases/v1.1.9.md new file mode 100644 index 0000000000..d08e116aef --- /dev/null +++ b/content/en/blog/releases/v1.1.9.md @@ -0,0 +1,91 @@ +--- +title: v1.1.9 +linkTitle: v1.1.9 +date: 2022-03-22 +description: Cloud Provider Azure v1.1.9 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: remove agent pool LB if that vmSet is changed to primary vmSet + fix: reuse previous private IP address when changing load balancers ([#1298](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1298), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Uncategorized + +- Chore: add verbose logs for latency and operation start timestamps ([#1259](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1259), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- cloud.google.com/go/firestore: v1.6.1 → v1.1.0 +- cloud.google.com/go: v0.99.0 → v0.65.0 +- github.com/Azure/azure-sdk-for-go: [v62.0.0+incompatible → v62.2.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.0.0...v62.2.0) +- github.com/armon/go-metrics: [v0.3.10 → f0300d1](https://github.com/armon/go-metrics/compare/v0.3.10...f0300d1) +- github.com/armon/go-radix: [v1.0.0 → 7fddfc3](https://github.com/armon/go-radix/compare/v1.0.0...7fddfc3) +- github.com/census-instrumentation/opencensus-proto: [v0.3.0 → v0.2.1](https://github.com/census-instrumentation/opencensus-proto/compare/v0.3.0...v0.2.1) +- github.com/cncf/xds/go: [a8f9461 → cb28da3](https://github.com/cncf/xds/go/compare/a8f9461...cb28da3) +- github.com/envoyproxy/go-control-plane: [v0.10.1 → cf90f65](https://github.com/envoyproxy/go-control-plane/compare/v0.10.1...cf90f65) +- github.com/envoyproxy/protoc-gen-validate: [v0.6.2 → v0.1.0](https://github.com/envoyproxy/protoc-gen-validate/compare/v0.6.2...v0.1.0) +- github.com/fatih/color: [v1.13.0 → v1.7.0](https://github.com/fatih/color/compare/v1.13.0...v1.7.0) +- github.com/google/martian/v3: [v3.2.1 → v3.0.0](https://github.com/google/martian/v3/compare/v3.2.1...v3.0.0) +- github.com/google/pprof: [4bb14d4 → 94a9f03](https://github.com/google/pprof/compare/4bb14d4...94a9f03) +- github.com/googleapis/gax-go/v2: [v2.1.1 → v2.0.5](https://github.com/googleapis/gax-go/v2/compare/v2.1.1...v2.0.5) +- github.com/hashicorp/consul/api: [v1.11.0 → v1.1.0](https://github.com/hashicorp/consul/api/compare/v1.11.0...v1.1.0) +- github.com/hashicorp/consul/sdk: [v0.8.0 → v0.1.1](https://github.com/hashicorp/consul/sdk/compare/v0.8.0...v0.1.1) +- github.com/hashicorp/go-cleanhttp: [v0.5.2 → v0.5.1](https://github.com/hashicorp/go-cleanhttp/compare/v0.5.2...v0.5.1) +- github.com/hashicorp/go-immutable-radix: [v1.3.1 → v1.0.0](https://github.com/hashicorp/go-immutable-radix/compare/v1.3.1...v1.0.0) +- github.com/hashicorp/go-multierror: [v1.1.0 → v1.0.0](https://github.com/hashicorp/go-multierror/compare/v1.1.0...v1.0.0) +- github.com/hashicorp/go-rootcerts: [v1.0.2 → v1.0.0](https://github.com/hashicorp/go-rootcerts/compare/v1.0.2...v1.0.0) +- github.com/hashicorp/golang-lru: [v0.5.4 → v0.5.1](https://github.com/hashicorp/golang-lru/compare/v0.5.4...v0.5.1) +- github.com/hashicorp/mdns: [v1.0.4 → v1.0.0](https://github.com/hashicorp/mdns/compare/v1.0.4...v1.0.0) +- github.com/hashicorp/memberlist: [v0.3.0 → v0.1.3](https://github.com/hashicorp/memberlist/compare/v0.3.0...v0.1.3) +- github.com/hashicorp/serf: [v0.9.6 → v0.8.2](https://github.com/hashicorp/serf/compare/v0.9.6...v0.8.2) +- github.com/magiconair/properties: [v1.8.5 → v1.8.1](https://github.com/magiconair/properties/compare/v1.8.5...v1.8.1) +- github.com/mattn/go-colorable: [v0.1.12 → v0.0.9](https://github.com/mattn/go-colorable/compare/v0.1.12...v0.0.9) +- github.com/mattn/go-isatty: [v0.0.14 → v0.0.3](https://github.com/mattn/go-isatty/compare/v0.0.14...v0.0.3) +- github.com/miekg/dns: [v1.1.41 → v1.0.14](https://github.com/miekg/dns/compare/v1.1.41...v1.0.14) +- github.com/mitchellh/cli: [v1.1.0 → v1.0.0](https://github.com/mitchellh/cli/compare/v1.1.0...v1.0.0) +- github.com/mitchellh/mapstructure: [v1.4.3 → v1.1.2](https://github.com/mitchellh/mapstructure/compare/v1.4.3...v1.1.2) +- github.com/pascaldekloe/goe: [v0.1.0 → 57f6aae](https://github.com/pascaldekloe/goe/compare/v0.1.0...57f6aae) +- github.com/pelletier/go-toml: [v1.9.4 → v1.2.0](https://github.com/pelletier/go-toml/compare/v1.9.4...v1.2.0) +- github.com/posener/complete: [v1.2.3 → v1.1.1](https://github.com/posener/complete/compare/v1.2.3...v1.1.1) +- github.com/spf13/afero: [v1.6.0 → v1.2.2](https://github.com/spf13/afero/compare/v1.6.0...v1.2.2) +- github.com/spf13/cast: [v1.4.1 → v1.3.0](https://github.com/spf13/cast/compare/v1.4.1...v1.3.0) +- github.com/spf13/cobra: [v1.3.0 → v1.4.0](https://github.com/spf13/cobra/compare/v1.3.0...v1.4.0) +- github.com/spf13/jwalterweatherman: [v1.1.0 → v1.0.0](https://github.com/spf13/jwalterweatherman/compare/v1.1.0...v1.0.0) +- github.com/spf13/viper: [v1.10.0 → v1.7.0](https://github.com/spf13/viper/compare/v1.10.0...v1.7.0) +- github.com/stretchr/testify: [v1.7.0 → v1.7.1](https://github.com/stretchr/testify/compare/v1.7.0...v1.7.1) +- go.etcd.io/etcd/client/v2: v2.305.1 → v2.305.0 +- go.opencensus.io: v0.23.0 → v0.22.4 +- golang.org/x/mod: v0.5.0 → v0.4.2 +- golang.org/x/tools: v0.1.5 → v0.1.2 +- google.golang.org/api: v0.62.0 → v0.30.0 +- gopkg.in/ini.v1: v1.66.2 → v1.51.0 +- k8s.io/api: v0.22.7 → v0.22.8 +- k8s.io/apimachinery: v0.22.7 → v0.22.8 +- k8s.io/apiserver: v0.22.7 → v0.22.8 +- k8s.io/client-go: v0.22.7 → v0.22.8 +- k8s.io/component-base: v0.22.7 → v0.22.8 +- k8s.io/controller-manager: v0.22.7 → v0.22.8 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.27 → v0.0.30 + +### Removed +- github.com/DataDog/datadog-go: [v3.2.0+incompatible](https://github.com/DataDog/datadog-go/tree/v3.2.0) +- github.com/circonus-labs/circonus-gometrics: [v2.3.1+incompatible](https://github.com/circonus-labs/circonus-gometrics/tree/v2.3.1) +- github.com/circonus-labs/circonusllhist: [v0.1.3](https://github.com/circonus-labs/circonusllhist/tree/v0.1.3) +- github.com/golang/snappy: [v0.0.3](https://github.com/golang/snappy/tree/v0.0.3) +- github.com/hashicorp/go-hclog: [v1.0.0](https://github.com/hashicorp/go-hclog/tree/v1.0.0) +- github.com/hashicorp/go-retryablehttp: [v0.5.3](https://github.com/hashicorp/go-retryablehttp/tree/v0.5.3) +- github.com/iancoleman/strcase: [v0.2.0](https://github.com/iancoleman/strcase/tree/v0.2.0) +- github.com/kr/fs: [v0.1.0](https://github.com/kr/fs/tree/v0.1.0) +- github.com/lyft/protoc-gen-star: [v0.5.3](https://github.com/lyft/protoc-gen-star/tree/v0.5.3) +- github.com/pkg/sftp: [v1.10.1](https://github.com/pkg/sftp/tree/v1.10.1) +- github.com/sagikazarmark/crypt: [v0.3.0](https://github.com/sagikazarmark/crypt/tree/v0.3.0) +- github.com/tv42/httpunix: [b75d861](https://github.com/tv42/httpunix/tree/b75d861) +- google.golang.org/grpc/cmd/protoc-gen-go-grpc: v1.1.0 diff --git a/content/en/blog/releases/v1.23.0.md b/content/en/blog/releases/v1.23.0.md new file mode 100644 index 0000000000..cfa83db775 --- /dev/null +++ b/content/en/blog/releases/v1.23.0.md @@ -0,0 +1,172 @@ +--- +title: "v1.23.0" +linkTitle: "v1.23.0" +date: 2021-12-16 +description: > + Cloud Provider Azure v1.23.0 +--- + +# Changelog since v1.1.0 + +## Changes by Kind + +### Feature + +- Adds support for the Cloud Node Manager to run as a Windows Service. This can be enabled using the --windows-service flag. ([#823](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/823), [@JoelSpeed](https://github.com/JoelSpeed)) +- Chore: rename tag key for CSI drivers ([#799](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/799), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: Adds windows server 2022 build ([#821](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/821), [@nick5616](https://github.com/nick5616)) +- Feat: add AccessTier in file share creation interface ([#781](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/781), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: add AllowBlobPublicAccess setting in storage account creation ([#784](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/784), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: add disk online resize support ([#889](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/889), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: only restart all controllers after stopping if needed ([#832](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/832), [@nilo19](https://github.com/nilo19)) +- Feat: reduce vmss cache refresh in parallel disk attach/detach ([#803](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/803), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: support creating account if not exists when account name is provided ([#786](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/786), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: support json style tags ([#892](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/892), [@nilo19](https://github.com/nilo19)) +- Feat: support reloading the cloud controller manager based on the changes of the config file ([#769](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/769), [@nilo19](https://github.com/nilo19)) +- Introduce a new config `loadBalancerBackendPoolConfigurationType` and it can be set to `nodeIPConfiguration` (default) or `nodeIP`. If set to `nodeIPConfiguration`, everything will keep unchanged. If set to `nodeIP`, the cloud provider will call the LB API to attach the node private IPs to the LB instead of linking the NICs to the LB. ([#918](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/918), [@nilo19](https://github.com/nilo19)) +- Prefix 'k8s-azure-' has been added to the following tags: + + Legacy Tag | New Tag | Comment + -- | -- | -- + service | k8s-azure-service | Applied on public IP + kubernetes-cluster-name | k8s-azure-cluster-name | Applied on public IP + kubernetes-dns-label-service | k8s-azure-dns-label-service | Applied on public IP + + To keep backward compatibility, the legacy tags on existing public IP would not be removed, but newly created public IPs would only get the new tags. ([#815](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/815), [@feiskyer](https://github.com/feiskyer)) + +### Documentation + +- Chore: add release notes for v0.7.9, v1.0.6 and v1.1.2 ([#867](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/867), [@nilo19](https://github.com/nilo19)) + +### Failing Test + +- Chore: fix implicitly required vendor ([#775](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/775), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- **Release note**: ([#780](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/780), [@andyzhangx](https://github.com/andyzhangx)) +- 1 controllerserver.go:378] delete azure disk(/subscriptions/xxx/resourceGroups/aks55h93-nodegroup/providers/Microsoft.Compute/disks/pvc-ecfefbb9-102c-4f40-944f-d5d4b6183568) returned with Retriable: true, RetryAfter: 0s, HTTPStatusCode: 0, RawError: azure cloud provider rate limited(read) for operation "GetDisk" + 1 utils.go:100] GRPC error: Retriable: true, RetryAfter: 0s, HTTPStatusCode: 0, RawError: azure cloud provider rate limited(read) for operation "GetDisk" ([#757](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/757), [@andyzhangx](https://github.com/andyzhangx)) +- Fix detach disk issue on deleting vmss node ([#774](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/774), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: consolidate logs for instance not found error ([#794](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/794), [@feiskyer](https://github.com/feiskyer)) +- Fix: detach disk should return error when throttled ([#929](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/929), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: do not crash if the region does not support zones ([#850](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/850), [@nilo19](https://github.com/nilo19)) +- Fix: do not delete the lb that does not exist ([#860](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/860), [@nilo19](https://github.com/nilo19)) +- Fix: fix a potential data race issue in unit test ([#848](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/848), [@nilo19](https://github.com/nilo19)) +- Fix: ignore the case when comparing azure tags in service annotation ([#791](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/791), [@nilo19](https://github.com/nilo19)) +- Fix: multi accounts creation issue when private endpoint creation failed ([#880](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/880), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: panic due to nil pointer ([#899](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/899), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: remove VMSS instances from SLB backend pool only when they are explicitly labeled + fix: remove VMSS from SLB backend pool only when necessary ([#856](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/856), [@feiskyer](https://github.com/feiskyer)) +- Fix: remove outdated ipv4 route when the corresponding node is deleted ([#876](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/876), [@nilo19](https://github.com/nilo19)) +- Fix: use correct gitVersion in userAgent ([#764](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/764), [@feiskyer](https://github.com/feiskyer)) +- Version.Info{Major:"1", Minor:"0+", GitVersion:"v1.0.1-116-g93dee8c35", GitCommit:"93dee8c35bddbff6beabb764725c74d252130c3c", GitTreeState:"", BuildDate:"2021-08-11T08:21:10Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"darwin/amd64"} ([#749](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/749), [@feiskyer](https://github.com/feiskyer)) + +### Other (Cleanup or Flake) + +- Chore: add mixed protocol service e2e test ([#897](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/897), [@nilo19](https://github.com/nilo19)) +- Chore: bump k8s.io/cloud-provider to v0.23.0 ([#934](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/934), [@nilo19](https://github.com/nilo19)) +- Chore: detect data race in unit tests ([#849](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/849), [@nilo19](https://github.com/nilo19)) +- Chore: expose some public functions ([#754](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/754), [@andyzhangx](https://github.com/andyzhangx)) +- Chore: logging the service body when service controller invokes the cloud provider ([#778](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/778), [@nilo19](https://github.com/nilo19)) +- Cleanup: remove blob disk controller + blob disk is not supported any more ([#909](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/909), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: report an error when route table name is not configured ([#819](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/819), [@feiskyer](https://github.com/feiskyer)) + +### Uncategorized + +- Fix: skip instance not found when decoupling vmss from lb ([#842](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/842), [@nilo19](https://github.com/nilo19)) +- Fix: switch to sync detach disk ([#790](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/790), [@andyzhangx](https://github.com/andyzhangx)) +- Use docker buildx for multi-arch node image ([#855](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/855), [@mainred](https://github.com/mainred)) + +## Dependencies + +### Added +- github.com/cncf/xds/go: [fbca930](https://github.com/cncf/xds/go/tree/fbca930) +- github.com/getkin/kin-openapi: [v0.76.0](https://github.com/getkin/kin-openapi/tree/v0.76.0) +- github.com/go-logr/zapr: [v1.2.0](https://github.com/go-logr/zapr/tree/v1.2.0) +- github.com/golang-jwt/jwt/v4: [v4.0.0](https://github.com/golang-jwt/jwt/v4/tree/v4.0.0) +- github.com/gorilla/mux: [v1.8.0](https://github.com/gorilla/mux/tree/v1.8.0) +- k8s.io/component-helpers: v0.23.0 +- k8s.io/kubelet: v0.23.0 +- sigs.k8s.io/json: c049b76 + +### Changed +- github.com/Azure/azure-sdk-for-go: [v55.0.0+incompatible → v55.8.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v55.0.0...v55.8.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.14 → v0.9.17](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.14...v0.9.17) +- github.com/Azure/go-autorest/autorest/validation: [v0.1.0 → v0.3.1](https://github.com/Azure/go-autorest/autorest/validation/compare/v0.1.0...v0.3.1) +- github.com/Azure/go-autorest/autorest: [v0.11.19 → v0.11.22](https://github.com/Azure/go-autorest/autorest/compare/v0.11.19...v0.11.22) +- github.com/benbjohnson/clock: [v1.0.3 → v1.1.0](https://github.com/benbjohnson/clock/compare/v1.0.3...v1.1.0) +- github.com/envoyproxy/go-control-plane: [668b12f → 63b5d3c](https://github.com/envoyproxy/go-control-plane/compare/668b12f...63b5d3c) +- github.com/evanphx/json-patch: [v4.11.0+incompatible → v4.12.0+incompatible](https://github.com/evanphx/json-patch/compare/v4.11.0...v4.12.0) +- github.com/fsnotify/fsnotify: [v1.4.9 → v1.5.1](https://github.com/fsnotify/fsnotify/compare/v1.4.9...v1.5.1) +- github.com/go-logr/logr: [v0.4.0 → v1.2.0](https://github.com/go-logr/logr/compare/v0.4.0...v1.2.0) +- github.com/json-iterator/go: [v1.1.11 → v1.1.12](https://github.com/json-iterator/go/compare/v1.1.11...v1.1.12) +- github.com/mitchellh/go-homedir: [v1.1.0 → v1.0.0](https://github.com/mitchellh/go-homedir/compare/v1.1.0...v1.0.0) +- github.com/modern-go/reflect2: [v1.0.1 → v1.0.2](https://github.com/modern-go/reflect2/compare/v1.0.1...v1.0.2) +- github.com/onsi/ginkgo: [v1.16.4 → v1.16.5](https://github.com/onsi/ginkgo/compare/v1.16.4...v1.16.5) +- github.com/onsi/gomega: [v1.15.0 → v1.16.0](https://github.com/onsi/gomega/compare/v1.15.0...v1.16.0) +- github.com/prometheus/common: [v0.26.0 → v0.28.0](https://github.com/prometheus/common/compare/v0.26.0...v0.28.0) +- github.com/stretchr/objx: [v0.2.0 → v0.1.1](https://github.com/stretchr/objx/compare/v0.2.0...v0.1.1) +- github.com/yuin/goldmark: [v1.3.5 → v1.4.0](https://github.com/yuin/goldmark/compare/v1.3.5...v1.4.0) +- go.uber.org/zap: v1.17.0 → v1.19.0 +- golang.org/x/crypto: 5ea612d → 089bfa5 +- golang.org/x/net: 37e1c6a → e898025 +- golang.org/x/oauth2: 2e8d934 → 2bc19b1 +- golang.org/x/sys: 59db8d7 → f4d4317 +- golang.org/x/term: 6a3ed07 → 6886f2d +- golang.org/x/text: v0.3.6 → v0.3.7 +- golang.org/x/tools: v0.1.2 → d4cc65f +- google.golang.org/genproto: f16073e → fe13028 +- google.golang.org/grpc: v1.38.0 → v1.40.0 +- google.golang.org/protobuf: v1.26.0 → v1.27.1 +- k8s.io/api: v0.22.0 → v0.23.0 +- k8s.io/apimachinery: v0.22.0 → v0.23.0 +- k8s.io/apiserver: v0.22.0 → v0.23.0 +- k8s.io/client-go: v0.22.0 → v0.23.0 +- k8s.io/cloud-provider: v0.22.0 → v0.23.0 +- k8s.io/component-base: v0.22.0 → v0.23.0 +- k8s.io/controller-manager: v0.22.0 → v0.23.0 +- k8s.io/gengo: 3a45101 → 485abfe +- k8s.io/klog/v2: v2.10.0 → v2.30.0 +- k8s.io/kube-openapi: 9528897 → e816edb +- k8s.io/utils: 4b05e18 → cb0fa31 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.22 → v0.0.25 +- sigs.k8s.io/yaml: v1.2.0 → v1.3.0 + +### Removed +- cloud.google.com/go/datastore: v1.1.0 +- cloud.google.com/go/pubsub: v1.3.1 +- github.com/alecthomas/template: [fb15b89](https://github.com/alecthomas/template/tree/fb15b89) +- github.com/alecthomas/units: [f65c72e](https://github.com/alecthomas/units/tree/f65c72e) +- github.com/client9/misspell: [v0.3.4](https://github.com/client9/misspell/tree/v0.3.4) +- github.com/coreos/bbolt: [v1.3.2](https://github.com/coreos/bbolt/tree/v1.3.2) +- github.com/coreos/etcd: [v3.3.13+incompatible](https://github.com/coreos/etcd/tree/v3.3.13) +- github.com/coreos/go-systemd: [95778df](https://github.com/coreos/go-systemd/tree/95778df) +- github.com/coreos/pkg: [399ea9e](https://github.com/coreos/pkg/tree/399ea9e) +- github.com/dgrijalva/jwt-go: [v3.2.0+incompatible](https://github.com/dgrijalva/jwt-go/tree/v3.2.0) +- github.com/dgryski/go-sip13: [e10d5fe](https://github.com/dgryski/go-sip13/tree/e10d5fe) +- github.com/dnaeon/go-vcr: [v1.1.0](https://github.com/dnaeon/go-vcr/tree/v1.1.0) +- github.com/go-gl/glfw: [e6da0ac](https://github.com/go-gl/glfw/tree/e6da0ac) +- github.com/gofrs/uuid: [v4.0.0+incompatible](https://github.com/gofrs/uuid/tree/v4.0.0) +- github.com/google/martian: [v2.1.0+incompatible](https://github.com/google/martian/tree/v2.1.0) +- github.com/hpcloud/tail: [v1.0.0](https://github.com/hpcloud/tail/tree/v1.0.0) +- github.com/jpillora/backoff: [v1.0.0](https://github.com/jpillora/backoff/tree/v1.0.0) +- github.com/konsorten/go-windows-terminal-sequences: [v1.0.3](https://github.com/konsorten/go-windows-terminal-sequences/tree/v1.0.3) +- github.com/kr/logfmt: [b84e30a](https://github.com/kr/logfmt/tree/b84e30a) +- github.com/kr/pty: [v1.1.1](https://github.com/kr/pty/tree/v1.1.1) +- github.com/modocache/gover: [b58185e](https://github.com/modocache/gover/tree/b58185e) +- github.com/oklog/ulid: [v1.3.1](https://github.com/oklog/ulid/tree/v1.3.1) +- github.com/prometheus/tsdb: [v0.7.1](https://github.com/prometheus/tsdb/tree/v0.7.1) +- github.com/rubiojr/go-vhd: [02e2102](https://github.com/rubiojr/go-vhd/tree/02e2102) +- gopkg.in/fsnotify.v1: v1.4.7 +- gopkg.in/resty.v1: v1.12.0 +- rsc.io/binaryregexp: v0.2.0 +- rsc.io/quote/v3: v3.1.0 +- rsc.io/sampler: v1.3.0 +ree/02e2102) +- gopkg.in/fsnotify.v1: v1.4.7 +- gopkg.in/resty.v1: v1.12.0 +- rsc.io/binaryregexp: v0.2.0 +- rsc.io/quote/v3: v3.1.0 +- rsc.io/sampler: v1.3.0 diff --git a/content/en/blog/releases/v1.23.1.md b/content/en/blog/releases/v1.23.1.md new file mode 100644 index 0000000000..6f26f47d22 --- /dev/null +++ b/content/en/blog/releases/v1.23.1.md @@ -0,0 +1,26 @@ +--- +title: "v1.23.1" +linkTitle: "v1.23.1" +date: 2022-01-06 +description: > + Cloud Provider Azure v1.23.1 +--- + +# Changelog since v1.23.0 + +## Changes by Kind + +### Feature + +- Introduce a configuration option `putVMSSVMBatchSize`. If set, the sync requests will be sent concurrently in batches when putting vmss vms. ([#964](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/964), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.10.md b/content/en/blog/releases/v1.23.10.md new file mode 100644 index 0000000000..8aced189ed --- /dev/null +++ b/content/en/blog/releases/v1.23.10.md @@ -0,0 +1,38 @@ +--- +title: v1.23.10 +linkTitle: v1.23.10 +date: 2022-04-19 +description: Cloud Provider Azure v1.23.10 +--- + + +## Changes by Kind + +### Uncategorized + +- Add azure private link service client interface to delete a private endpoint connection. ([#1496](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1496), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix InstanceV2.InstanceExists: it should return false instead of ErrInstanceNotFound ([#1513](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1513), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +- github.com/google/martian: [v2.1.0+incompatible](https://github.com/google/martian/tree/v2.1.0) +- rsc.io/binaryregexp: v0.2.0 +- rsc.io/quote/v3: v3.1.0 +- rsc.io/sampler: v1.3.0 + +### Changed +- github.com/Azure/go-autorest/autorest: [v0.11.25 → v0.11.26](https://github.com/Azure/go-autorest/autorest/compare/v0.11.25...v0.11.26) +- k8s.io/api: v0.23.3 → v0.23.5 +- k8s.io/apimachinery: v0.23.3 → v0.23.5 +- k8s.io/apiserver: v0.23.3 → v0.23.5 +- k8s.io/client-go: v0.23.3 → v0.23.5 +- k8s.io/cloud-provider: v0.23.3 → v0.23.5 +- k8s.io/component-base: v0.23.3 → v0.23.5 +- k8s.io/component-helpers: v0.23.3 → v0.23.5 +- k8s.io/controller-manager: v0.23.3 → v0.23.5 +- k8s.io/kubelet: v0.23.3 → v0.23.5 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.27 → v0.0.30 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.11.md b/content/en/blog/releases/v1.23.11.md new file mode 100644 index 0000000000..1e3c01806c --- /dev/null +++ b/content/en/blog/releases/v1.23.11.md @@ -0,0 +1,33 @@ +--- +title: v1.23.11 +linkTitle: v1.23.11 +date: 2022-04-30 +description: Cloud Provider Azure v1.23.11 +--- + + +## Changes by Kind + +### Feature + +- Reduce ListPublicIPAddress call count by avoiding each call in loops ([#1546](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1546), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Rename GetResource to GetResourceWithExpandQuery and rename GetResourceWithDecorators to GetResource in armclient ([#1603](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1603), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Fix-0.7: update probe when protocol or request path change ([#1629](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1629), [@feiskyer](https://github.com/feiskyer)) +- Fix: always get LB after updating it ([#1619](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1619), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v63.2.0+incompatible → v63.4.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.2.0...v63.4.0) +- github.com/Azure/go-autorest/autorest: [v0.11.26 → v0.11.27](https://github.com/Azure/go-autorest/autorest/compare/v0.11.26...v0.11.27) +- github.com/fsnotify/fsnotify: [v1.5.1 → v1.5.4](https://github.com/fsnotify/fsnotify/compare/v1.5.1...v1.5.4) +- golang.org/x/sys: da31bd3 → 33da011 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.12.md b/content/en/blog/releases/v1.23.12.md new file mode 100644 index 0000000000..564d583f06 --- /dev/null +++ b/content/en/blog/releases/v1.23.12.md @@ -0,0 +1,38 @@ +--- +title: v1.23.12 +linkTitle: v1.23.12 +date: 2022-05-17 +description: Cloud Provider Azure v1.23.12 +--- + + +## Changes by Kind + +### Feature + +- Support ARM resource ID as `userAssignedIdentityID` ([#1616](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1616), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- User can deploy managed Azure private link service resources by annotating the service object. + Detailed design doc can be found here: https://kubernetes-sigs.github.io/cloud-provider-azure/development/design-docs/pls-integration/ ([#1681](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1681), [@jwtty](https://github.com/jwtty)) + +### Bug or Regression + +- Cloud provider will create route for unmanaged node if dual stack is enabled. ([#1727](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1727), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fixes bug when using dual-stack in AKS that prevents IPv6 services from using ILB. ([#1721](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1721), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Azure privateEndpointClient APIs are changed: + 1. Get() and CreateOrUpdate() return *retry.Error instead of error + 2. Add etag argument for CreateOrUpdate() function. ([#1731](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1731), [@jwtty](https://github.com/jwtty)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v63.4.0+incompatible → v64.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.4.0...v64.1.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.18 → v0.9.19](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.18...v0.9.19) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.13.md b/content/en/blog/releases/v1.23.13.md new file mode 100644 index 0000000000..553cdde64b --- /dev/null +++ b/content/en/blog/releases/v1.23.13.md @@ -0,0 +1,27 @@ +--- +title: v1.23.13 +linkTitle: v1.23.13 +date: 2022-06-08 +description: Cloud Provider Azure v1.23.13 +--- + + +## Changes by Kind + +### Other (Cleanup or Flake) + +- Chore: upgrade network API version to 2021-08-01 ([#1787](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1787), [@lodrem](https://github.com/lodrem)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v64.1.0+incompatible → v65.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v64.1.0...v65.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.19 → v0.9.20](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.19...v0.9.20) +- github.com/stretchr/testify: [v1.7.1 → v1.7.2](https://github.com/stretchr/testify/compare/v1.7.1...v1.7.2) +- gopkg.in/yaml.v3: 496545a → v3.0.1 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.14.md b/content/en/blog/releases/v1.23.14.md new file mode 100644 index 0000000000..ab190a839a --- /dev/null +++ b/content/en/blog/releases/v1.23.14.md @@ -0,0 +1,30 @@ +--- +title: v1.23.14 +linkTitle: v1.23.14 +date: 2022-06-19 +description: Cloud Provider Azure v1.23.14 +--- + + +## Changes by Kind + +### Bug or Regression + +- A new annotation is added in order to specify the PublicIP Prefix for creating IP of LB + + service.beta.kubernetes.io/azure-pip-prefix-id: "/subscriptions/8ecadfc9-ffff-4ea4-ffff-0d9f87e4d7c8/resourceGroups/lodrem/providers/Microsoft.Network/publicIPPrefixes/bb" ([#1856](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1856), [@lodrem](https://github.com/lodrem)) +- Fix unexpected managed PLS deletion issue when ILB subnet is specified. ([#1832](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1832), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: avoid unnessary NSG updating on service reconciling ([#1853](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1853), [@feiskyer](https://github.com/feiskyer)) +- Remove redundant restriction on pls autoApproval and visibility. + User can specify a list of subscriptions for visibility (e.g. "sub1 sub2") and a subset of this list for autoApproval (e.g. "sub1"). ([#1868](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1868), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.15.md b/content/en/blog/releases/v1.23.15.md new file mode 100644 index 0000000000..4802611998 --- /dev/null +++ b/content/en/blog/releases/v1.23.15.md @@ -0,0 +1,45 @@ +--- +title: v1.23.15 +linkTitle: v1.23.15 +date: 2022-07-13 +description: Cloud Provider Azure v1.23.15 +--- + + +## Changes by Kind + +### Feature + +- A new service annotation `service.beta.kubernetes.io/azure-disable-load-balancer-floating-ip` has been added to disable floating IPs in load balancer rule. + + If annotation is omitted or if the annotation is set to be "false", then floating IP will be enabled. + If the annotation is set to be "true", then floating IP will be disabled. ([#1978](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1978), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- A new annotation is added in order to specify the PublicIP Prefix for creating IP of LB + + service.beta.kubernetes.io/azure-pip-prefix-id: "/subscriptions/8ecadfc9-ffff-4ea4-ffff-0d9f87e4d7c8/resourceGroups/lodrem/providers/Microsoft.Network/publicIPPrefixes/bb" ([#1856](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1856), [@lodrem](https://github.com/lodrem)) +- Fix: Do not compare privateIPAllocationMethod when checking if frontend config needs update. Just check if frontend ip matches service spec to avoid unnecessary LB frontend recreation. ([#2002](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2002), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Improve the error handling for ARM APIs. For replication latency, it is possible contentLength is 0 and http + status code is 200 ([#1955](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1955), [@lzhecheng](https://github.com/lzhecheng)) +- Show correct CCM/CNM version in apiserver ([#1932](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1932), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Fix: make sure there is no duplicated rules before updating the network security group ([#2006](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2006), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/cpuguy83/go-md2man/v2: [v2.0.1 → v2.0.2](https://github.com/cpuguy83/go-md2man/v2/compare/v2.0.1...v2.0.2) +- github.com/spf13/cobra: [v1.4.0 → v1.5.0](https://github.com/spf13/cobra/compare/v1.4.0...v1.5.0) +- github.com/stretchr/objx: [v0.1.1 → v0.4.0](https://github.com/stretchr/objx/compare/v0.1.1...v0.4.0) +- github.com/stretchr/testify: [v1.7.2 → v1.8.0](https://github.com/stretchr/testify/compare/v1.7.2...v1.8.0) +- k8s.io/utils: 6203023 → 3a6ce19 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.16.md b/content/en/blog/releases/v1.23.16.md new file mode 100644 index 0000000000..532b1b6832 --- /dev/null +++ b/content/en/blog/releases/v1.23.16.md @@ -0,0 +1,37 @@ +--- +title: v1.23.16 +linkTitle: v1.23.16 +date: 2022-08-02 +description: Cloud Provider Azure v1.23.16 +--- + + +## Changes by Kind + +### Feature + +- Allow external service with floating ip disabled to create PLS. ([#2077](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2077), [@jwtty](https://github.com/jwtty)) + +### Bug or Regression + +- Fix PIP tags possibly not ensured issue in ensurePublicIPExists() ([#2049](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2049), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: decouple the LB from the VMSS before VMSS VMs ([#2044](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2044), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Use correct subnet name in reconcileFrontendIPConfigs() ([#2082](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2082), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Fix: make sure there is no duplicated rules before updating the network security group ([#2006](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2006), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Result_code in latency logs is more detailed. ([#2016](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2016), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest/adal: [v0.9.20 → v0.9.21](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.20...v0.9.21) +- github.com/go-logr/logr: [v1.2.0 → v1.2.3](https://github.com/go-logr/logr/compare/v1.2.0...v1.2.3) +- golang.org/x/crypto: 5e0467b → 630584e + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.17.md b/content/en/blog/releases/v1.23.17.md new file mode 100644 index 0000000000..0030e295c7 --- /dev/null +++ b/content/en/blog/releases/v1.23.17.md @@ -0,0 +1,33 @@ +--- +title: v1.23.17 +linkTitle: v1.23.17 +date: 2022-08-05 +description: Cloud Provider Azure v1.23.17 +--- + + +## Changes by Kind + +### Bug or Regression + +- Chore: update cloud-provider modules to v0.23.9, which includes upstream fixes for stale service spec issue (https://github.com/kubernetes/kubernetes/pull/107631). ([#2118](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2118), [@feiskyer](https://github.com/feiskyer)) +- Use correct subnet name in reconcileFrontendIPConfigs() ([#2082](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2082), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- k8s.io/api: v0.23.5 → v0.23.9 +- k8s.io/apimachinery: v0.23.5 → v0.23.9 +- k8s.io/apiserver: v0.23.5 → v0.23.9 +- k8s.io/client-go: v0.23.5 → v0.23.9 +- k8s.io/cloud-provider: v0.23.5 → v0.23.9 +- k8s.io/component-base: v0.23.5 → v0.23.9 +- k8s.io/component-helpers: v0.23.5 → v0.23.9 +- k8s.io/controller-manager: v0.23.5 → v0.23.9 +- k8s.io/kubelet: v0.23.5 → v0.23.9 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.18.md b/content/en/blog/releases/v1.23.18.md new file mode 100644 index 0000000000..a84e29a7eb --- /dev/null +++ b/content/en/blog/releases/v1.23.18.md @@ -0,0 +1,41 @@ +--- +title: v1.23.18 +linkTitle: v1.23.18 +date: 2022-09-06 +description: Cloud Provider Azure v1.23.18 +--- + + +## Changes by Kind + +### Feature + +- Feat: add support for network resource in a different subscription when using MSI ([#2260](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2260), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Fix nsg reconciliation failure for floating-ip-disabled services in dual-stack clusters. ([#2238](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2238), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: correct condition message for NodeNetworkUnavailable ([#2227](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2227), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Skip "instance not found" error for LB backend address pools ([#2195](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2195), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v65.0.0+incompatible → v66.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v65.0.0...v66.0.0) +- github.com/Azure/go-autorest/autorest: [v0.11.27 → v0.11.28](https://github.com/Azure/go-autorest/autorest/compare/v0.11.27...v0.11.28) +- github.com/google/go-cmp: [v0.5.6 → v0.5.8](https://github.com/google/go-cmp/compare/v0.5.6...v0.5.8) +- github.com/google/pprof: [cbba55b → 94a9f03](https://github.com/google/pprof/compare/cbba55b...94a9f03) +- github.com/onsi/ginkgo/v2: [v2.1.3 → v2.1.6](https://github.com/onsi/ginkgo/v2/compare/v2.1.3...v2.1.6) +- github.com/onsi/ginkgo: [v1.16.5 → v1.16.4](https://github.com/onsi/ginkgo/compare/v1.16.5...v1.16.4) +- github.com/onsi/gomega: [v1.19.0 → v1.20.2](https://github.com/onsi/gomega/compare/v1.19.0...v1.20.2) +- golang.org/x/net: 27dd868 → a158d28 +- golang.org/x/sync: 036812b → 886fb93 +- golang.org/x/sys: 33da011 → 8c9f86f +- golang.org/x/tools: d4cc65f → v0.1.12 +- google.golang.org/protobuf: v1.27.1 → v1.28.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.19.md b/content/en/blog/releases/v1.23.19.md new file mode 100644 index 0000000000..eaebb69fb7 --- /dev/null +++ b/content/en/blog/releases/v1.23.19.md @@ -0,0 +1,26 @@ +--- +title: v1.23.19 +linkTitle: v1.23.19 +date: 2022-09-18 +description: Cloud Provider Azure v1.23.19 +--- + + +## Changes by Kind + +### Bug or Regression + +- ARM will possibly return StatusCode 200 and ContentLength -1 which is a bug. However, cloudprovider can handle it better by retrying. ([#2317](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2317), [@lzhecheng](https://github.com/lzhecheng)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/prometheus/client_golang: [v1.11.0 → v1.11.1](https://github.com/prometheus/client_golang/compare/v1.11.0...v1.11.1) +- golang.org/x/net: a158d28 → f3363e0 +- golang.org/x/sys: 8c9f86f → 3c1f352 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.2.md b/content/en/blog/releases/v1.23.2.md new file mode 100644 index 0000000000..5b47bc3c7a --- /dev/null +++ b/content/en/blog/releases/v1.23.2.md @@ -0,0 +1,33 @@ +--- +title: "v1.23.2" +linkTitle: "v1.23.2" +date: 2022-01-10 +description: > + Cloud Provider Azure v1.23.2 +--- +# Changelog since v1.23.1 + +## Changes by Kind + +### Feature + +- Introduce a configuration option `putVMSSVMBatchSize`. If set, the sync requests will be sent concurrently in batches when putting vmss vms. ([#964](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/964), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Fix: do not update tags on load balancer, security group and route table if both tags and tagsMap are empty ([#1008](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1008), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: reduce node LIST APIs in cloud-node-manager ([#996](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/996), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.20.md b/content/en/blog/releases/v1.23.20.md new file mode 100644 index 0000000000..5c952a06c7 --- /dev/null +++ b/content/en/blog/releases/v1.23.20.md @@ -0,0 +1,24 @@ +--- +title: v1.23.20 +linkTitle: v1.23.20 +date: 2022-09-18 +description: Cloud Provider Azure v1.23.20 +--- + + +## Changes by Kind + +### Other (Cleanup or Flake) + +- Chore: update go-restful for CVE-2022-1996 ([#2323](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2323), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/emicklei/go-restful: [v2.9.5+incompatible → v2.16.0+incompatible](https://github.com/emicklei/go-restful/compare/v2.9.5...v2.16.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.21.md b/content/en/blog/releases/v1.23.21.md new file mode 100644 index 0000000000..a598ea5345 --- /dev/null +++ b/content/en/blog/releases/v1.23.21.md @@ -0,0 +1,34 @@ +--- +title: v1.23.21 +linkTitle: v1.23.21 +date: 2022-09-30 +description: Cloud Provider Azure v1.23.21 +--- + + +## Changes by Kind + +### Bug or Regression + +- Avoid race condition between node-sync-loop routine and service reconcile routine. + Avoid UpdateLoadBalancer() using stale service spec to update Load Balancers. ([#2424](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2424), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Check and cleanup both ELB and ILB when a service is being deleted. ([#2436](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2436), [@jwtty](https://github.com/jwtty)) +- Fix: Skip VMSS VM update operations if the VMs are not in good state + fix: Set the retryAfter to 5s when PUT failed due to concurrent operation conflict. ([#2399](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2399), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Only check response body length when request is GET. Avoids unnecessary retry when deleting an LB. ([#2392](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2392), [@jwtty](https://github.com/jwtty)) + +### Other (Cleanup or Flake) + +- Chore: get node private IPs from cache but NIC ([#2431](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2431), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Chore: update go-restful for CVE-2022-1996 ([#2323](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2323), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.1.6 → v2.2.0](https://github.com/onsi/ginkgo/v2/compare/v2.1.6...v2.2.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.22.md b/content/en/blog/releases/v1.23.22.md new file mode 100644 index 0000000000..a79eeaa404 --- /dev/null +++ b/content/en/blog/releases/v1.23.22.md @@ -0,0 +1,53 @@ +--- +title: v1.23.22 +linkTitle: v1.23.22 +date: 2022-10-21 +description: Cloud Provider Azure v1.23.22 +--- + + +## Changes by Kind + +### Deprecation + +- Deprecate LoadBalancerIP with Service LB IP annotation ([#2469](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2469), [@lzhecheng](https://github.com/lzhecheng)) + +### Bug or Regression + +- Check and cleanup both ELB and ILB when a service is being deleted. ([#2436](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2436), [@jwtty](https://github.com/jwtty)) +- Check internal lb ip in subnet before keeping it, so users can change their lb subnet. ([#2531](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2531), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: decouple vmss with 0 instance from lb when deleting the service ([#2526](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2526), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Change in appProtocol field of service port section will trigger health probe rule update. ([#2553](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2553), [@MartinForReal](https://github.com/MartinForReal)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v66.0.0+incompatible → v67.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v66.0.0...v67.0.0) +- github.com/fsnotify/fsnotify: [v1.5.4 → v1.6.0](https://github.com/fsnotify/fsnotify/compare/v1.5.4...v1.6.0) +- github.com/inconshreveable/mousetrap: [v1.0.0 → v1.0.1](https://github.com/inconshreveable/mousetrap/compare/v1.0.0...v1.0.1) +- github.com/onsi/ginkgo/v2: [v2.2.0 → v2.3.1](https://github.com/onsi/ginkgo/v2/compare/v2.2.0...v2.3.1) +- github.com/onsi/gomega: [v1.20.2 → v1.22.1](https://github.com/onsi/gomega/compare/v1.20.2...v1.22.1) +- github.com/spf13/cobra: [v1.5.0 → v1.6.0](https://github.com/spf13/cobra/compare/v1.5.0...v1.6.0) +- golang.org/x/mod: v0.4.2 → 86c51ed +- golang.org/x/sys: 3c1f352 → 2771309 +- golang.org/x/text: v0.3.7 → v0.4.0 +- k8s.io/api: v0.23.9 → v0.23.13 +- k8s.io/apimachinery: v0.23.9 → v0.23.13 +- k8s.io/apiserver: v0.23.9 → v0.23.13 +- k8s.io/client-go: v0.23.9 → v0.23.13 +- k8s.io/cloud-provider: v0.23.9 → v0.23.13 +- k8s.io/component-base: v0.23.9 → v0.23.13 +- k8s.io/component-helpers: v0.23.9 → v0.23.13 +- k8s.io/controller-manager: v0.23.9 → v0.23.13 +- k8s.io/klog/v2: v2.30.0 → v2.80.1 +- k8s.io/kubelet: v0.23.9 → v0.23.13 +- k8s.io/utils: 3a6ce19 → 6203023 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.23.md b/content/en/blog/releases/v1.23.23.md new file mode 100644 index 0000000000..78c319d970 --- /dev/null +++ b/content/en/blog/releases/v1.23.23.md @@ -0,0 +1,24 @@ +--- +title: v1.23.23 +linkTitle: v1.23.23 +date: 2022-10-31 +description: Cloud Provider Azure v1.23.23 +--- + + +## Changes by Kind + +### Other (Cleanup or Flake) + +- Bump azure compute to 2022-03-01 ([#2642](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2642), [@MartinForReal](https://github.com/MartinForReal)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.24.md b/content/en/blog/releases/v1.23.24.md new file mode 100644 index 0000000000..45020f8b62 --- /dev/null +++ b/content/en/blog/releases/v1.23.24.md @@ -0,0 +1,46 @@ +--- +title: v1.23.24 +linkTitle: v1.23.24 +date: 2022-12-05 +description: Cloud Provider Azure v1.23.24 +--- + + +## Changes by Kind + +### Bug or Regression + +- Considering thread safety, results of cache Get() should be deepcopied before used. ([#2704](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2704), [@lzhecheng](https://github.com/lzhecheng)) +- Fix an issue when DNS label of public ip is not updated when service.beta.kubernetes.io/azure-dns-label-name is changed. ([#2702](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2702), [@MartinForReal](https://github.com/MartinForReal)) +- Fix to reduce PublicIPAddress list arm calls ([#2806](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2806), [@jwtty](https://github.com/jwtty)) +- Fix: decouple vmss from the lb if the backend pool is empty when using ip-based LB + chore: do not set etag to nil when updating lb backend pool ([#2831](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2831), [@nilo19](https://github.com/nilo19)) +- Fix: remove lb from vmss when the backend pool is empty ([#2795](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2795), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: remove orphaned nic from lb backend pool if the corresponding VM is not found ([#2844](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2844), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.0.0+incompatible → v67.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.0.0...v67.1.0) +- github.com/yuin/goldmark: [v1.4.0 → v1.3.5](https://github.com/yuin/goldmark/compare/v1.4.0...v1.3.5) +- go.uber.org/goleak: v1.1.10 → v1.2.0 +- golang.org/x/text: v0.4.0 → v0.5.0 +- k8s.io/api: v0.23.13 → v0.23.14 +- k8s.io/apimachinery: v0.23.13 → v0.23.14 +- k8s.io/apiserver: v0.23.13 → v0.23.14 +- k8s.io/client-go: v0.23.13 → v0.23.14 +- k8s.io/cloud-provider: v0.23.13 → v0.23.14 +- k8s.io/component-base: v0.23.13 → v0.23.14 +- k8s.io/component-helpers: v0.23.13 → v0.23.14 +- k8s.io/controller-manager: v0.23.13 → v0.23.14 +- k8s.io/kubelet: v0.23.13 → v0.23.14 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.30 → v0.0.33 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.25.md b/content/en/blog/releases/v1.23.25.md new file mode 100644 index 0000000000..ff2fc4efe2 --- /dev/null +++ b/content/en/blog/releases/v1.23.25.md @@ -0,0 +1,41 @@ +--- +title: v1.23.25 +linkTitle: v1.23.25 +date: 2023-01-03 +description: Cloud Provider Azure v1.23.25 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix k8s-azure-dns-label-service tag not deleted with Service. Bug: When a Service with DNS label is deleted, k8s-azure-dns-label-service tag won't be deleted and it leads to ensurePublicIPExists error. ([#2912](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2912), [@lzhecheng](https://github.com/lzhecheng)) +- Fix: get vmss name and resource group from vm ID if the provider ID of the node is empty ([#2991](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2991), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Fix CVE-2022-41717 ([#2925](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2925), [@MartinForReal](https://github.com/MartinForReal)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- golang.org/x/net: f3363e0 → v0.4.0 +- golang.org/x/sys: 2771309 → v0.3.0 +- golang.org/x/term: 03fcf44 → v0.3.0 +- k8s.io/api: v0.23.14 → v0.23.15 +- k8s.io/apimachinery: v0.23.14 → v0.23.15 +- k8s.io/apiserver: v0.23.14 → v0.23.15 +- k8s.io/client-go: v0.23.14 → v0.23.15 +- k8s.io/cloud-provider: v0.23.14 → v0.23.15 +- k8s.io/component-base: v0.23.14 → v0.23.15 +- k8s.io/component-helpers: v0.23.14 → v0.23.15 +- k8s.io/controller-manager: v0.23.14 → v0.23.15 +- k8s.io/kubelet: v0.23.14 → v0.23.15 +- sigs.k8s.io/structured-merge-diff/v4: v4.2.1 → v4.2.3 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.26.md b/content/en/blog/releases/v1.23.26.md new file mode 100644 index 0000000000..4ddb6666c3 --- /dev/null +++ b/content/en/blog/releases/v1.23.26.md @@ -0,0 +1,44 @@ +--- +title: v1.23.26 +linkTitle: v1.23.26 +date: 2023-01-16 +description: Cloud Provider Azure v1.23.26 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: Use TimedCache.Get() for read-only resources ([#3107](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3107), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +- github.com/Azure/azure-kusto-go: [v0.10.2](https://github.com/Azure/azure-kusto-go/tree/v0.10.2) +- github.com/Azure/azure-pipeline-go: [v0.1.8](https://github.com/Azure/azure-pipeline-go/tree/v0.1.8) +- github.com/Azure/azure-sdk-for-go/sdk/azcore: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azcore/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/azidentity: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azidentity/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/internal: [v1.1.1](https://github.com/Azure/azure-sdk-for-go/sdk/internal/tree/v1.1.1) +- github.com/Azure/azure-sdk-for-go/sdk/storage/azblob: [v0.6.1](https://github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/tree/v0.6.1) +- github.com/Azure/azure-storage-queue-go: [6368018](https://github.com/Azure/azure-storage-queue-go/tree/6368018) +- github.com/AzureAD/microsoft-authentication-library-for-go: [v0.7.0](https://github.com/AzureAD/microsoft-authentication-library-for-go/tree/v0.7.0) +- github.com/cenkalti/backoff/v4: [v4.2.0](https://github.com/cenkalti/backoff/v4/tree/v4.2.0) +- github.com/dnaeon/go-vcr: [v1.1.0](https://github.com/dnaeon/go-vcr/tree/v1.1.0) +- github.com/gofrs/uuid: [v4.2.0+incompatible](https://github.com/gofrs/uuid/tree/v4.2.0) +- github.com/golang-jwt/jwt: [v3.2.1+incompatible](https://github.com/golang-jwt/jwt/tree/v3.2.1) +- github.com/kylelemons/godebug: [v1.1.0](https://github.com/kylelemons/godebug/tree/v1.1.0) +- github.com/montanaflynn/stats: [v0.6.6](https://github.com/montanaflynn/stats/tree/v0.6.6) +- github.com/pkg/browser: [681adbf](https://github.com/pkg/browser/tree/681adbf) +- github.com/tj/assert: [v0.0.3](https://github.com/tj/assert/tree/v0.0.3) + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.1.0+incompatible → v67.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.1.0...v67.3.0) +- github.com/golang-jwt/jwt/v4: [v4.2.0 → v4.4.3](https://github.com/golang-jwt/jwt/v4/compare/v4.2.0...v4.4.3) +- github.com/google/uuid: [v1.1.2 → v1.3.0](https://github.com/google/uuid/compare/v1.1.2...v1.3.0) +- golang.org/x/crypto: 630584e → v0.4.0 +- golang.org/x/sys: v0.3.0 → v0.4.0 +- golang.org/x/text: v0.5.0 → v0.6.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.27.md b/content/en/blog/releases/v1.23.27.md new file mode 100644 index 0000000000..7cc1fa9193 --- /dev/null +++ b/content/en/blog/releases/v1.23.27.md @@ -0,0 +1,114 @@ +--- +title: v1.23.27 +linkTitle: v1.23.27 +date: 2023-01-31 +description: Cloud Provider Azure v1.23.27 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: skip removing nics from lb if there will be no nics in the backend pool + update network api to 2022-07-01 to support backend pool level virtual network id ([#3244](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3244), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.3.0+incompatible → v68.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.3.0...v68.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.21 → v0.9.22](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.21...v0.9.22) +- github.com/google/go-cmp: [v0.5.8 → v0.5.9](https://github.com/google/go-cmp/compare/v0.5.8...v0.5.9) +- github.com/google/martian/v3: [v3.1.0 → v3.0.0](https://github.com/google/martian/v3/compare/v3.1.0...v3.0.0) +- github.com/ianlancetaylor/demangle: [28f6c0f → 5e5cf60](https://github.com/ianlancetaylor/demangle/compare/28f6c0f...5e5cf60) +- github.com/mitchellh/mapstructure: [v1.4.1 → v1.1.2](https://github.com/mitchellh/mapstructure/compare/v1.4.1...v1.1.2) +- github.com/onsi/ginkgo/v2: [v2.3.1 → v2.7.0](https://github.com/onsi/ginkgo/v2/compare/v2.3.1...v2.7.0) +- github.com/onsi/gomega: [v1.22.1 → v1.26.0](https://github.com/onsi/gomega/compare/v1.22.1...v1.26.0) +- github.com/spf13/afero: [v1.6.0 → v1.2.2](https://github.com/spf13/afero/compare/v1.6.0...v1.2.2) +- go.opencensus.io: v0.23.0 → v0.22.4 +- golang.org/x/crypto: v0.4.0 → v0.5.0 +- golang.org/x/net: v0.4.0 → v0.5.0 +- golang.org/x/term: v0.3.0 → v0.4.0 +- golang.org/x/time: 1f47c86 → 90d013b +- golang.org/x/tools: v0.1.12 → v0.4.0 +- google.golang.org/api: v0.44.0 → v0.30.0 +- k8s.io/api: v0.23.15 → v0.23.16 +- k8s.io/apimachinery: v0.23.15 → v0.23.16 +- k8s.io/apiserver: v0.23.15 → v0.23.16 +- k8s.io/client-go: v0.23.15 → v0.23.16 +- k8s.io/cloud-provider: v0.23.15 → v0.23.16 +- k8s.io/component-base: v0.23.15 → v0.23.16 +- k8s.io/component-helpers: v0.23.15 → v0.23.16 +- k8s.io/controller-manager: v0.23.15 → v0.23.16 +- k8s.io/kubelet: v0.23.15 → v0.23.16 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.33 → v0.0.35 + +### Removed +- cloud.google.com/go/firestore: v1.1.0 +- github.com/armon/circbuf: [bbbad09](https://github.com/armon/circbuf/tree/bbbad09) +- github.com/armon/go-metrics: [f0300d1](https://github.com/armon/go-metrics/tree/f0300d1) +- github.com/armon/go-radix: [7fddfc3](https://github.com/armon/go-radix/tree/7fddfc3) +- github.com/bgentry/speakeasy: [v0.1.0](https://github.com/bgentry/speakeasy/tree/v0.1.0) +- github.com/bketelsen/crypt: [v0.0.4](https://github.com/bketelsen/crypt/tree/v0.0.4) +- github.com/certifi/gocertifi: [2c3bb06](https://github.com/certifi/gocertifi/tree/2c3bb06) +- github.com/cockroachdb/datadriven: [bf6692d](https://github.com/cockroachdb/datadriven/tree/bf6692d) +- github.com/cockroachdb/errors: [v1.2.4](https://github.com/cockroachdb/errors/tree/v1.2.4) +- github.com/cockroachdb/logtags: [eb05cc2](https://github.com/cockroachdb/logtags/tree/eb05cc2) +- github.com/coreos/bbolt: [v1.3.2](https://github.com/coreos/bbolt/tree/v1.3.2) +- github.com/coreos/etcd: [v3.3.13+incompatible](https://github.com/coreos/etcd/tree/v3.3.13) +- github.com/coreos/go-systemd: [95778df](https://github.com/coreos/go-systemd/tree/95778df) +- github.com/coreos/pkg: [399ea9e](https://github.com/coreos/pkg/tree/399ea9e) +- github.com/dgrijalva/jwt-go: [v3.2.0+incompatible](https://github.com/dgrijalva/jwt-go/tree/v3.2.0) +- github.com/dgryski/go-sip13: [e10d5fe](https://github.com/dgryski/go-sip13/tree/e10d5fe) +- github.com/fatih/color: [v1.7.0](https://github.com/fatih/color/tree/v1.7.0) +- github.com/getsentry/raven-go: [v0.2.0](https://github.com/getsentry/raven-go/tree/v0.2.0) +- github.com/gopherjs/gopherjs: [0766667](https://github.com/gopherjs/gopherjs/tree/0766667) +- github.com/hashicorp/consul/api: [v1.1.0](https://github.com/hashicorp/consul/api/tree/v1.1.0) +- github.com/hashicorp/consul/sdk: [v0.1.1](https://github.com/hashicorp/consul/sdk/tree/v0.1.1) +- github.com/hashicorp/errwrap: [v1.0.0](https://github.com/hashicorp/errwrap/tree/v1.0.0) +- github.com/hashicorp/go-cleanhttp: [v0.5.1](https://github.com/hashicorp/go-cleanhttp/tree/v0.5.1) +- github.com/hashicorp/go-immutable-radix: [v1.0.0](https://github.com/hashicorp/go-immutable-radix/tree/v1.0.0) +- github.com/hashicorp/go-msgpack: [v0.5.3](https://github.com/hashicorp/go-msgpack/tree/v0.5.3) +- github.com/hashicorp/go-multierror: [v1.0.0](https://github.com/hashicorp/go-multierror/tree/v1.0.0) +- github.com/hashicorp/go-rootcerts: [v1.0.0](https://github.com/hashicorp/go-rootcerts/tree/v1.0.0) +- github.com/hashicorp/go-sockaddr: [v1.0.0](https://github.com/hashicorp/go-sockaddr/tree/v1.0.0) +- github.com/hashicorp/go-syslog: [v1.0.0](https://github.com/hashicorp/go-syslog/tree/v1.0.0) +- github.com/hashicorp/go-uuid: [v1.0.1](https://github.com/hashicorp/go-uuid/tree/v1.0.1) +- github.com/hashicorp/go.net: [v0.0.1](https://github.com/hashicorp/go.net/tree/v0.0.1) +- github.com/hashicorp/hcl: [v1.0.0](https://github.com/hashicorp/hcl/tree/v1.0.0) +- github.com/hashicorp/logutils: [v1.0.0](https://github.com/hashicorp/logutils/tree/v1.0.0) +- github.com/hashicorp/mdns: [v1.0.0](https://github.com/hashicorp/mdns/tree/v1.0.0) +- github.com/hashicorp/memberlist: [v0.1.3](https://github.com/hashicorp/memberlist/tree/v0.1.3) +- github.com/hashicorp/serf: [v0.8.2](https://github.com/hashicorp/serf/tree/v0.8.2) +- github.com/jtolds/gls: [v4.20.0+incompatible](https://github.com/jtolds/gls/tree/v4.20.0) +- github.com/kr/fs: [v0.1.0](https://github.com/kr/fs/tree/v0.1.0) +- github.com/magiconair/properties: [v1.8.5](https://github.com/magiconair/properties/tree/v1.8.5) +- github.com/mattn/go-colorable: [v0.0.9](https://github.com/mattn/go-colorable/tree/v0.0.9) +- github.com/mattn/go-isatty: [v0.0.3](https://github.com/mattn/go-isatty/tree/v0.0.3) +- github.com/miekg/dns: [v1.0.14](https://github.com/miekg/dns/tree/v1.0.14) +- github.com/mitchellh/cli: [v1.0.0](https://github.com/mitchellh/cli/tree/v1.0.0) +- github.com/mitchellh/go-homedir: [v1.1.0](https://github.com/mitchellh/go-homedir/tree/v1.1.0) +- github.com/mitchellh/go-testing-interface: [v1.0.0](https://github.com/mitchellh/go-testing-interface/tree/v1.0.0) +- github.com/mitchellh/gox: [v0.4.0](https://github.com/mitchellh/gox/tree/v0.4.0) +- github.com/mitchellh/iochan: [v1.0.0](https://github.com/mitchellh/iochan/tree/v1.0.0) +- github.com/oklog/ulid: [v1.3.1](https://github.com/oklog/ulid/tree/v1.3.1) +- github.com/opentracing/opentracing-go: [v1.1.0](https://github.com/opentracing/opentracing-go/tree/v1.1.0) +- github.com/pascaldekloe/goe: [57f6aae](https://github.com/pascaldekloe/goe/tree/57f6aae) +- github.com/pelletier/go-toml: [v1.9.3](https://github.com/pelletier/go-toml/tree/v1.9.3) +- github.com/pkg/sftp: [v1.10.1](https://github.com/pkg/sftp/tree/v1.10.1) +- github.com/posener/complete: [v1.1.1](https://github.com/posener/complete/tree/v1.1.1) +- github.com/prometheus/tsdb: [v0.7.1](https://github.com/prometheus/tsdb/tree/v0.7.1) +- github.com/ryanuber/columnize: [9b3edd6](https://github.com/ryanuber/columnize/tree/9b3edd6) +- github.com/sean-/seed: [e2103e2](https://github.com/sean-/seed/tree/e2103e2) +- github.com/shurcooL/sanitized_anchor_name: [v1.0.0](https://github.com/shurcooL/sanitized_anchor_name/tree/v1.0.0) +- github.com/smartystreets/assertions: [b2de0cb](https://github.com/smartystreets/assertions/tree/b2de0cb) +- github.com/smartystreets/goconvey: [v1.6.4](https://github.com/smartystreets/goconvey/tree/v1.6.4) +- github.com/spf13/cast: [v1.3.1](https://github.com/spf13/cast/tree/v1.3.1) +- github.com/spf13/jwalterweatherman: [v1.1.0](https://github.com/spf13/jwalterweatherman/tree/v1.1.0) +- github.com/spf13/viper: [v1.8.1](https://github.com/spf13/viper/tree/v1.8.1) +- github.com/subosito/gotenv: [v1.2.0](https://github.com/subosito/gotenv/tree/v1.2.0) +- gopkg.in/ini.v1: v1.62.0 +- gopkg.in/resty.v1: v1.12.0 diff --git a/content/en/blog/releases/v1.23.28.md b/content/en/blog/releases/v1.23.28.md new file mode 100644 index 0000000000..af205e50f2 --- /dev/null +++ b/content/en/blog/releases/v1.23.28.md @@ -0,0 +1,24 @@ +--- +title: v1.23.28 +linkTitle: v1.23.28 +date: 2023-02-13 +description: Cloud Provider Azure v1.23.28 +--- +Full Changelog: [v1.23.27..v1.23.28](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.23.27...v1.23.28) + +## Changes by Kind + +### Bug or Regression + +- Fix: remove vmss vm from cache when invalidate the cache ([#3299](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3299), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- golang.org/x/sys: v0.4.0 → v0.5.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.29.md b/content/en/blog/releases/v1.23.29.md new file mode 100644 index 0000000000..ab4b4a3bdf --- /dev/null +++ b/content/en/blog/releases/v1.23.29.md @@ -0,0 +1,44 @@ +--- +title: v1.23.29 +linkTitle: v1.23.29 +date: 2023-03-10 +description: Cloud Provider Azure v1.23.29 +--- +Full Changelog: [v1.23.28..v1.23.29](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.23.28...v1.23.29) + +## Changes by Kind + +### Bug or Regression + +- Fix incorrect security rule name with IPv6 address prefix ([#3354](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3354), [@lzhecheng](https://github.com/lzhecheng)) +- Fix: remove shared security rule when no svc with shared-nsg annotation exists ([#3397](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3397), [@MartinForReal](https://github.com/MartinForReal)) +- Fix: remove single vm from the cache instead of removing all vms of a vmss when deleting a node from the cache ([#3507](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3507), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.7.0 → v2.8.1](https://github.com/onsi/ginkgo/v2/compare/v2.7.0...v2.8.1) +- github.com/onsi/gomega: [v1.26.0 → v1.27.1](https://github.com/onsi/gomega/compare/v1.26.0...v1.27.1) +- github.com/stretchr/testify: [v1.8.1 → v1.8.2](https://github.com/stretchr/testify/compare/v1.8.1...v1.8.2) +- golang.org/x/crypto: v0.5.0 → v0.7.0 +- golang.org/x/mod: 86c51ed → v0.8.0 +- golang.org/x/net: v0.5.0 → v0.8.0 +- golang.org/x/sys: v0.5.0 → v0.6.0 +- golang.org/x/term: v0.4.0 → v0.6.0 +- golang.org/x/text: v0.6.0 → v0.8.0 +- golang.org/x/tools: v0.4.0 → v0.6.0 +- k8s.io/api: v0.23.16 → v0.23.17 +- k8s.io/apimachinery: v0.23.16 → v0.23.17 +- k8s.io/apiserver: v0.23.16 → v0.23.17 +- k8s.io/client-go: v0.23.16 → v0.23.17 +- k8s.io/cloud-provider: v0.23.16 → v0.23.17 +- k8s.io/component-base: v0.23.16 → v0.23.17 +- k8s.io/component-helpers: v0.23.16 → v0.23.17 +- k8s.io/controller-manager: v0.23.16 → v0.23.17 +- k8s.io/kubelet: v0.23.16 → v0.23.17 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.3.md b/content/en/blog/releases/v1.23.3.md new file mode 100644 index 0000000000..644dcfbc0d --- /dev/null +++ b/content/en/blog/releases/v1.23.3.md @@ -0,0 +1,125 @@ +--- +title: "v1.23.3" +linkTitle: "v1.23.3" +date: 2022-02-07 +description: > + Cloud Provider Azure v1.23.3 +--- +# Changelog since v1.23.2 + +## Changes by Kind + +### Feature + +- Feat: support platformSubFaultDomain node label ([#1080](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1080), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Fix: use zones in the pre-existing frontend IP configurations for internal LBs ([#1097](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1097), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +- cloud.google.com/go/datastore: v1.1.0 +- cloud.google.com/go/pubsub: v1.3.1 +- github.com/DataDog/datadog-go: [v3.2.0+incompatible](https://github.com/DataDog/datadog-go/tree/v3.2.0) +- github.com/alecthomas/template: [fb15b89](https://github.com/alecthomas/template/tree/fb15b89) +- github.com/alecthomas/units: [f65c72e](https://github.com/alecthomas/units/tree/f65c72e) +- github.com/circonus-labs/circonus-gometrics: [v2.3.1+incompatible](https://github.com/circonus-labs/circonus-gometrics/tree/v2.3.1) +- github.com/circonus-labs/circonusllhist: [v0.1.3](https://github.com/circonus-labs/circonusllhist/tree/v0.1.3) +- github.com/client9/misspell: [v0.3.4](https://github.com/client9/misspell/tree/v0.3.4) +- github.com/coreos/bbolt: [v1.3.2](https://github.com/coreos/bbolt/tree/v1.3.2) +- github.com/coreos/etcd: [v3.3.13+incompatible](https://github.com/coreos/etcd/tree/v3.3.13) +- github.com/coreos/go-systemd: [95778df](https://github.com/coreos/go-systemd/tree/95778df) +- github.com/coreos/pkg: [399ea9e](https://github.com/coreos/pkg/tree/399ea9e) +- github.com/dgrijalva/jwt-go: [v3.2.0+incompatible](https://github.com/dgrijalva/jwt-go/tree/v3.2.0) +- github.com/dgryski/go-sip13: [e10d5fe](https://github.com/dgryski/go-sip13/tree/e10d5fe) +- github.com/go-gl/glfw: [e6da0ac](https://github.com/go-gl/glfw/tree/e6da0ac) +- github.com/hashicorp/go-hclog: [v1.0.0](https://github.com/hashicorp/go-hclog/tree/v1.0.0) +- github.com/hashicorp/go-retryablehttp: [v0.5.3](https://github.com/hashicorp/go-retryablehttp/tree/v0.5.3) +- github.com/hpcloud/tail: [v1.0.0](https://github.com/hpcloud/tail/tree/v1.0.0) +- github.com/iancoleman/strcase: [v0.2.0](https://github.com/iancoleman/strcase/tree/v0.2.0) +- github.com/jpillora/backoff: [v1.0.0](https://github.com/jpillora/backoff/tree/v1.0.0) +- github.com/konsorten/go-windows-terminal-sequences: [v1.0.3](https://github.com/konsorten/go-windows-terminal-sequences/tree/v1.0.3) +- github.com/kr/logfmt: [b84e30a](https://github.com/kr/logfmt/tree/b84e30a) +- github.com/kr/pty: [v1.1.1](https://github.com/kr/pty/tree/v1.1.1) +- github.com/lyft/protoc-gen-star: [v0.5.3](https://github.com/lyft/protoc-gen-star/tree/v0.5.3) +- github.com/oklog/ulid: [v1.3.1](https://github.com/oklog/ulid/tree/v1.3.1) +- github.com/onsi/ginkgo/v2: [v2.0.0](https://github.com/onsi/ginkgo/v2/tree/v2.0.0) +- github.com/prometheus/tsdb: [v0.7.1](https://github.com/prometheus/tsdb/tree/v0.7.1) +- github.com/sagikazarmark/crypt: [v0.3.0](https://github.com/sagikazarmark/crypt/tree/v0.3.0) +- github.com/tv42/httpunix: [b75d861](https://github.com/tv42/httpunix/tree/b75d861) +- gopkg.in/fsnotify.v1: v1.4.7 +- gopkg.in/resty.v1: v1.12.0 + +### Changed +- cloud.google.com/go/firestore: v1.1.0 → v1.6.1 +- github.com/Azure/azure-sdk-for-go: [v55.8.0+incompatible → v61.4.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v55.8.0...v61.4.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.17 → v0.9.18](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.17...v0.9.18) +- github.com/Azure/go-autorest/autorest: [v0.11.22 → v0.11.24](https://github.com/Azure/go-autorest/autorest/compare/v0.11.22...v0.11.24) +- github.com/armon/go-metrics: [f0300d1 → v0.3.10](https://github.com/armon/go-metrics/compare/f0300d1...v0.3.10) +- github.com/armon/go-radix: [7fddfc3 → v1.0.0](https://github.com/armon/go-radix/compare/7fddfc3...v1.0.0) +- github.com/census-instrumentation/opencensus-proto: [v0.2.1 → v0.3.0](https://github.com/census-instrumentation/opencensus-proto/compare/v0.2.1...v0.3.0) +- github.com/cespare/xxhash/v2: [v2.1.1 → v2.1.2](https://github.com/cespare/xxhash/v2/compare/v2.1.1...v2.1.2) +- github.com/cncf/udpa/go: [5459f2c → 04548b0](https://github.com/cncf/udpa/go/compare/5459f2c...04548b0) +- github.com/cncf/xds/go: [fbca930 → a8f9461](https://github.com/cncf/xds/go/compare/fbca930...a8f9461) +- github.com/cpuguy83/go-md2man/v2: [v2.0.0 → v2.0.1](https://github.com/cpuguy83/go-md2man/v2/compare/v2.0.0...v2.0.1) +- github.com/envoyproxy/go-control-plane: [63b5d3c → v0.10.1](https://github.com/envoyproxy/go-control-plane/compare/63b5d3c...v0.10.1) +- github.com/envoyproxy/protoc-gen-validate: [v0.1.0 → v0.6.2](https://github.com/envoyproxy/protoc-gen-validate/compare/v0.1.0...v0.6.2) +- github.com/evanphx/json-patch: [v4.12.0+incompatible → v5.6.0+incompatible](https://github.com/evanphx/json-patch/compare/v4.12.0...v5.6.0) +- github.com/fatih/color: [v1.7.0 → v1.13.0](https://github.com/fatih/color/compare/v1.7.0...v1.13.0) +- github.com/golang-jwt/jwt/v4: [v4.0.0 → v4.2.0](https://github.com/golang-jwt/jwt/v4/compare/v4.0.0...v4.2.0) +- github.com/google/go-cmp: [v0.5.5 → v0.5.6](https://github.com/google/go-cmp/compare/v0.5.5...v0.5.6) +- github.com/google/pprof: [cbba55b → 94a9f03](https://github.com/google/pprof/compare/cbba55b...94a9f03) +- github.com/googleapis/gax-go/v2: [v2.0.5 → v2.1.1](https://github.com/googleapis/gax-go/v2/compare/v2.0.5...v2.1.1) +- github.com/hashicorp/consul/api: [v1.1.0 → v1.11.0](https://github.com/hashicorp/consul/api/compare/v1.1.0...v1.11.0) +- github.com/hashicorp/consul/sdk: [v0.1.1 → v0.8.0](https://github.com/hashicorp/consul/sdk/compare/v0.1.1...v0.8.0) +- github.com/hashicorp/go-cleanhttp: [v0.5.1 → v0.5.2](https://github.com/hashicorp/go-cleanhttp/compare/v0.5.1...v0.5.2) +- github.com/hashicorp/go-immutable-radix: [v1.0.0 → v1.3.1](https://github.com/hashicorp/go-immutable-radix/compare/v1.0.0...v1.3.1) +- github.com/hashicorp/go-multierror: [v1.0.0 → v1.1.0](https://github.com/hashicorp/go-multierror/compare/v1.0.0...v1.1.0) +- github.com/hashicorp/go-rootcerts: [v1.0.0 → v1.0.2](https://github.com/hashicorp/go-rootcerts/compare/v1.0.0...v1.0.2) +- github.com/hashicorp/golang-lru: [v0.5.1 → v0.5.4](https://github.com/hashicorp/golang-lru/compare/v0.5.1...v0.5.4) +- github.com/hashicorp/mdns: [v1.0.0 → v1.0.4](https://github.com/hashicorp/mdns/compare/v1.0.0...v1.0.4) +- github.com/hashicorp/memberlist: [v0.1.3 → v0.3.0](https://github.com/hashicorp/memberlist/compare/v0.1.3...v0.3.0) +- github.com/hashicorp/serf: [v0.8.2 → v0.9.6](https://github.com/hashicorp/serf/compare/v0.8.2...v0.9.6) +- github.com/mattn/go-colorable: [v0.0.9 → v0.1.12](https://github.com/mattn/go-colorable/compare/v0.0.9...v0.1.12) +- github.com/mattn/go-isatty: [v0.0.3 → v0.0.14](https://github.com/mattn/go-isatty/compare/v0.0.3...v0.0.14) +- github.com/miekg/dns: [v1.0.14 → v1.1.41](https://github.com/miekg/dns/compare/v1.0.14...v1.1.41) +- github.com/mitchellh/cli: [v1.0.0 → v1.1.0](https://github.com/mitchellh/cli/compare/v1.0.0...v1.1.0) +- github.com/mitchellh/go-homedir: [v1.0.0 → v1.1.0](https://github.com/mitchellh/go-homedir/compare/v1.0.0...v1.1.0) +- github.com/mitchellh/mapstructure: [v1.4.1 → v1.4.3](https://github.com/mitchellh/mapstructure/compare/v1.4.1...v1.4.3) +- github.com/onsi/gomega: [v1.16.0 → v1.18.1](https://github.com/onsi/gomega/compare/v1.16.0...v1.18.1) +- github.com/pascaldekloe/goe: [57f6aae → v0.1.0](https://github.com/pascaldekloe/goe/compare/57f6aae...v0.1.0) +- github.com/pelletier/go-toml: [v1.9.3 → v1.9.4](https://github.com/pelletier/go-toml/compare/v1.9.3...v1.9.4) +- github.com/posener/complete: [v1.1.1 → v1.2.3](https://github.com/posener/complete/compare/v1.1.1...v1.2.3) +- github.com/russross/blackfriday/v2: [v2.0.1 → v2.1.0](https://github.com/russross/blackfriday/v2/compare/v2.0.1...v2.1.0) +- github.com/spf13/cast: [v1.3.1 → v1.4.1](https://github.com/spf13/cast/compare/v1.3.1...v1.4.1) +- github.com/spf13/cobra: [v1.2.1 → v1.3.0](https://github.com/spf13/cobra/compare/v1.2.1...v1.3.0) +- github.com/spf13/viper: [v1.8.1 → v1.10.0](https://github.com/spf13/viper/compare/v1.8.1...v1.10.0) +- go.etcd.io/etcd/api/v3: v3.5.0 → v3.5.1 +- go.etcd.io/etcd/client/pkg/v3: v3.5.0 → v3.5.1 +- go.etcd.io/etcd/client/v2: v2.305.0 → v2.305.1 +- golang.org/x/crypto: 089bfa5 → 5e0467b +- golang.org/x/mod: v0.4.2 → v0.5.0 +- golang.org/x/net: e898025 → 491a49a +- golang.org/x/oauth2: 2bc19b1 → d3ed0bb +- golang.org/x/sys: f4d4317 → da31bd3 +- google.golang.org/api: v0.44.0 → v0.62.0 +- google.golang.org/genproto: fe13028 → 3a66f56 +- google.golang.org/grpc: v1.40.0 → v1.42.0 +- gopkg.in/ini.v1: v1.62.0 → v1.66.2 +- k8s.io/api: v0.23.0 → v0.23.3 +- k8s.io/apimachinery: v0.23.0 → v0.23.3 +- k8s.io/apiserver: v0.23.0 → v0.23.3 +- k8s.io/client-go: v0.23.0 → v0.23.3 +- k8s.io/cloud-provider: v0.23.0 → v0.23.3 +- k8s.io/component-base: v0.23.0 → v0.23.3 +- k8s.io/component-helpers: v0.23.0 → v0.23.3 +- k8s.io/controller-manager: v0.23.0 → v0.23.3 +- k8s.io/kubelet: v0.23.0 → v0.23.3 +- k8s.io/utils: cb0fa31 → 6203023 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.25 → v0.0.27 +- sigs.k8s.io/structured-merge-diff/v4: v4.1.2 → v4.2.1 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.30.md b/content/en/blog/releases/v1.23.30.md new file mode 100644 index 0000000000..45d0290d45 --- /dev/null +++ b/content/en/blog/releases/v1.23.30.md @@ -0,0 +1,24 @@ +--- +title: v1.23.30 +linkTitle: v1.23.30 +date: 2023-03-13 +description: Cloud Provider Azure v1.23.30 +--- +Full Changelog: [v1.23.29..v1.23.30](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.23.29...v1.23.30) + +## Changes by Kind + +### Bug or Regression + +- Fix: do not tag user-assigned public IP ([#3528](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3528), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.4.md b/content/en/blog/releases/v1.23.4.md new file mode 100644 index 0000000000..4d57a1ab10 --- /dev/null +++ b/content/en/blog/releases/v1.23.4.md @@ -0,0 +1,49 @@ +--- +title: v1.23.4 +linkTitle: v1.23.4 +date: 2022-02-23 +description: Cloud Provider Azure v1.23.4 +--- + + +## Changes by Kind + +### Feature + +- Feat: support changing LB backend pool type between nodeIP and nodeIP… ([#1125](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1125), [@nilo19](https://github.com/nilo19)) +- Following configuration will be applied to the all ports of service. + + "service.beta.kubernetes.io/azure-load-balancer-health-probe-protocol" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-interval" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-num-of-probe" + "service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path" + + If health probe is needed, user should specify AppProtocol in port object of Service spec. + And following protocols are supported: http, tcp, https + + Additional annotations are added. where port is the port number of port object + + service.beta.kubernetes.io/port_{port}_health-probe_interval + service.beta.kubernetes.io/port_{port}_health-probe_num-of-probe + service.beta.kubernetes.io/port_{port}_health-probe_request-path + + Please refer to docs. ([#1126](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1126), [@MartinForReal](https://github.com/MartinForReal)) + +### Uncategorized + +- Feat: Support controller health check in ccm ([#1144](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1144), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- If spec.LoadBalancerSourceRanges is specified and lb is in internal mode, LB is open for public access.(close by default for security reasons) ([#1121](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1121), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Increase Azure ACR credential provider timeout ([#1169](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1169), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- This code change fixes the bug that UDP services would trigger unnecessary LoadBalancer updates. The root cause is that a field not working for non-TCP protocols is considered. + ref: #1090 ([#1105](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1105), [@lzhecheng](https://github.com/lzhecheng)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v61.4.0+incompatible → v61.6.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v61.4.0...v61.6.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.5.md b/content/en/blog/releases/v1.23.5.md new file mode 100644 index 0000000000..18d9c817a1 --- /dev/null +++ b/content/en/blog/releases/v1.23.5.md @@ -0,0 +1,24 @@ +--- +title: v1.23.5 +linkTitle: v1.23.5 +date: 2022-03-04 +description: Cloud Provider Azure v1.23.5 +--- + + +## Changes by Kind + +### Uncategorized + +- Fix: do not delete backend pool when reconciling lb backend pools ([#1217](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1217), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v61.6.0+incompatible → v62.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v61.6.0...v62.0.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.6.md b/content/en/blog/releases/v1.23.6.md new file mode 100644 index 0000000000..6f59ec53e3 --- /dev/null +++ b/content/en/blog/releases/v1.23.6.md @@ -0,0 +1,74 @@ +--- +title: v1.23.6 +linkTitle: v1.23.6 +date: 2022-03-22 +description: Cloud Provider Azure v1.23.6 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: remove agent pool LB if that vmSet is changed to primary vmSet + fix: reuse previous private IP address when changing load balancers ([#1297](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1297), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: skip reconcileSharedLoadBalancer if the service is being deleted ([#1270](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1270), [@nilo19](https://github.com/nilo19)) + +### Uncategorized + +- Chore: add verbose logs for latency and operation start timestamps ([#1258](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1258), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: do not delete backend pool when reconciling lb backend pools ([#1217](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1217), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- cloud.google.com/go/firestore: v1.6.1 → v1.1.0 +- github.com/Azure/azure-sdk-for-go: [v62.0.0+incompatible → v62.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.0.0...v62.3.0) +- github.com/armon/go-metrics: [v0.3.10 → f0300d1](https://github.com/armon/go-metrics/compare/v0.3.10...f0300d1) +- github.com/armon/go-radix: [v1.0.0 → 7fddfc3](https://github.com/armon/go-radix/compare/v1.0.0...7fddfc3) +- github.com/census-instrumentation/opencensus-proto: [v0.3.0 → v0.2.1](https://github.com/census-instrumentation/opencensus-proto/compare/v0.3.0...v0.2.1) +- github.com/cncf/xds/go: [a8f9461 → cb28da3](https://github.com/cncf/xds/go/compare/a8f9461...cb28da3) +- github.com/envoyproxy/go-control-plane: [v0.10.1 → cf90f65](https://github.com/envoyproxy/go-control-plane/compare/v0.10.1...cf90f65) +- github.com/envoyproxy/protoc-gen-validate: [v0.6.2 → v0.1.0](https://github.com/envoyproxy/protoc-gen-validate/compare/v0.6.2...v0.1.0) +- github.com/fatih/color: [v1.13.0 → v1.7.0](https://github.com/fatih/color/compare/v1.13.0...v1.7.0) +- github.com/googleapis/gax-go/v2: [v2.1.1 → v2.0.5](https://github.com/googleapis/gax-go/v2/compare/v2.1.1...v2.0.5) +- github.com/hashicorp/consul/api: [v1.11.0 → v1.1.0](https://github.com/hashicorp/consul/api/compare/v1.11.0...v1.1.0) +- github.com/hashicorp/consul/sdk: [v0.8.0 → v0.1.1](https://github.com/hashicorp/consul/sdk/compare/v0.8.0...v0.1.1) +- github.com/hashicorp/go-cleanhttp: [v0.5.2 → v0.5.1](https://github.com/hashicorp/go-cleanhttp/compare/v0.5.2...v0.5.1) +- github.com/hashicorp/go-immutable-radix: [v1.3.1 → v1.0.0](https://github.com/hashicorp/go-immutable-radix/compare/v1.3.1...v1.0.0) +- github.com/hashicorp/go-multierror: [v1.1.0 → v1.0.0](https://github.com/hashicorp/go-multierror/compare/v1.1.0...v1.0.0) +- github.com/hashicorp/go-rootcerts: [v1.0.2 → v1.0.0](https://github.com/hashicorp/go-rootcerts/compare/v1.0.2...v1.0.0) +- github.com/hashicorp/golang-lru: [v0.5.4 → v0.5.1](https://github.com/hashicorp/golang-lru/compare/v0.5.4...v0.5.1) +- github.com/hashicorp/mdns: [v1.0.4 → v1.0.0](https://github.com/hashicorp/mdns/compare/v1.0.4...v1.0.0) +- github.com/hashicorp/memberlist: [v0.3.0 → v0.1.3](https://github.com/hashicorp/memberlist/compare/v0.3.0...v0.1.3) +- github.com/hashicorp/serf: [v0.9.6 → v0.8.2](https://github.com/hashicorp/serf/compare/v0.9.6...v0.8.2) +- github.com/mattn/go-colorable: [v0.1.12 → v0.0.9](https://github.com/mattn/go-colorable/compare/v0.1.12...v0.0.9) +- github.com/mattn/go-isatty: [v0.0.14 → v0.0.3](https://github.com/mattn/go-isatty/compare/v0.0.14...v0.0.3) +- github.com/miekg/dns: [v1.1.41 → v1.0.14](https://github.com/miekg/dns/compare/v1.1.41...v1.0.14) +- github.com/mitchellh/cli: [v1.1.0 → v1.0.0](https://github.com/mitchellh/cli/compare/v1.1.0...v1.0.0) +- github.com/mitchellh/mapstructure: [v1.4.3 → v1.4.1](https://github.com/mitchellh/mapstructure/compare/v1.4.3...v1.4.1) +- github.com/pascaldekloe/goe: [v0.1.0 → 57f6aae](https://github.com/pascaldekloe/goe/compare/v0.1.0...57f6aae) +- github.com/pelletier/go-toml: [v1.9.4 → v1.9.3](https://github.com/pelletier/go-toml/compare/v1.9.4...v1.9.3) +- github.com/posener/complete: [v1.2.3 → v1.1.1](https://github.com/posener/complete/compare/v1.2.3...v1.1.1) +- github.com/spf13/cast: [v1.4.1 → v1.3.1](https://github.com/spf13/cast/compare/v1.4.1...v1.3.1) +- github.com/spf13/cobra: [v1.3.0 → v1.4.0](https://github.com/spf13/cobra/compare/v1.3.0...v1.4.0) +- github.com/spf13/viper: [v1.10.0 → v1.8.1](https://github.com/spf13/viper/compare/v1.10.0...v1.8.1) +- github.com/stretchr/testify: [v1.7.0 → v1.7.1](https://github.com/stretchr/testify/compare/v1.7.0...v1.7.1) +- go.etcd.io/etcd/client/v2: v2.305.1 → v2.305.0 +- golang.org/x/mod: v0.5.0 → v0.4.2 +- google.golang.org/api: v0.62.0 → v0.44.0 +- gopkg.in/ini.v1: v1.66.2 → v1.62.0 + +### Removed +- github.com/DataDog/datadog-go: [v3.2.0+incompatible](https://github.com/DataDog/datadog-go/tree/v3.2.0) +- github.com/circonus-labs/circonus-gometrics: [v2.3.1+incompatible](https://github.com/circonus-labs/circonus-gometrics/tree/v2.3.1) +- github.com/circonus-labs/circonusllhist: [v0.1.3](https://github.com/circonus-labs/circonusllhist/tree/v0.1.3) +- github.com/hashicorp/go-hclog: [v1.0.0](https://github.com/hashicorp/go-hclog/tree/v1.0.0) +- github.com/hashicorp/go-retryablehttp: [v0.5.3](https://github.com/hashicorp/go-retryablehttp/tree/v0.5.3) +- github.com/iancoleman/strcase: [v0.2.0](https://github.com/iancoleman/strcase/tree/v0.2.0) +- github.com/lyft/protoc-gen-star: [v0.5.3](https://github.com/lyft/protoc-gen-star/tree/v0.5.3) +- github.com/sagikazarmark/crypt: [v0.3.0](https://github.com/sagikazarmark/crypt/tree/v0.3.0) +- github.com/tv42/httpunix: [b75d861](https://github.com/tv42/httpunix/tree/b75d861) diff --git a/content/en/blog/releases/v1.23.7.md b/content/en/blog/releases/v1.23.7.md new file mode 100644 index 0000000000..a7a5ec76d3 --- /dev/null +++ b/content/en/blog/releases/v1.23.7.md @@ -0,0 +1,24 @@ +--- +title: v1.23.7 +linkTitle: v1.23.7 +date: 2022-03-25 +description: Cloud Provider Azure v1.23.7 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: only check the frontend IP config that is owned by the service ([#1322](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1322), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.8.md b/content/en/blog/releases/v1.23.8.md new file mode 100644 index 0000000000..d6e9118292 --- /dev/null +++ b/content/en/blog/releases/v1.23.8.md @@ -0,0 +1,25 @@ +--- +title: v1.23.8 +linkTitle: v1.23.8 +date: 2022-03-25 +description: Cloud Provider Azure v1.23.8 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: only check the frontend IP config that is owned by the service (#1322, @nilo19) +- Fix: update load balancer rule when probe changes (#1347, @k8s-infra-cherrypick-robot) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.23.9.md b/content/en/blog/releases/v1.23.9.md new file mode 100644 index 0000000000..0f4ef1ad35 --- /dev/null +++ b/content/en/blog/releases/v1.23.9.md @@ -0,0 +1,36 @@ +--- +title: v1.23.9 +linkTitle: v1.23.9 +date: 2022-04-13 +description: Cloud Provider Azure v1.23.9 +--- + + +## Changes by Kind + +### Bug or Regression + +- The cloud provider will create TCP probe rule if the probe protocol is not supported. ([#1394](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1394), [@MartinForReal](https://github.com/MartinForReal)) + +### Uncategorized + +- Fix a bug: If users specify a subnet name like "a--------------------------------------------------z", it leads to "InvalidResourceName" error. ([#1464](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1464), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: disk attach/detach failure when operation is preempted ([#1458](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1458), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v62.3.0+incompatible → v63.2.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v62.3.0...v63.2.0) +- github.com/Azure/go-autorest/autorest/mocks: [v0.4.1 → v0.4.2](https://github.com/Azure/go-autorest/autorest/mocks/compare/v0.4.1...v0.4.2) +- github.com/Azure/go-autorest/autorest: [v0.11.24 → v0.11.25](https://github.com/Azure/go-autorest/autorest/compare/v0.11.24...v0.11.25) +- github.com/google/pprof: [94a9f03 → cbba55b](https://github.com/google/pprof/compare/94a9f03...cbba55b) +- github.com/onsi/ginkgo/v2: [v2.0.0 → v2.1.3](https://github.com/onsi/ginkgo/v2/compare/v2.0.0...v2.1.3) +- github.com/onsi/gomega: [v1.18.1 → v1.19.0](https://github.com/onsi/gomega/compare/v1.18.1...v1.19.0) +- golang.org/x/net: 491a49a → 27dd868 +- golang.org/x/term: 6886f2d → 03fcf44 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.0.md b/content/en/blog/releases/v1.24.0.md new file mode 100644 index 0000000000..952796d93f --- /dev/null +++ b/content/en/blog/releases/v1.24.0.md @@ -0,0 +1,71 @@ +--- +title: v1.24.0 +linkTitle: v1.24.0 +date: 2022-05-06 +description: Cloud Provider Azure v1.24.0 +--- + + +## Changes by Kind + +### Feature + +- Feat: add DiskEncryptionType in CreateDisk ([#1646](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1646), [@andyzhangx](https://github.com/andyzhangx)) +- Update dependencies to 1.24 ([#1655](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1655), [@MartinForReal](https://github.com/MartinForReal)) + +## Actions Required + +From cloud provider Azure v1.24.0 version, the LoadBalancer typed services with appProtocol HTTP/HTTPS would switch to HTTP/HTTPS for health probe protocol (while TCP is used before v1.24.0). And `/` would be used as the default health probe request path. If your service doesn't respond 200 for `/`, please ensure set service annotation `service.beta.kubernetes.io/port_{port}_health-probe_request-path` or `service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path` (applied to all ports) with correct request path to avoid service broken. + +Please refer the documents [here](https://kubernetes-sigs.github.io/cloud-provider-azure/topics/loadbalancer/#custom-load-balancer-health-probe) for the details of Azure LoadBalancer health probe customization. + +## Dependencies + +### Added +- github.com/armon/go-socks5: [e753329](https://github.com/armon/go-socks5/tree/e753329) +- github.com/blang/semver/v4: [v4.0.0](https://github.com/blang/semver/v4/tree/v4.0.0) +- github.com/google/gnostic: [v0.5.7-v3refs](https://github.com/google/gnostic/tree/v0.5.7-v3refs) + +### Changed +- github.com/bketelsen/crypt: [v0.0.4 → 5cbc8cc](https://github.com/bketelsen/crypt/compare/v0.0.4...5cbc8cc) +- github.com/cncf/udpa/go: [04548b0 → 5459f2c](https://github.com/cncf/udpa/go/compare/04548b0...5459f2c) +- github.com/cncf/xds/go: [cb28da3 → fbca930](https://github.com/cncf/xds/go/compare/cb28da3...fbca930) +- github.com/envoyproxy/go-control-plane: [cf90f65 → 63b5d3c](https://github.com/envoyproxy/go-control-plane/compare/cf90f65...63b5d3c) +- github.com/google/go-cmp: [v0.5.6 → v0.5.5](https://github.com/google/go-cmp/compare/v0.5.6...v0.5.5) +- github.com/magiconair/properties: [v1.8.5 → v1.8.1](https://github.com/magiconair/properties/compare/v1.8.5...v1.8.1) +- github.com/mitchellh/mapstructure: [v1.4.1 → v1.1.2](https://github.com/mitchellh/mapstructure/compare/v1.4.1...v1.1.2) +- github.com/moby/term: [9d4ed18 → 3f7ff69](https://github.com/moby/term/compare/9d4ed18...3f7ff69) +- github.com/pelletier/go-toml: [v1.9.3 → v1.2.0](https://github.com/pelletier/go-toml/compare/v1.9.3...v1.2.0) +- github.com/prometheus/client_golang: [v1.11.0 → v1.12.1](https://github.com/prometheus/client_golang/compare/v1.11.0...v1.12.1) +- github.com/prometheus/common: [v0.28.0 → v0.32.1](https://github.com/prometheus/common/compare/v0.28.0...v0.32.1) +- github.com/prometheus/procfs: [v0.6.0 → v0.7.3](https://github.com/prometheus/procfs/compare/v0.6.0...v0.7.3) +- github.com/spf13/cast: [v1.3.1 → v1.3.0](https://github.com/spf13/cast/compare/v1.3.1...v1.3.0) +- github.com/spf13/jwalterweatherman: [v1.1.0 → v1.0.0](https://github.com/spf13/jwalterweatherman/compare/v1.1.0...v1.0.0) +- github.com/spf13/viper: [v1.8.1 → v1.7.0](https://github.com/spf13/viper/compare/v1.8.1...v1.7.0) +- github.com/yuin/goldmark: [v1.4.0 → v1.4.1](https://github.com/yuin/goldmark/compare/v1.4.0...v1.4.1) +- go.etcd.io/etcd/client/v3: v3.5.0 → v3.5.1 +- golang.org/x/crypto: 5e0467b → 8634188 +- golang.org/x/mod: v0.4.2 → 9b9b3d8 +- golang.org/x/time: 1f47c86 → 90d013b +- golang.org/x/tools: d4cc65f → 897bd77 +- google.golang.org/api: v0.44.0 → v0.43.0 +- google.golang.org/genproto: 3a66f56 → 42d7afd +- google.golang.org/grpc: v1.42.0 → v1.40.0 +- gopkg.in/ini.v1: v1.62.0 → v1.51.0 +- k8s.io/api: v0.23.5 → v0.24.0 +- k8s.io/apimachinery: v0.23.5 → v0.24.0 +- k8s.io/apiserver: v0.23.5 → v0.24.0 +- k8s.io/client-go: v0.23.5 → v0.24.0 +- k8s.io/cloud-provider: v0.23.5 → v0.24.0 +- k8s.io/component-base: v0.23.5 → v0.24.0 +- k8s.io/component-helpers: v0.23.5 → v0.24.0 +- k8s.io/controller-manager: v0.23.5 → v0.24.0 +- k8s.io/klog/v2: v2.30.0 → v2.60.1 +- k8s.io/kube-openapi: e816edb → 3ee0da9 +- k8s.io/kubelet: v0.23.5 → v0.24.0 +- k8s.io/utils: 6203023 → 3a6ce19 +- sigs.k8s.io/json: c049b76 → 9f7c6b3 + +### Removed +- github.com/blang/semver: [v3.5.1+incompatible](https://github.com/blang/semver/tree/v3.5.1) +- github.com/googleapis/gnostic: [v0.5.5](https://github.com/googleapis/gnostic/tree/v0.5.5) diff --git a/content/en/blog/releases/v1.24.1.md b/content/en/blog/releases/v1.24.1.md new file mode 100644 index 0000000000..4c38217e29 --- /dev/null +++ b/content/en/blog/releases/v1.24.1.md @@ -0,0 +1,49 @@ +--- +title: v1.24.1 +linkTitle: v1.24.1 +date: 2022-06-08 +description: Cloud Provider Azure v1.24.1 +--- + + +## Changes by Kind + +### Feature + +- Update dependencies to 1.24 ([#1655](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1655), [@MartinForReal](https://github.com/MartinForReal)) + +### Bug or Regression + +- Cloud provider will create route for unmanaged node if dual stack is enabled. ([#1726](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1726), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: panic when create private endpoint using azurefile NFS ([#1816](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1816), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fixes bug when using dual-stack in AKS that prevents IPv6 services from using ILB. ([#1720](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1720), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Azure privateEndpointClient APIs are changed: + 1. Get() and CreateOrUpdate() return *retry.Error instead of error + 2. Add etag argument for CreateOrUpdate() function. ([#1792](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1792), [@jwtty](https://github.com/jwtty)) +- Chore: upgrade network API version to 2021-08-01 ([#1788](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1788), [@lodrem](https://github.com/lodrem)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v63.4.0+incompatible → v65.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v63.4.0...v65.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.19 → v0.9.20](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.19...v0.9.20) +- github.com/stretchr/testify: [v1.7.1 → v1.7.2](https://github.com/stretchr/testify/compare/v1.7.1...v1.7.2) +- gopkg.in/yaml.v3: 496545a → v3.0.1 +- k8s.io/api: v0.24.0 → v0.24.1 +- k8s.io/apimachinery: v0.24.0 → v0.24.1 +- k8s.io/apiserver: v0.24.0 → v0.24.1 +- k8s.io/client-go: v0.24.0 → v0.24.1 +- k8s.io/cloud-provider: v0.24.0 → v0.24.1 +- k8s.io/component-base: v0.24.0 → v0.24.1 +- k8s.io/component-helpers: v0.24.0 → v0.24.1 +- k8s.io/controller-manager: v0.24.0 → v0.24.1 +- k8s.io/kubelet: v0.24.0 → v0.24.1 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.10.md b/content/en/blog/releases/v1.24.10.md new file mode 100644 index 0000000000..ae59c07dba --- /dev/null +++ b/content/en/blog/releases/v1.24.10.md @@ -0,0 +1,26 @@ +--- +title: v1.24.10 +linkTitle: v1.24.10 +date: 2022-10-31 +description: Cloud Provider Azure v1.24.10 +--- + + +## Changes by Kind + +### Other (Cleanup or Flake) + +- Bump azure compute to 2022-03-01 ([#2633](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2633), [@MartinForReal](https://github.com/MartinForReal)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/google/go-cmp: [v0.5.8 → v0.5.9](https://github.com/google/go-cmp/compare/v0.5.8...v0.5.9) +- github.com/onsi/gomega: [v1.22.1 → v1.23.0](https://github.com/onsi/gomega/compare/v1.22.1...v1.23.0) +- github.com/spf13/cobra: [v1.6.0 → v1.6.1](https://github.com/spf13/cobra/compare/v1.6.0...v1.6.1) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.11.md b/content/en/blog/releases/v1.24.11.md new file mode 100644 index 0000000000..899bb4634a --- /dev/null +++ b/content/en/blog/releases/v1.24.11.md @@ -0,0 +1,48 @@ +--- +title: v1.24.11 +linkTitle: v1.24.11 +date: 2022-12-05 +description: Cloud Provider Azure v1.24.11 +--- + + +## Changes by Kind + +### Bug or Regression + +- Considering thread safety, results of cache Get() should be deepcopied before used. ([#2699](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2699), [@lzhecheng](https://github.com/lzhecheng)) +- Fix an issue when DNS label of public ip is not updated when service.beta.kubernetes.io/azure-dns-label-name is changed. ([#2701](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2701), [@MartinForReal](https://github.com/MartinForReal)) +- Fix to reduce PublicIPAddress list arm calls ([#2807](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2807), [@jwtty](https://github.com/jwtty)) +- Fix: decouple vmss from the lb if the backend pool is empty when using ip-based LB + chore: do not set etag to nil when updating lb backend pool ([#2832](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2832), [@nilo19](https://github.com/nilo19)) +- Fix: remove lb from vmss when the backend pool is empty ([#2794](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2794), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: remove orphaned nic from lb backend pool if the corresponding VM is not found ([#2845](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2845), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.0.0+incompatible → v67.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.0.0...v67.1.0) +- github.com/onsi/ginkgo/v2: [v2.4.0 → v2.5.1](https://github.com/onsi/ginkgo/v2/compare/v2.4.0...v2.5.1) +- github.com/onsi/gomega: [v1.23.0 → v1.24.1](https://github.com/onsi/gomega/compare/v1.23.0...v1.24.1) +- golang.org/x/net: v0.1.0 → v0.2.0 +- golang.org/x/sys: v0.1.0 → v0.3.0 +- golang.org/x/term: v0.1.0 → v0.2.0 +- golang.org/x/text: v0.4.0 → v0.5.0 +- k8s.io/api: v0.24.7 → v0.24.8 +- k8s.io/apimachinery: v0.24.7 → v0.24.8 +- k8s.io/apiserver: v0.24.7 → v0.24.8 +- k8s.io/client-go: v0.24.7 → v0.24.8 +- k8s.io/cloud-provider: v0.24.7 → v0.24.8 +- k8s.io/component-base: v0.24.7 → v0.24.8 +- k8s.io/component-helpers: v0.24.7 → v0.24.8 +- k8s.io/controller-manager: v0.24.7 → v0.24.8 +- k8s.io/kubelet: v0.24.7 → v0.24.8 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.12.md b/content/en/blog/releases/v1.24.12.md new file mode 100644 index 0000000000..85170c2c54 --- /dev/null +++ b/content/en/blog/releases/v1.24.12.md @@ -0,0 +1,116 @@ +--- +title: v1.24.12 +linkTitle: v1.24.12 +date: 2023-01-03 +description: Cloud Provider Azure v1.24.12 +--- + + +## Changes by Kind + +### Feature + +- Added: support for new annotations **service.beta.kubernetes.io/port__health-probe_protocol** and **service.beta.kubernetes.io/port__health-probe_port** to allow explicitly setting the health probe protocol individually for each service port. Useful for services like Istio which have health check separate from the main service port. ([#2824](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2824), [@MartinForReal](https://github.com/MartinForReal)) + +### Bug or Regression + +- Fix k8s-azure-dns-label-service tag not deleted with Service. Bug: When a Service with DNS label is deleted, k8s-azure-dns-label-service tag won't be deleted and it leads to ensurePublicIPExists error. ([#2911](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2911), [@lzhecheng](https://github.com/lzhecheng)) +- Fix: get vmss name and resource group from vm ID if the provider ID of the node is empty ([#2990](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2990), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Fix CVE-2022-41717 ([#2926](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2926), [@MartinForReal](https://github.com/MartinForReal)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.1.0+incompatible → v67.2.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.1.0...v67.2.0) +- github.com/google/martian/v3: [v3.1.0 → v3.0.0](https://github.com/google/martian/v3/compare/v3.1.0...v3.0.0) +- github.com/ianlancetaylor/demangle: [28f6c0f → 5e5cf60](https://github.com/ianlancetaylor/demangle/compare/28f6c0f...5e5cf60) +- github.com/onsi/ginkgo/v2: [v2.5.1 → v2.6.1](https://github.com/onsi/ginkgo/v2/compare/v2.5.1...v2.6.1) +- github.com/onsi/gomega: [v1.24.1 → v1.24.2](https://github.com/onsi/gomega/compare/v1.24.1...v1.24.2) +- go.opencensus.io: v0.23.0 → v0.22.4 +- golang.org/x/net: v0.2.0 → v0.4.0 +- golang.org/x/sync: 036812b → 886fb93 +- golang.org/x/term: v0.2.0 → v0.3.0 +- golang.org/x/tools: v0.2.0 → v0.4.0 +- google.golang.org/api: v0.43.0 → v0.30.0 +- k8s.io/api: v0.24.8 → v0.24.9 +- k8s.io/apimachinery: v0.24.8 → v0.24.9 +- k8s.io/apiserver: v0.24.8 → v0.24.9 +- k8s.io/client-go: v0.24.8 → v0.24.9 +- k8s.io/cloud-provider: v0.24.8 → v0.24.9 +- k8s.io/component-base: v0.24.8 → v0.24.9 +- k8s.io/component-helpers: v0.24.8 → v0.24.9 +- k8s.io/controller-manager: v0.24.8 → v0.24.9 +- k8s.io/kubelet: v0.24.8 → v0.24.9 + +### Removed +- cloud.google.com/go/firestore: v1.1.0 +- github.com/armon/circbuf: [bbbad09](https://github.com/armon/circbuf/tree/bbbad09) +- github.com/armon/go-metrics: [f0300d1](https://github.com/armon/go-metrics/tree/f0300d1) +- github.com/armon/go-radix: [7fddfc3](https://github.com/armon/go-radix/tree/7fddfc3) +- github.com/bgentry/speakeasy: [v0.1.0](https://github.com/bgentry/speakeasy/tree/v0.1.0) +- github.com/bketelsen/crypt: [5cbc8cc](https://github.com/bketelsen/crypt/tree/5cbc8cc) +- github.com/certifi/gocertifi: [2c3bb06](https://github.com/certifi/gocertifi/tree/2c3bb06) +- github.com/cockroachdb/datadriven: [bf6692d](https://github.com/cockroachdb/datadriven/tree/bf6692d) +- github.com/cockroachdb/errors: [v1.2.4](https://github.com/cockroachdb/errors/tree/v1.2.4) +- github.com/cockroachdb/logtags: [eb05cc2](https://github.com/cockroachdb/logtags/tree/eb05cc2) +- github.com/coreos/bbolt: [v1.3.2](https://github.com/coreos/bbolt/tree/v1.3.2) +- github.com/coreos/etcd: [v3.3.13+incompatible](https://github.com/coreos/etcd/tree/v3.3.13) +- github.com/coreos/go-systemd: [95778df](https://github.com/coreos/go-systemd/tree/95778df) +- github.com/coreos/pkg: [399ea9e](https://github.com/coreos/pkg/tree/399ea9e) +- github.com/dgrijalva/jwt-go: [v3.2.0+incompatible](https://github.com/dgrijalva/jwt-go/tree/v3.2.0) +- github.com/dgryski/go-sip13: [e10d5fe](https://github.com/dgryski/go-sip13/tree/e10d5fe) +- github.com/fatih/color: [v1.7.0](https://github.com/fatih/color/tree/v1.7.0) +- github.com/getsentry/raven-go: [v0.2.0](https://github.com/getsentry/raven-go/tree/v0.2.0) +- github.com/gopherjs/gopherjs: [0766667](https://github.com/gopherjs/gopherjs/tree/0766667) +- github.com/hashicorp/consul/api: [v1.1.0](https://github.com/hashicorp/consul/api/tree/v1.1.0) +- github.com/hashicorp/consul/sdk: [v0.1.1](https://github.com/hashicorp/consul/sdk/tree/v0.1.1) +- github.com/hashicorp/errwrap: [v1.0.0](https://github.com/hashicorp/errwrap/tree/v1.0.0) +- github.com/hashicorp/go-cleanhttp: [v0.5.1](https://github.com/hashicorp/go-cleanhttp/tree/v0.5.1) +- github.com/hashicorp/go-immutable-radix: [v1.0.0](https://github.com/hashicorp/go-immutable-radix/tree/v1.0.0) +- github.com/hashicorp/go-msgpack: [v0.5.3](https://github.com/hashicorp/go-msgpack/tree/v0.5.3) +- github.com/hashicorp/go-multierror: [v1.0.0](https://github.com/hashicorp/go-multierror/tree/v1.0.0) +- github.com/hashicorp/go-rootcerts: [v1.0.0](https://github.com/hashicorp/go-rootcerts/tree/v1.0.0) +- github.com/hashicorp/go-sockaddr: [v1.0.0](https://github.com/hashicorp/go-sockaddr/tree/v1.0.0) +- github.com/hashicorp/go-syslog: [v1.0.0](https://github.com/hashicorp/go-syslog/tree/v1.0.0) +- github.com/hashicorp/go-uuid: [v1.0.1](https://github.com/hashicorp/go-uuid/tree/v1.0.1) +- github.com/hashicorp/go.net: [v0.0.1](https://github.com/hashicorp/go.net/tree/v0.0.1) +- github.com/hashicorp/hcl: [v1.0.0](https://github.com/hashicorp/hcl/tree/v1.0.0) +- github.com/hashicorp/logutils: [v1.0.0](https://github.com/hashicorp/logutils/tree/v1.0.0) +- github.com/hashicorp/mdns: [v1.0.0](https://github.com/hashicorp/mdns/tree/v1.0.0) +- github.com/hashicorp/memberlist: [v0.1.3](https://github.com/hashicorp/memberlist/tree/v0.1.3) +- github.com/hashicorp/serf: [v0.8.2](https://github.com/hashicorp/serf/tree/v0.8.2) +- github.com/jtolds/gls: [v4.20.0+incompatible](https://github.com/jtolds/gls/tree/v4.20.0) +- github.com/kr/fs: [v0.1.0](https://github.com/kr/fs/tree/v0.1.0) +- github.com/magiconair/properties: [v1.8.1](https://github.com/magiconair/properties/tree/v1.8.1) +- github.com/mattn/go-colorable: [v0.0.9](https://github.com/mattn/go-colorable/tree/v0.0.9) +- github.com/mattn/go-isatty: [v0.0.3](https://github.com/mattn/go-isatty/tree/v0.0.3) +- github.com/miekg/dns: [v1.0.14](https://github.com/miekg/dns/tree/v1.0.14) +- github.com/mitchellh/cli: [v1.0.0](https://github.com/mitchellh/cli/tree/v1.0.0) +- github.com/mitchellh/go-homedir: [v1.1.0](https://github.com/mitchellh/go-homedir/tree/v1.1.0) +- github.com/mitchellh/go-testing-interface: [v1.0.0](https://github.com/mitchellh/go-testing-interface/tree/v1.0.0) +- github.com/mitchellh/gox: [v0.4.0](https://github.com/mitchellh/gox/tree/v0.4.0) +- github.com/mitchellh/iochan: [v1.0.0](https://github.com/mitchellh/iochan/tree/v1.0.0) +- github.com/oklog/ulid: [v1.3.1](https://github.com/oklog/ulid/tree/v1.3.1) +- github.com/opentracing/opentracing-go: [v1.1.0](https://github.com/opentracing/opentracing-go/tree/v1.1.0) +- github.com/pascaldekloe/goe: [57f6aae](https://github.com/pascaldekloe/goe/tree/57f6aae) +- github.com/pelletier/go-toml: [v1.2.0](https://github.com/pelletier/go-toml/tree/v1.2.0) +- github.com/pkg/sftp: [v1.10.1](https://github.com/pkg/sftp/tree/v1.10.1) +- github.com/posener/complete: [v1.1.1](https://github.com/posener/complete/tree/v1.1.1) +- github.com/prometheus/tsdb: [v0.7.1](https://github.com/prometheus/tsdb/tree/v0.7.1) +- github.com/ryanuber/columnize: [9b3edd6](https://github.com/ryanuber/columnize/tree/9b3edd6) +- github.com/sean-/seed: [e2103e2](https://github.com/sean-/seed/tree/e2103e2) +- github.com/shurcooL/sanitized_anchor_name: [v1.0.0](https://github.com/shurcooL/sanitized_anchor_name/tree/v1.0.0) +- github.com/smartystreets/assertions: [b2de0cb](https://github.com/smartystreets/assertions/tree/b2de0cb) +- github.com/smartystreets/goconvey: [v1.6.4](https://github.com/smartystreets/goconvey/tree/v1.6.4) +- github.com/spf13/cast: [v1.3.0](https://github.com/spf13/cast/tree/v1.3.0) +- github.com/spf13/jwalterweatherman: [v1.0.0](https://github.com/spf13/jwalterweatherman/tree/v1.0.0) +- github.com/spf13/viper: [v1.7.0](https://github.com/spf13/viper/tree/v1.7.0) +- github.com/subosito/gotenv: [v1.2.0](https://github.com/subosito/gotenv/tree/v1.2.0) +- gopkg.in/ini.v1: v1.51.0 +- gopkg.in/resty.v1: v1.12.0 diff --git a/content/en/blog/releases/v1.24.13.md b/content/en/blog/releases/v1.24.13.md new file mode 100644 index 0000000000..f62bf7c162 --- /dev/null +++ b/content/en/blog/releases/v1.24.13.md @@ -0,0 +1,46 @@ +--- +title: v1.24.13 +linkTitle: v1.24.13 +date: 2023-01-16 +description: Cloud Provider Azure v1.24.13 +--- + + +## Changes by Kind + +### Uncategorized + +- Fix: Use TimedCache.Get() for read-only resources ([#3106](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3106), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +- github.com/Azure/azure-kusto-go: [v0.10.2](https://github.com/Azure/azure-kusto-go/tree/v0.10.2) +- github.com/Azure/azure-pipeline-go: [v0.1.8](https://github.com/Azure/azure-pipeline-go/tree/v0.1.8) +- github.com/Azure/azure-sdk-for-go/sdk/azcore: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azcore/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/azidentity: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azidentity/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/internal: [v1.1.1](https://github.com/Azure/azure-sdk-for-go/sdk/internal/tree/v1.1.1) +- github.com/Azure/azure-sdk-for-go/sdk/storage/azblob: [v0.6.1](https://github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/tree/v0.6.1) +- github.com/Azure/azure-storage-queue-go: [6368018](https://github.com/Azure/azure-storage-queue-go/tree/6368018) +- github.com/AzureAD/microsoft-authentication-library-for-go: [v0.7.0](https://github.com/AzureAD/microsoft-authentication-library-for-go/tree/v0.7.0) +- github.com/cenkalti/backoff/v4: [v4.2.0](https://github.com/cenkalti/backoff/v4/tree/v4.2.0) +- github.com/dnaeon/go-vcr: [v1.1.0](https://github.com/dnaeon/go-vcr/tree/v1.1.0) +- github.com/gofrs/uuid: [v4.2.0+incompatible](https://github.com/gofrs/uuid/tree/v4.2.0) +- github.com/golang-jwt/jwt: [v3.2.1+incompatible](https://github.com/golang-jwt/jwt/tree/v3.2.1) +- github.com/kylelemons/godebug: [v1.1.0](https://github.com/kylelemons/godebug/tree/v1.1.0) +- github.com/montanaflynn/stats: [v0.6.6](https://github.com/montanaflynn/stats/tree/v0.6.6) +- github.com/pkg/browser: [681adbf](https://github.com/pkg/browser/tree/681adbf) +- github.com/tj/assert: [v0.0.3](https://github.com/tj/assert/tree/v0.0.3) + +### Changed +- github.com/golang-jwt/jwt/v4: [v4.2.0 → v4.4.3](https://github.com/golang-jwt/jwt/v4/compare/v4.2.0...v4.4.3) +- github.com/google/uuid: [v1.1.2 → v1.3.0](https://github.com/google/uuid/compare/v1.1.2...v1.3.0) +- github.com/onsi/ginkgo/v2: [v2.6.1 → v2.7.0](https://github.com/onsi/ginkgo/v2/compare/v2.6.1...v2.7.0) +- golang.org/x/crypto: 630584e → v0.5.0 +- golang.org/x/net: v0.4.0 → v0.5.0 +- golang.org/x/sys: v0.3.0 → v0.4.0 +- golang.org/x/term: v0.3.0 → v0.4.0 +- golang.org/x/text: v0.5.0 → v0.6.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.14.md b/content/en/blog/releases/v1.24.14.md new file mode 100644 index 0000000000..f62c5e53d6 --- /dev/null +++ b/content/en/blog/releases/v1.24.14.md @@ -0,0 +1,40 @@ +--- +title: v1.24.14 +linkTitle: v1.24.14 +date: 2023-01-31 +description: Cloud Provider Azure v1.24.14 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: skip removing nics from lb if there will be no nics in the backend pool + update network api to 2022-07-01 to support backend pool level virtual network id ([#3245](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3245), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.2.0+incompatible → v68.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.2.0...v68.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.21 → v0.9.22](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.21...v0.9.22) +- github.com/onsi/ginkgo/v2: [v2.7.0 → v2.7.1](https://github.com/onsi/ginkgo/v2/compare/v2.7.0...v2.7.1) +- github.com/onsi/gomega: [v1.24.2 → v1.26.0](https://github.com/onsi/gomega/compare/v1.24.2...v1.26.0) +- golang.org/x/tools: v0.4.0 → v0.5.0 +- k8s.io/api: v0.24.9 → v0.24.10 +- k8s.io/apimachinery: v0.24.9 → v0.24.10 +- k8s.io/apiserver: v0.24.9 → v0.24.10 +- k8s.io/client-go: v0.24.9 → v0.24.10 +- k8s.io/cloud-provider: v0.24.9 → v0.24.10 +- k8s.io/component-base: v0.24.9 → v0.24.10 +- k8s.io/component-helpers: v0.24.9 → v0.24.10 +- k8s.io/controller-manager: v0.24.9 → v0.24.10 +- k8s.io/kubelet: v0.24.9 → v0.24.10 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.33 → v0.0.35 +- sigs.k8s.io/structured-merge-diff/v4: v4.2.1 → v4.2.3 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.15.md b/content/en/blog/releases/v1.24.15.md new file mode 100644 index 0000000000..4893835c4f --- /dev/null +++ b/content/en/blog/releases/v1.24.15.md @@ -0,0 +1,24 @@ +--- +title: v1.24.15 +linkTitle: v1.24.15 +date: 2023-02-13 +description: Cloud Provider Azure v1.24.15 +--- +Full Changelog: [v1.24.14..v1.24.15](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.24.14...v1.24.15) + +## Changes by Kind + +### Bug or Regression + +- Fix: remove vmss vm from cache when invalidate the cache ([#3300](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3300), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- golang.org/x/sys: v0.4.0 → v0.5.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.16.md b/content/en/blog/releases/v1.24.16.md new file mode 100644 index 0000000000..b6bfc1bc4f --- /dev/null +++ b/content/en/blog/releases/v1.24.16.md @@ -0,0 +1,44 @@ +--- +title: v1.24.16 +linkTitle: v1.24.16 +date: 2023-03-10 +description: Cloud Provider Azure v1.24.16 +--- +Full Changelog: [v1.24.15..v1.24.16](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.24.15...v1.24.16) + +## Changes by Kind + +### Bug or Regression + +- Fix incorrect security rule name with IPv6 address prefix ([#3353](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3353), [@lzhecheng](https://github.com/lzhecheng)) +- Fix: remove shared security rule when no svc with shared-nsg annotation exists ([#3396](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3396), [@MartinForReal](https://github.com/MartinForReal)) +- Fix: remove single vm from the cache instead of removing all vms of a vmss when deleting a node from the cache ([#3508](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3508), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.8.0 → v2.8.1](https://github.com/onsi/ginkgo/v2/compare/v2.8.0...v2.8.1) +- github.com/onsi/gomega: [v1.26.0 → v1.27.1](https://github.com/onsi/gomega/compare/v1.26.0...v1.27.1) +- github.com/stretchr/testify: [v1.8.1 → v1.8.2](https://github.com/stretchr/testify/compare/v1.8.1...v1.8.2) +- golang.org/x/crypto: v0.5.0 → v0.7.0 +- golang.org/x/mod: 86c51ed → v0.8.0 +- golang.org/x/net: v0.5.0 → v0.8.0 +- golang.org/x/sys: v0.5.0 → v0.6.0 +- golang.org/x/term: v0.4.0 → v0.6.0 +- golang.org/x/text: v0.6.0 → v0.8.0 +- golang.org/x/tools: v0.5.0 → v0.6.0 +- k8s.io/api: v0.24.10 → v0.24.11 +- k8s.io/apimachinery: v0.24.10 → v0.24.11 +- k8s.io/apiserver: v0.24.10 → v0.24.11 +- k8s.io/client-go: v0.24.10 → v0.24.11 +- k8s.io/cloud-provider: v0.24.10 → v0.24.11 +- k8s.io/component-base: v0.24.10 → v0.24.11 +- k8s.io/component-helpers: v0.24.10 → v0.24.11 +- k8s.io/controller-manager: v0.24.10 → v0.24.11 +- k8s.io/kubelet: v0.24.10 → v0.24.11 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.17.md b/content/en/blog/releases/v1.24.17.md new file mode 100644 index 0000000000..32ffd9dd9f --- /dev/null +++ b/content/en/blog/releases/v1.24.17.md @@ -0,0 +1,24 @@ +--- +title: v1.24.17 +linkTitle: v1.24.17 +date: 2023-03-13 +description: Cloud Provider Azure v1.24.17 +--- +Full Changelog: [v1.24.16..v1.24.17](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.24.16...v1.24.17) + +## Changes by Kind + +### Bug or Regression + +- Fix: do not tag user-assigned public IP ([#3529](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3529), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.18.md b/content/en/blog/releases/v1.24.18.md new file mode 100644 index 0000000000..8a6b1e5f39 --- /dev/null +++ b/content/en/blog/releases/v1.24.18.md @@ -0,0 +1,52 @@ +--- +title: v1.24.18 +linkTitle: v1.24.18 +date: 2023-04-21 +description: Cloud Provider Azure v1.24.18 +--- +Full Changelog: [v1.24.17..v1.24.18](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.24.17...v1.24.18) + +## Changes by Kind + +### Bug or Regression + +- Deprecate numberOfProbes and adopt ProbeThreshold in network api to address a probe issue in nrp ([#3658](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3658), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix nodeAddressesChangeDetected() bug when dual-stack. In a dual-stack cluster, a Node has 2 internal IPs but current logic doesn't distinguish between these 2. As a result, CNM always assumes that NodeAddresses changed. ([#3609](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3609), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- [IPv6] Choose correct primary IP config. Regardless of IPv6 only or dualstack clusters, IPv4 IP config is always primary. So for IPv6 backend address pool, IP config's IP version needs consideration. ([#3774](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3774), [@lzhecheng](https://github.com/lzhecheng)) +- [IPv6] Fix CNM not properly handling IPv6 from imds LB. imds LB returns IPv6 IPs wrapped by brackets so extra trimming is needed. ([#3729](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3729), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Uncategorized + +- Fix: update resources in batches asynchronously + + A regression was introduced by #1687 where the behavior of updating resources in batches changes from sending requests asynchronously to synchonously. This would lead to latencies when updating vmss vms, especially when the cluster size is huge. This unexpected change is reverted in this fix. ([#3766](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3766), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest/adal: [v0.9.22 → v0.9.23](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.22...v0.9.23) +- github.com/go-logr/logr: [v1.2.3 → v1.2.4](https://github.com/go-logr/logr/compare/v1.2.3...v1.2.4) +- github.com/golang-jwt/jwt/v4: [v4.4.3 → v4.5.0](https://github.com/golang-jwt/jwt/v4/compare/v4.4.3...v4.5.0) +- github.com/inconshreveable/mousetrap: [v1.0.1 → v1.1.0](https://github.com/inconshreveable/mousetrap/compare/v1.0.1...v1.1.0) +- github.com/spf13/cobra: [v1.6.1 → v1.7.0](https://github.com/spf13/cobra/compare/v1.6.1...v1.7.0) +- github.com/yuin/goldmark: [v1.3.5 → v1.4.13](https://github.com/yuin/goldmark/compare/v1.3.5...v1.4.13) +- golang.org/x/crypto: v0.7.0 → v0.8.0 +- golang.org/x/net: v0.8.0 → v0.9.0 +- golang.org/x/sys: v0.6.0 → v0.7.0 +- golang.org/x/term: v0.6.0 → v0.7.0 +- golang.org/x/text: v0.8.0 → v0.9.0 +- k8s.io/api: v0.24.11 → v0.24.13 +- k8s.io/apimachinery: v0.24.11 → v0.24.13 +- k8s.io/apiserver: v0.24.11 → v0.24.12 +- k8s.io/client-go: v0.24.11 → v0.24.13 +- k8s.io/cloud-provider: v0.24.11 → v0.24.12 +- k8s.io/component-base: v0.24.11 → v0.24.13 +- k8s.io/component-helpers: v0.24.11 → v0.24.13 +- k8s.io/controller-manager: v0.24.11 → v0.24.12 +- k8s.io/kubelet: v0.24.11 → v0.24.13 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.19.md b/content/en/blog/releases/v1.24.19.md new file mode 100644 index 0000000000..8c0d79ab72 --- /dev/null +++ b/content/en/blog/releases/v1.24.19.md @@ -0,0 +1,37 @@ +--- +title: v1.24.19 +linkTitle: v1.24.19 +date: 2023-05-18 +description: Cloud Provider Azure v1.24.19 +--- +Full Changelog: [v1.24.18..v1.24.19](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.24.18...v1.24.19) + +## Changes by Kind + +### Bug or Regression + +- Fix: the pip without tags should be user-assigned + fix: refresh the pip cache when necessary + fix: do not tag user-assigned pip with `kubernetes-dns-label-service: ` ([#3892](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3892), [@nilo19](https://github.com/nilo19)) +- Fixed: Remove shared nsg rule immediately when no destinations left ([#3800](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3800), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Uncategorized + +- Fix: update resources in batches asynchronously + + A regression was introduced by #1687 where the behavior of updating resources in batches changes from sending requests asynchronously to synchonously. This would lead to latencies when updating vmss vms, especially when the cluster size is huge. This unexpected change is reverted in this fix. ([#3766](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3766), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest: [v0.11.28 → v0.11.29](https://github.com/Azure/go-autorest/autorest/compare/v0.11.28...v0.11.29) +- golang.org/x/crypto: v0.8.0 → v0.9.0 +- golang.org/x/net: v0.9.0 → v0.10.0 +- golang.org/x/sys: v0.7.0 → v0.8.0 +- golang.org/x/term: v0.7.0 → v0.8.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.2.md b/content/en/blog/releases/v1.24.2.md new file mode 100644 index 0000000000..d74681e4fe --- /dev/null +++ b/content/en/blog/releases/v1.24.2.md @@ -0,0 +1,31 @@ +--- +title: v1.24.2 +linkTitle: v1.24.2 +date: 2022-06-19 +description: Cloud Provider Azure v1.24.2 +--- + + +## Changes by Kind + +### Bug or Regression + +- A new annotation is added in order to specify the PublicIP Prefix for creating IP of LB + + service.beta.kubernetes.io/azure-pip-prefix-id: "/subscriptions/8ecadfc9-ffff-4ea4-ffff-0d9f87e4d7c8/resourceGroups/lodrem/providers/Microsoft.Network/publicIPPrefixes/bb" ([#1848](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1848), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix unexpected managed PLS deletion issue when ILB subnet is specified. ([#1835](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1835), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: avoid unnessary NSG updating on service reconciling ([#1850](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1850), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: panic when create private endpoint using azurefile NFS ([#1816](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1816), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Remove redundant restriction on pls autoApproval and visibility. + User can specify a list of subscriptions for visibility (e.g. "sub1 sub2") and a subset of this list for autoApproval (e.g. "sub1"). ([#1867](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1867), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.20.md b/content/en/blog/releases/v1.24.20.md new file mode 100644 index 0000000000..3f7f247dbf --- /dev/null +++ b/content/en/blog/releases/v1.24.20.md @@ -0,0 +1,36 @@ +--- +title: v1.24.20 +linkTitle: v1.24.20 +date: 2023-05-25 +description: Cloud Provider Azure v1.24.20 +--- +Full Changelog: [v1.24.19..v1.24.20](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.24.19...v1.24.20) + +## Changes by Kind + +### Feature + +- Apply the custom probe configs when externalTrafficPolicy is local and PLSProxyProtocol is enabled. ([#3949](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3949), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Fix: make sure the pip dns tag will not be removed when systemTags is set ([#3960](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3960), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- [Log] Print Service name and resource basename in ReconcileService(). Adding such log shows relation between Service name and its related resource name (Frontend IP config, etc.). It helps debugging. ([#3963](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3963), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/stretchr/testify: [v1.8.2 → v1.8.3](https://github.com/stretchr/testify/compare/v1.8.2...v1.8.3) +- k8s.io/cloud-provider: v0.24.13 → v0.24.14 +- k8s.io/component-helpers: v0.24.13 → v0.24.14 +- k8s.io/controller-manager: v0.24.13 → v0.24.14 +- k8s.io/kubelet: v0.24.13 → v0.24.14 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.21.md b/content/en/blog/releases/v1.24.21.md new file mode 100644 index 0000000000..b67b96e37b --- /dev/null +++ b/content/en/blog/releases/v1.24.21.md @@ -0,0 +1,24 @@ +--- +title: v1.24.21 +linkTitle: v1.24.21 +date: 2023-06-07 +description: Cloud Provider Azure v1.24.21 +--- +Full Changelog: [v1.24.20..v1.24.21](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.24.20...v1.24.21) + +## Changes by Kind + +### Feature + +- Feat: Support migrate from NIC-based to IP-based backend pool by migration API by setting `"enableMigrateToIpBasedBackendPoolAPI": true`. By using this API, there will be no downtime during the migration. ([#4046](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/4046), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.3.md b/content/en/blog/releases/v1.24.3.md new file mode 100644 index 0000000000..4afbd8daf4 --- /dev/null +++ b/content/en/blog/releases/v1.24.3.md @@ -0,0 +1,49 @@ +--- +title: v1.24.3 +linkTitle: v1.24.3 +date: 2022-07-13 +description: Cloud Provider Azure v1.24.3 +--- + + +## Changes by Kind + +### Feature + +- A new service annotation `service.beta.kubernetes.io/azure-disable-load-balancer-floating-ip` has been added to disable floating IPs in load balancer rule. + + If annotation is omitted or if the annotation is set to be "false", then floating IP will be enabled. + If the annotation is set to be "true", then floating IP will be disabled. ([#1979](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1979), [@nilo19](https://github.com/nilo19)) + +### Bug or Regression + +- Improve the error handling for ARM APIs ([#1953](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1953), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Show correct CCM/CNM version in apiserver ([#1931](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/1931), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Fix: Do not compare privateIPAllocationMethod when checking if frontend config needs update. Just check if frontend ip matches service spec to avoid unnecessary LB frontend recreation. ([#2001](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2001), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: make sure there is no duplicated rules before updating the network security group ([#2007](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2007), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/cpuguy83/go-md2man/v2: [v2.0.1 → v2.0.2](https://github.com/cpuguy83/go-md2man/v2/compare/v2.0.1...v2.0.2) +- github.com/spf13/cobra: [v1.4.0 → v1.5.0](https://github.com/spf13/cobra/compare/v1.4.0...v1.5.0) +- github.com/stretchr/objx: [v0.1.1 → v0.4.0](https://github.com/stretchr/objx/compare/v0.1.1...v0.4.0) +- github.com/stretchr/testify: [v1.7.2 → v1.8.0](https://github.com/stretchr/testify/compare/v1.7.2...v1.8.0) +- k8s.io/api: v0.24.1 → v0.24.2 +- k8s.io/apimachinery: v0.24.1 → v0.24.2 +- k8s.io/apiserver: v0.24.1 → v0.24.2 +- k8s.io/client-go: v0.24.1 → v0.24.2 +- k8s.io/cloud-provider: v0.24.1 → v0.24.2 +- k8s.io/component-base: v0.24.1 → v0.24.2 +- k8s.io/component-helpers: v0.24.1 → v0.24.2 +- k8s.io/controller-manager: v0.24.1 → v0.24.2 +- k8s.io/kubelet: v0.24.1 → v0.24.2 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.4.md b/content/en/blog/releases/v1.24.4.md new file mode 100644 index 0000000000..56862ee781 --- /dev/null +++ b/content/en/blog/releases/v1.24.4.md @@ -0,0 +1,53 @@ +--- +title: v1.24.4 +linkTitle: v1.24.4 +date: 2022-08-02 +description: Cloud Provider Azure v1.24.4 +--- + + +## Changes by Kind + +### Feature + +- Allow external service with floating ip disabled to create PLS. ([#2074](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2074), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Create a single transport to reuse connections, address performance issues and enable tracing. ([#2071](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2071), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix PIP tags possibly not ensured issue in ensurePublicIPExists() ([#2048](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2048), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: decouple the LB from the VMSS before VMSS VMs ([#2045](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2045), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Use correct subnet name in reconcileFrontendIPConfigs() ([#2081](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2081), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Fix: Do not compare privateIPAllocationMethod when checking if frontend config needs update. Just check if frontend ip matches service spec to avoid unnecessary LB frontend recreation. ([#2001](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2001), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Result_code in latency logs is more detailed. ([#2017](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2017), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest: [v0.11.27 → v0.11.28](https://github.com/Azure/go-autorest/autorest/compare/v0.11.27...v0.11.28) +- github.com/go-logr/logr: [v1.2.0 → v1.2.3](https://github.com/go-logr/logr/compare/v1.2.0...v1.2.3) +- github.com/google/go-cmp: [v0.5.5 → v0.5.8](https://github.com/google/go-cmp/compare/v0.5.5...v0.5.8) +- github.com/onsi/ginkgo/v2: [v2.1.3 → v2.1.4](https://github.com/onsi/ginkgo/v2/compare/v2.1.3...v2.1.4) +- github.com/onsi/gomega: [v1.19.0 → v1.20.0](https://github.com/onsi/gomega/compare/v1.19.0...v1.20.0) +- golang.org/x/crypto: 8634188 → 630584e +- golang.org/x/net: 27dd868 → 2871e0c +- golang.org/x/sys: 33da011 → 9388b58 +- google.golang.org/protobuf: v1.27.1 → v1.28.0 +- k8s.io/api: v0.24.2 → v0.24.3 +- k8s.io/apimachinery: v0.24.2 → v0.24.3 +- k8s.io/apiserver: v0.24.2 → v0.24.3 +- k8s.io/client-go: v0.24.2 → v0.24.3 +- k8s.io/cloud-provider: v0.24.2 → v0.24.3 +- k8s.io/component-base: v0.24.2 → v0.24.3 +- k8s.io/component-helpers: v0.24.2 → v0.24.3 +- k8s.io/controller-manager: v0.24.2 → v0.24.3 +- k8s.io/kubelet: v0.24.2 → v0.24.3 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.5.md b/content/en/blog/releases/v1.24.5.md new file mode 100644 index 0000000000..4958cb0d48 --- /dev/null +++ b/content/en/blog/releases/v1.24.5.md @@ -0,0 +1,47 @@ +--- +title: v1.24.5 +linkTitle: v1.24.5 +date: 2022-09-05 +description: Cloud Provider Azure v1.24.5 +--- + + +## Changes by Kind + +### Feature + +- Feat: add support for network resource in a different subscription when using MSI ([#2259](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2259), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Fix nsg reconciliation failure for floating-ip-disabled services in dual-stack clusters. ([#2239](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2239), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: correct condition message for NodeNetworkUnavailable ([#2226](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2226), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Skip "instance not found" error for LB backend address pools ([#2194](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2194), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v65.0.0+incompatible → v66.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v65.0.0...v66.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.20 → v0.9.21](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.20...v0.9.21) +- github.com/google/pprof: [cbba55b → 94a9f03](https://github.com/google/pprof/compare/cbba55b...94a9f03) +- github.com/onsi/ginkgo/v2: [v2.1.4 → v2.1.6](https://github.com/onsi/ginkgo/v2/compare/v2.1.4...v2.1.6) +- github.com/onsi/ginkgo: [v1.16.5 → v1.16.4](https://github.com/onsi/ginkgo/compare/v1.16.5...v1.16.4) +- github.com/onsi/gomega: [v1.20.0 → v1.20.2](https://github.com/onsi/gomega/compare/v1.20.0...v1.20.2) +- golang.org/x/net: 2871e0c → a158d28 +- golang.org/x/sys: 9388b58 → 8c9f86f +- golang.org/x/tools: 897bd77 → v0.1.12 +- k8s.io/api: v0.24.3 → v0.24.4 +- k8s.io/apimachinery: v0.24.3 → v0.24.4 +- k8s.io/apiserver: v0.24.3 → v0.24.4 +- k8s.io/client-go: v0.24.3 → v0.24.4 +- k8s.io/cloud-provider: v0.24.3 → v0.24.4 +- k8s.io/component-base: v0.24.3 → v0.24.4 +- k8s.io/component-helpers: v0.24.3 → v0.24.4 +- k8s.io/controller-manager: v0.24.3 → v0.24.4 +- k8s.io/kubelet: v0.24.3 → v0.24.4 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.6.md b/content/en/blog/releases/v1.24.6.md new file mode 100644 index 0000000000..bd48d4b6ba --- /dev/null +++ b/content/en/blog/releases/v1.24.6.md @@ -0,0 +1,35 @@ +--- +title: v1.24.6 +linkTitle: v1.24.6 +date: 2022-09-18 +description: Cloud Provider Azure v1.24.6 +--- + + +## Changes by Kind + +### Bug or Regression + +- ARM will possibly return StatusCode 200 and ContentLength -1 which is a bug. However, cloudprovider can handle it better by retrying. ([#2316](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2316), [@lzhecheng](https://github.com/lzhecheng)) +- Fix: correct condition message for NodeNetworkUnavailable ([#2226](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2226), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- golang.org/x/net: a158d28 → f3363e0 +- golang.org/x/sys: 8c9f86f → 3c1f352 +- k8s.io/api: v0.24.4 → v0.24.5 +- k8s.io/apimachinery: v0.24.4 → v0.24.5 +- k8s.io/apiserver: v0.24.4 → v0.24.5 +- k8s.io/client-go: v0.24.4 → v0.24.5 +- k8s.io/cloud-provider: v0.24.4 → v0.24.5 +- k8s.io/component-base: v0.24.4 → v0.24.5 +- k8s.io/component-helpers: v0.24.4 → v0.24.5 +- k8s.io/controller-manager: v0.24.4 → v0.24.5 +- k8s.io/kubelet: v0.24.4 → v0.24.5 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.7.md b/content/en/blog/releases/v1.24.7.md new file mode 100644 index 0000000000..fe296ef2f1 --- /dev/null +++ b/content/en/blog/releases/v1.24.7.md @@ -0,0 +1,24 @@ +--- +title: v1.24.7 +linkTitle: v1.24.7 +date: 2022-09-18 +description: Cloud Provider Azure v1.24.7 +--- + + +## Changes by Kind + +### Other (Cleanup or Flake) + +- Chore: update go-restful for CVE-2022-1996 ([#2325](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2325), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/emicklei/go-restful: [v2.9.5+incompatible → v2.16.0+incompatible](https://github.com/emicklei/go-restful/compare/v2.9.5...v2.16.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.8.md b/content/en/blog/releases/v1.24.8.md new file mode 100644 index 0000000000..3953dc6975 --- /dev/null +++ b/content/en/blog/releases/v1.24.8.md @@ -0,0 +1,43 @@ +--- +title: v1.24.8 +linkTitle: v1.24.8 +date: 2022-09-30 +description: Cloud Provider Azure v1.24.8 +--- + + +## Changes by Kind + +### Bug or Regression + +- Avoid race condition between node-sync-loop routine and service reconcile routine. + Avoid UpdateLoadBalancer() using stale service spec to update Load Balancers. ([#2425](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2425), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Check and cleanup both ELB and ILB when a service is being deleted. ([#2437](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2437), [@jwtty](https://github.com/jwtty)) +- Fix: Skip VMSS VM update operations if the VMs are not in good state + fix: Set the retryAfter to 5s when PUT failed due to concurrent operation conflict. ([#2400](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2400), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Only check response body length when request is GET. Avoids unnecessary retry when deleting an LB. ([#2389](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2389), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Chore: get node private IPs from cache but NIC ([#2432](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2432), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Chore: update go-restful for CVE-2022-1996 ([#2325](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2325), [@feiskyer](https://github.com/feiskyer)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.1.6 → v2.2.0](https://github.com/onsi/ginkgo/v2/compare/v2.1.6...v2.2.0) +- k8s.io/api: v0.24.5 → v0.24.6 +- k8s.io/apimachinery: v0.24.5 → v0.24.6 +- k8s.io/apiserver: v0.24.5 → v0.24.6 +- k8s.io/client-go: v0.24.5 → v0.24.6 +- k8s.io/cloud-provider: v0.24.5 → v0.24.6 +- k8s.io/component-base: v0.24.5 → v0.24.6 +- k8s.io/component-helpers: v0.24.5 → v0.24.6 +- k8s.io/controller-manager: v0.24.5 → v0.24.6 +- k8s.io/kubelet: v0.24.5 → v0.24.6 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.24.9.md b/content/en/blog/releases/v1.24.9.md new file mode 100644 index 0000000000..4997a72ba5 --- /dev/null +++ b/content/en/blog/releases/v1.24.9.md @@ -0,0 +1,50 @@ +--- +title: v1.24.9 +linkTitle: v1.24.9 +date: 2022-10-20 +description: Cloud Provider Azure v1.24.9 +--- + + +## Changes by Kind + +### Deprecation + +- Deprecate LoadBalancerIP with Service LB IP annotation ([#2468](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2468), [@lzhecheng](https://github.com/lzhecheng)) + +### Bug or Regression + +- Check and cleanup both ELB and ILB when a service is being deleted. ([#2437](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2437), [@jwtty](https://github.com/jwtty)) +- Check internal lb ip in subnet before keeping it, so users can change their lb subnet. ([#2530](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2530), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: decouple vmss with 0 instance from lb when deleting the service ([#2527](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2527), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v66.0.0+incompatible → v67.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v66.0.0...v67.0.0) +- github.com/fsnotify/fsnotify: [v1.5.4 → v1.6.0](https://github.com/fsnotify/fsnotify/compare/v1.5.4...v1.6.0) +- github.com/inconshreveable/mousetrap: [v1.0.0 → v1.0.1](https://github.com/inconshreveable/mousetrap/compare/v1.0.0...v1.0.1) +- github.com/onsi/ginkgo/v2: [v2.2.0 → v2.3.0](https://github.com/onsi/ginkgo/v2/compare/v2.2.0...v2.3.0) +- github.com/onsi/gomega: [v1.20.2 → v1.22.1](https://github.com/onsi/gomega/compare/v1.20.2...v1.22.1) +- github.com/spf13/cobra: [v1.5.0 → v1.6.0](https://github.com/spf13/cobra/compare/v1.5.0...v1.6.0) +- github.com/yuin/goldmark: [v1.4.1 → v1.3.5](https://github.com/yuin/goldmark/compare/v1.4.1...v1.3.5) +- go.uber.org/goleak: v1.1.10 → v1.2.0 +- golang.org/x/mod: 9b9b3d8 → 86c51ed +- golang.org/x/sys: 3c1f352 → 2771309 +- golang.org/x/text: v0.3.7 → v0.4.0 +- k8s.io/api: v0.24.6 → v0.24.7 +- k8s.io/apimachinery: v0.24.6 → v0.24.7 +- k8s.io/apiserver: v0.24.6 → v0.24.7 +- k8s.io/client-go: v0.24.6 → v0.24.7 +- k8s.io/cloud-provider: v0.24.6 → v0.24.7 +- k8s.io/component-base: v0.24.6 → v0.24.7 +- k8s.io/component-helpers: v0.24.6 → v0.24.7 +- k8s.io/controller-manager: v0.24.6 → v0.24.7 +- k8s.io/kubelet: v0.24.6 → v0.24.7 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.30 → v0.0.33 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.0.md b/content/en/blog/releases/v1.25.0.md new file mode 100644 index 0000000000..9258fa7b84 --- /dev/null +++ b/content/en/blog/releases/v1.25.0.md @@ -0,0 +1,130 @@ +--- +title: v1.25.0 +linkTitle: v1.25.0 +date: 2022-09-05 +description: Cloud Provider Azure v1.25.0 +--- + + + + +## Dependencies + +### Added +- github.com/emicklei/go-restful/v3: [v3.8.0](https://github.com/emicklei/go-restful/v3/tree/v3.8.0) + +### Changed +- cloud.google.com/go: v0.81.0 → v0.97.0 +- github.com/cncf/udpa/go: [5459f2c → 04548b0](https://github.com/cncf/udpa/go/compare/5459f2c...04548b0) +- github.com/cncf/xds/go: [fbca930 → cb28da3](https://github.com/cncf/xds/go/compare/fbca930...cb28da3) +- github.com/envoyproxy/go-control-plane: [63b5d3c → 49ff273](https://github.com/envoyproxy/go-control-plane/compare/63b5d3c...49ff273) +- github.com/go-logr/zapr: [v1.2.0 → v1.2.3](https://github.com/go-logr/zapr/compare/v1.2.0...v1.2.3) +- github.com/google/martian/v3: [v3.1.0 → v3.0.0](https://github.com/google/martian/v3/compare/v3.1.0...v3.0.0) +- github.com/ianlancetaylor/demangle: [28f6c0f → 5e5cf60](https://github.com/ianlancetaylor/demangle/compare/28f6c0f...5e5cf60) +- github.com/imdario/mergo: [v0.3.5 → v0.3.6](https://github.com/imdario/mergo/compare/v0.3.5...v0.3.6) +- github.com/pquerna/cachecontrol: [0dec1b3 → v0.1.0](https://github.com/pquerna/cachecontrol/compare/0dec1b3...v0.1.0) +- github.com/yuin/goldmark: [v1.4.1 → v1.3.5](https://github.com/yuin/goldmark/compare/v1.4.1...v1.3.5) +- go.etcd.io/etcd/api/v3: v3.5.1 → v3.5.4 +- go.etcd.io/etcd/client/pkg/v3: v3.5.1 → v3.5.4 +- go.etcd.io/etcd/client/v2: v2.305.0 → v2.305.4 +- go.etcd.io/etcd/client/v3: v3.5.1 → v3.5.4 +- go.etcd.io/etcd/pkg/v3: v3.5.0 → v3.5.4 +- go.etcd.io/etcd/raft/v3: v3.5.0 → v3.5.4 +- go.etcd.io/etcd/server/v3: v3.5.0 → v3.5.4 +- go.opencensus.io: v0.23.0 → v0.22.4 +- golang.org/x/sync: 036812b → 886fb93 +- google.golang.org/api: v0.43.0 → v0.30.0 +- google.golang.org/genproto: 42d7afd → c8bf987 +- google.golang.org/grpc: v1.40.0 → v1.47.0 +- k8s.io/api: v0.24.4 → v0.25.0 +- k8s.io/apimachinery: v0.24.4 → v0.25.0 +- k8s.io/apiserver: v0.24.4 → v0.25.0 +- k8s.io/client-go: v0.24.4 → v0.25.0 +- k8s.io/cloud-provider: v0.24.4 → v0.25.0 +- k8s.io/component-base: v0.24.4 → v0.25.0 +- k8s.io/component-helpers: v0.24.4 → v0.25.0 +- k8s.io/controller-manager: v0.24.4 → v0.25.0 +- k8s.io/klog/v2: v2.60.1 → v2.80.0 +- k8s.io/kube-openapi: 3ee0da9 → 67bda5d +- k8s.io/kubelet: v0.24.4 → v0.25.0 +- k8s.io/utils: 3a6ce19 → ee6ede2 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.30 → v0.0.32 +- sigs.k8s.io/json: 9f7c6b3 → f223a00 +- sigs.k8s.io/structured-merge-diff/v4: v4.2.1 → v4.2.3 + +### Removed +- cloud.google.com/go/firestore: v1.1.0 +- github.com/OneOfOne/xxhash: [v1.2.2](https://github.com/OneOfOne/xxhash/tree/v1.2.2) +- github.com/armon/circbuf: [bbbad09](https://github.com/armon/circbuf/tree/bbbad09) +- github.com/armon/go-metrics: [f0300d1](https://github.com/armon/go-metrics/tree/f0300d1) +- github.com/armon/go-radix: [7fddfc3](https://github.com/armon/go-radix/tree/7fddfc3) +- github.com/bgentry/speakeasy: [v0.1.0](https://github.com/bgentry/speakeasy/tree/v0.1.0) +- github.com/bketelsen/crypt: [5cbc8cc](https://github.com/bketelsen/crypt/tree/5cbc8cc) +- github.com/certifi/gocertifi: [2c3bb06](https://github.com/certifi/gocertifi/tree/2c3bb06) +- github.com/cespare/xxhash: [v1.1.0](https://github.com/cespare/xxhash/tree/v1.1.0) +- github.com/cockroachdb/datadriven: [bf6692d](https://github.com/cockroachdb/datadriven/tree/bf6692d) +- github.com/cockroachdb/errors: [v1.2.4](https://github.com/cockroachdb/errors/tree/v1.2.4) +- github.com/cockroachdb/logtags: [eb05cc2](https://github.com/cockroachdb/logtags/tree/eb05cc2) +- github.com/coreos/bbolt: [v1.3.2](https://github.com/coreos/bbolt/tree/v1.3.2) +- github.com/coreos/etcd: [v3.3.13+incompatible](https://github.com/coreos/etcd/tree/v3.3.13) +- github.com/coreos/go-systemd: [95778df](https://github.com/coreos/go-systemd/tree/95778df) +- github.com/coreos/pkg: [399ea9e](https://github.com/coreos/pkg/tree/399ea9e) +- github.com/dgrijalva/jwt-go: [v3.2.0+incompatible](https://github.com/dgrijalva/jwt-go/tree/v3.2.0) +- github.com/dgryski/go-sip13: [e10d5fe](https://github.com/dgryski/go-sip13/tree/e10d5fe) +- github.com/emicklei/go-restful: [v2.9.5+incompatible](https://github.com/emicklei/go-restful/tree/v2.9.5) +- github.com/fatih/color: [v1.7.0](https://github.com/fatih/color/tree/v1.7.0) +- github.com/getsentry/raven-go: [v0.2.0](https://github.com/getsentry/raven-go/tree/v0.2.0) +- github.com/gopherjs/gopherjs: [0766667](https://github.com/gopherjs/gopherjs/tree/0766667) +- github.com/gorilla/mux: [v1.8.0](https://github.com/gorilla/mux/tree/v1.8.0) +- github.com/hashicorp/consul/api: [v1.1.0](https://github.com/hashicorp/consul/api/tree/v1.1.0) +- github.com/hashicorp/consul/sdk: [v0.1.1](https://github.com/hashicorp/consul/sdk/tree/v0.1.1) +- github.com/hashicorp/errwrap: [v1.0.0](https://github.com/hashicorp/errwrap/tree/v1.0.0) +- github.com/hashicorp/go-cleanhttp: [v0.5.1](https://github.com/hashicorp/go-cleanhttp/tree/v0.5.1) +- github.com/hashicorp/go-immutable-radix: [v1.0.0](https://github.com/hashicorp/go-immutable-radix/tree/v1.0.0) +- github.com/hashicorp/go-msgpack: [v0.5.3](https://github.com/hashicorp/go-msgpack/tree/v0.5.3) +- github.com/hashicorp/go-multierror: [v1.0.0](https://github.com/hashicorp/go-multierror/tree/v1.0.0) +- github.com/hashicorp/go-rootcerts: [v1.0.0](https://github.com/hashicorp/go-rootcerts/tree/v1.0.0) +- github.com/hashicorp/go-sockaddr: [v1.0.0](https://github.com/hashicorp/go-sockaddr/tree/v1.0.0) +- github.com/hashicorp/go-syslog: [v1.0.0](https://github.com/hashicorp/go-syslog/tree/v1.0.0) +- github.com/hashicorp/go-uuid: [v1.0.1](https://github.com/hashicorp/go-uuid/tree/v1.0.1) +- github.com/hashicorp/go.net: [v0.0.1](https://github.com/hashicorp/go.net/tree/v0.0.1) +- github.com/hashicorp/hcl: [v1.0.0](https://github.com/hashicorp/hcl/tree/v1.0.0) +- github.com/hashicorp/logutils: [v1.0.0](https://github.com/hashicorp/logutils/tree/v1.0.0) +- github.com/hashicorp/mdns: [v1.0.0](https://github.com/hashicorp/mdns/tree/v1.0.0) +- github.com/hashicorp/memberlist: [v0.1.3](https://github.com/hashicorp/memberlist/tree/v0.1.3) +- github.com/hashicorp/serf: [v0.8.2](https://github.com/hashicorp/serf/tree/v0.8.2) +- github.com/hpcloud/tail: [v1.0.0](https://github.com/hpcloud/tail/tree/v1.0.0) +- github.com/jtolds/gls: [v4.20.0+incompatible](https://github.com/jtolds/gls/tree/v4.20.0) +- github.com/kr/fs: [v0.1.0](https://github.com/kr/fs/tree/v0.1.0) +- github.com/magiconair/properties: [v1.8.1](https://github.com/magiconair/properties/tree/v1.8.1) +- github.com/mattn/go-colorable: [v0.0.9](https://github.com/mattn/go-colorable/tree/v0.0.9) +- github.com/mattn/go-isatty: [v0.0.3](https://github.com/mattn/go-isatty/tree/v0.0.3) +- github.com/miekg/dns: [v1.0.14](https://github.com/miekg/dns/tree/v1.0.14) +- github.com/mitchellh/cli: [v1.0.0](https://github.com/mitchellh/cli/tree/v1.0.0) +- github.com/mitchellh/go-homedir: [v1.1.0](https://github.com/mitchellh/go-homedir/tree/v1.1.0) +- github.com/mitchellh/go-testing-interface: [v1.0.0](https://github.com/mitchellh/go-testing-interface/tree/v1.0.0) +- github.com/mitchellh/gox: [v0.4.0](https://github.com/mitchellh/gox/tree/v0.4.0) +- github.com/mitchellh/iochan: [v1.0.0](https://github.com/mitchellh/iochan/tree/v1.0.0) +- github.com/nxadm/tail: [v1.4.8](https://github.com/nxadm/tail/tree/v1.4.8) +- github.com/oklog/ulid: [v1.3.1](https://github.com/oklog/ulid/tree/v1.3.1) +- github.com/onsi/ginkgo: [v1.16.4](https://github.com/onsi/ginkgo/tree/v1.16.4) +- github.com/opentracing/opentracing-go: [v1.1.0](https://github.com/opentracing/opentracing-go/tree/v1.1.0) +- github.com/pascaldekloe/goe: [57f6aae](https://github.com/pascaldekloe/goe/tree/57f6aae) +- github.com/pelletier/go-toml: [v1.2.0](https://github.com/pelletier/go-toml/tree/v1.2.0) +- github.com/pkg/sftp: [v1.10.1](https://github.com/pkg/sftp/tree/v1.10.1) +- github.com/posener/complete: [v1.1.1](https://github.com/posener/complete/tree/v1.1.1) +- github.com/prometheus/tsdb: [v0.7.1](https://github.com/prometheus/tsdb/tree/v0.7.1) +- github.com/ryanuber/columnize: [9b3edd6](https://github.com/ryanuber/columnize/tree/9b3edd6) +- github.com/sean-/seed: [e2103e2](https://github.com/sean-/seed/tree/e2103e2) +- github.com/shurcooL/sanitized_anchor_name: [v1.0.0](https://github.com/shurcooL/sanitized_anchor_name/tree/v1.0.0) +- github.com/smartystreets/assertions: [b2de0cb](https://github.com/smartystreets/assertions/tree/b2de0cb) +- github.com/smartystreets/goconvey: [v1.6.4](https://github.com/smartystreets/goconvey/tree/v1.6.4) +- github.com/spaolacci/murmur3: [f09979e](https://github.com/spaolacci/murmur3/tree/f09979e) +- github.com/spf13/cast: [v1.3.0](https://github.com/spf13/cast/tree/v1.3.0) +- github.com/spf13/jwalterweatherman: [v1.0.0](https://github.com/spf13/jwalterweatherman/tree/v1.0.0) +- github.com/spf13/viper: [v1.7.0](https://github.com/spf13/viper/tree/v1.7.0) +- github.com/subosito/gotenv: [v1.2.0](https://github.com/subosito/gotenv/tree/v1.2.0) +- gopkg.in/fsnotify.v1: v1.4.7 +- gopkg.in/ini.v1: v1.51.0 +- gopkg.in/resty.v1: v1.12.0 +- gopkg.in/tomb.v1: dd63297 diff --git a/content/en/blog/releases/v1.25.1.md b/content/en/blog/releases/v1.25.1.md new file mode 100644 index 0000000000..af5cf5d591 --- /dev/null +++ b/content/en/blog/releases/v1.25.1.md @@ -0,0 +1,25 @@ +--- +title: v1.25.1 +linkTitle: v1.25.1 +date: 2022-09-18 +description: Cloud Provider Azure v1.25.1 +--- + + +## Changes by Kind + +### Bug or Regression + +- ARM will possibly return StatusCode 200 and ContentLength -1 which is a bug. However, cloudprovider can handle it better by retrying. ([#2315](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2315), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- golang.org/x/net: a158d28 → f3363e0 +- golang.org/x/sys: 8c9f86f → 3c1f352 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.10.md b/content/en/blog/releases/v1.25.10.md new file mode 100644 index 0000000000..edf0abaa59 --- /dev/null +++ b/content/en/blog/releases/v1.25.10.md @@ -0,0 +1,44 @@ +--- +title: v1.25.10 +linkTitle: v1.25.10 +date: 2023-03-10 +description: Cloud Provider Azure v1.25.10 +--- +Full Changelog: [v1.25.9..v1.25.10](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.25.9...v1.25.10) + +## Changes by Kind + +### Bug or Regression + +- Fix incorrect security rule name with IPv6 address prefix ([#3352](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3352), [@lzhecheng](https://github.com/lzhecheng)) +- Fix: remove shared security rule when no svc with shared-nsg annotation exists ([#3395](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3395), [@MartinForReal](https://github.com/MartinForReal)) +- Fix: remove single vm from the cache instead of removing all vms of a vmss when deleting a node from the cache ([#3509](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3509), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.8.0 → v2.8.1](https://github.com/onsi/ginkgo/v2/compare/v2.8.0...v2.8.1) +- github.com/onsi/gomega: [v1.26.0 → v1.27.1](https://github.com/onsi/gomega/compare/v1.26.0...v1.27.1) +- github.com/stretchr/testify: [v1.8.1 → v1.8.2](https://github.com/stretchr/testify/compare/v1.8.1...v1.8.2) +- golang.org/x/crypto: v0.5.0 → v0.7.0 +- golang.org/x/mod: 86c51ed → v0.8.0 +- golang.org/x/net: v0.5.0 → v0.8.0 +- golang.org/x/sys: v0.5.0 → v0.6.0 +- golang.org/x/term: v0.4.0 → v0.6.0 +- golang.org/x/text: v0.6.0 → v0.8.0 +- golang.org/x/tools: v0.5.0 → v0.6.0 +- k8s.io/api: v0.25.6 → v0.25.7 +- k8s.io/apimachinery: v0.25.6 → v0.25.7 +- k8s.io/apiserver: v0.25.6 → v0.25.7 +- k8s.io/client-go: v0.25.6 → v0.25.7 +- k8s.io/cloud-provider: v0.25.6 → v0.25.7 +- k8s.io/component-base: v0.25.6 → v0.25.7 +- k8s.io/component-helpers: v0.25.6 → v0.25.7 +- k8s.io/controller-manager: v0.25.6 → v0.25.7 +- k8s.io/kubelet: v0.25.6 → v0.25.7 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.11.md b/content/en/blog/releases/v1.25.11.md new file mode 100644 index 0000000000..7f97c7065a --- /dev/null +++ b/content/en/blog/releases/v1.25.11.md @@ -0,0 +1,24 @@ +--- +title: v1.25.11 +linkTitle: v1.25.11 +date: 2023-03-13 +description: Cloud Provider Azure v1.25.11 +--- +Full Changelog: [v1.25.10..v1.25.11](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.25.10...v1.25.11) + +## Changes by Kind + +### Bug or Regression + +- Fix: do not tag user-assigned public IP ([#3530](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3530), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.12.md b/content/en/blog/releases/v1.25.12.md new file mode 100644 index 0000000000..c6d16025a8 --- /dev/null +++ b/content/en/blog/releases/v1.25.12.md @@ -0,0 +1,54 @@ +--- +title: v1.25.12 +linkTitle: v1.25.12 +date: 2023-04-21 +description: Cloud Provider Azure v1.25.12 +--- +Full Changelog: [v1.25.11..v1.25.12](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.25.11...v1.25.12) + +## Changes by Kind + +### Bug or Regression + +- Deprecate numberOfProbes and adopt ProbeThreshold in network api to address a probe issue in nrp ([#3657](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3657), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix nodeAddressesChangeDetected() bug when dual-stack. In a dual-stack cluster, a Node has 2 internal IPs but current logic doesn't distinguish between these 2. As a result, CNM always assumes that NodeAddresses changed. ([#3608](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3608), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: update resources in batches asynchronously + + A regression was introduced by #1687 where the behavior of updating resources in batches changes from sending requests asynchronously to synchonously. This would lead to latencies when updating vmss vms, especially when the cluster size is huge. This unexpected change is reverted in this fix. ([#3767](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3767), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- [IPv6] Choose correct primary IP config Regardless of IPv6 only or dualstack clusters, IPv4 IP config is always primary. So for IPv6 backend address pool, IP config's IP version needs consideration. ([#3772](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3772), [@lzhecheng](https://github.com/lzhecheng)) +- [IPv6] Fix CNM not properly handling IPv6 from imds LB. imds LB returns IPv6 IPs wrapped by brackets so extra trimming is needed. ([#3728](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3728), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Removing container images for Windows Server, Version 2004 and 20H2 ([#3594](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3594), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest/adal: [v0.9.22 → v0.9.23](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.22...v0.9.23) +- github.com/go-logr/logr: [v1.2.3 → v1.2.4](https://github.com/go-logr/logr/compare/v1.2.3...v1.2.4) +- github.com/golang-jwt/jwt/v4: [v4.4.3 → v4.5.0](https://github.com/golang-jwt/jwt/v4/compare/v4.4.3...v4.5.0) +- github.com/inconshreveable/mousetrap: [v1.0.1 → v1.1.0](https://github.com/inconshreveable/mousetrap/compare/v1.0.1...v1.1.0) +- github.com/spf13/cobra: [v1.6.1 → v1.7.0](https://github.com/spf13/cobra/compare/v1.6.1...v1.7.0) +- github.com/yuin/goldmark: [v1.3.5 → v1.4.13](https://github.com/yuin/goldmark/compare/v1.3.5...v1.4.13) +- golang.org/x/crypto: v0.7.0 → v0.8.0 +- golang.org/x/net: v0.8.0 → v0.9.0 +- golang.org/x/sys: v0.6.0 → v0.7.0 +- golang.org/x/term: v0.6.0 → v0.7.0 +- golang.org/x/text: v0.8.0 → v0.9.0 +- k8s.io/api: v0.25.7 → v0.25.9 +- k8s.io/apimachinery: v0.25.7 → v0.25.9 +- k8s.io/apiserver: v0.25.7 → v0.25.9 +- k8s.io/client-go: v0.25.7 → v0.25.9 +- k8s.io/cloud-provider: v0.25.7 → v0.25.9 +- k8s.io/component-base: v0.25.7 → v0.25.9 +- k8s.io/component-helpers: v0.25.7 → v0.25.9 +- k8s.io/controller-manager: v0.25.7 → v0.25.9 +- k8s.io/kubelet: v0.25.7 → v0.25.9 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.35 → v0.0.36 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.13.md b/content/en/blog/releases/v1.25.13.md new file mode 100644 index 0000000000..cb6913038b --- /dev/null +++ b/content/en/blog/releases/v1.25.13.md @@ -0,0 +1,31 @@ +--- +title: v1.25.13 +linkTitle: v1.25.13 +date: 2023-05-18 +description: Cloud Provider Azure v1.25.13 +--- +Full Changelog: [v1.25.12..v1.25.13](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.25.12...v1.25.13) + +## Changes by Kind + +### Bug or Regression + +- Fix: the pip without tags should be user-assigned + fix: refresh the pip cache when necessary + fix: do not tag user-assigned pip with `kubernetes-dns-label-service: ` ([#3891](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3891), [@nilo19](https://github.com/nilo19)) +- Fixed: Remove shared nsg rule immediately when no destinations left ([#3799](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3799), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest: [v0.11.28 → v0.11.29](https://github.com/Azure/go-autorest/autorest/compare/v0.11.28...v0.11.29) +- golang.org/x/crypto: v0.8.0 → v0.9.0 +- golang.org/x/net: v0.9.0 → v0.10.0 +- golang.org/x/sys: v0.7.0 → v0.8.0 +- golang.org/x/term: v0.7.0 → v0.8.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.14.md b/content/en/blog/releases/v1.25.14.md new file mode 100644 index 0000000000..c00c5494ad --- /dev/null +++ b/content/en/blog/releases/v1.25.14.md @@ -0,0 +1,39 @@ +--- +title: v1.25.14 +linkTitle: v1.25.14 +date: 2023-05-25 +description: Cloud Provider Azure v1.25.14 +--- +Full Changelog: [v1.25.13..v1.25.14](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.25.13...v1.25.14) + +## Changes by Kind + +### Feature + +- Apply the custom probe configs when externalTrafficPolicy is local and PLSProxyProtocol is enabled. ([#3946](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3946), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Fix: make sure the pip dns tag will not be removed when systemTags is set ([#3959](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3959), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- [Log] Print Service name and resource basename in ReconcileService(). Adding such log shows relation between Service name and its related resource name (Frontend IP config, etc.). It helps debugging. ([#3966](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3966), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/stretchr/testify: [v1.8.2 → v1.8.3](https://github.com/stretchr/testify/compare/v1.8.2...v1.8.3) +- golang.org/x/sync: 886fb93 → v0.1.0 +- k8s.io/apiserver: v0.25.9 → v0.25.10 +- k8s.io/cloud-provider: v0.25.9 → v0.25.10 +- k8s.io/component-helpers: v0.25.9 → v0.25.10 +- k8s.io/controller-manager: v0.25.9 → v0.25.10 +- k8s.io/kubelet: v0.25.9 → v0.25.10 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.36 → v0.0.37 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.15.md b/content/en/blog/releases/v1.25.15.md new file mode 100644 index 0000000000..71a324c6fb --- /dev/null +++ b/content/en/blog/releases/v1.25.15.md @@ -0,0 +1,24 @@ +--- +title: v1.25.15 +linkTitle: v1.25.15 +date: 2023-06-07 +description: Cloud Provider Azure v1.25.15 +--- +Full Changelog: [v1.25.14..v1.25.15](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.25.14...v1.25.15) + +## Changes by Kind + +### Feature + +- Feat: Support migrate from NIC-based to IP-based backend pool by migration API by setting `"enableMigrateToIpBasedBackendPoolAPI": true`. By using this API, there will be no downtime during the migration. ([#4045](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/4045), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.2.md b/content/en/blog/releases/v1.25.2.md new file mode 100644 index 0000000000..b1de3905fc --- /dev/null +++ b/content/en/blog/releases/v1.25.2.md @@ -0,0 +1,43 @@ +--- +title: v1.25.2 +linkTitle: v1.25.2 +date: 2022-09-30 +description: Cloud Provider Azure v1.25.2 +--- + + +## Changes by Kind + +### Bug or Regression + +- ARM will possibly return StatusCode 200 and ContentLength -1 which is a bug. However, cloudprovider can handle it better by retrying. ([#2315](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2315), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Avoid race condition between node-sync-loop routine and service reconcile routine. + Avoid UpdateLoadBalancer() using stale service spec to update Load Balancers. ([#2426](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2426), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Check and cleanup both ELB and ILB when a service is being deleted. ([#2438](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2438), [@jwtty](https://github.com/jwtty)) +- Fix: Skip VMSS VM update operations if the VMs are not in good state + fix: Set the retryAfter to 5s when PUT failed due to concurrent operation conflict. ([#2401](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2401), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Only check response body length when request is GET. Avoids unnecessary retry when deleting an LB. ([#2390](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2390), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Chore: get node private IPs from cache but NIC ([#2433](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2433), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.1.6 → v2.2.0](https://github.com/onsi/ginkgo/v2/compare/v2.1.6...v2.2.0) +- k8s.io/api: v0.25.0 → v0.25.2 +- k8s.io/apimachinery: v0.25.0 → v0.25.2 +- k8s.io/apiserver: v0.25.0 → v0.25.1-rc.0 +- k8s.io/client-go: v0.25.0 → v0.25.2 +- k8s.io/cloud-provider: v0.25.0 → v0.25.1-rc.0 +- k8s.io/component-base: v0.25.0 → v0.25.1-rc.0 +- k8s.io/component-helpers: v0.25.0 → v0.25.1-rc.0 +- k8s.io/controller-manager: v0.25.0 → v0.25.1-rc.0 +- k8s.io/kubelet: v0.25.0 → v0.25.1-rc.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.3.md b/content/en/blog/releases/v1.25.3.md new file mode 100644 index 0000000000..f692154686 --- /dev/null +++ b/content/en/blog/releases/v1.25.3.md @@ -0,0 +1,40 @@ +--- +title: v1.25.3 +linkTitle: v1.25.3 +date: 2022-10-20 +description: Cloud Provider Azure v1.25.3 +--- + + +## Changes by Kind + +### Deprecation + +- Deprecate LoadBalancerIP with Service LB IP annotation ([#2467](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2467), [@lzhecheng](https://github.com/lzhecheng)) + +### Bug or Regression + +- Check internal lb ip in subnet before keeping it, so users can change their lb subnet. ([#2529](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2529), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: decouple vmss with 0 instance from lb when deleting the service ([#2528](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2528), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v66.0.0+incompatible → v67.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v66.0.0...v67.0.0) +- github.com/fsnotify/fsnotify: [v1.5.4 → v1.6.0](https://github.com/fsnotify/fsnotify/compare/v1.5.4...v1.6.0) +- github.com/inconshreveable/mousetrap: [v1.0.0 → v1.0.1](https://github.com/inconshreveable/mousetrap/compare/v1.0.0...v1.0.1) +- github.com/onsi/ginkgo/v2: [v2.2.0 → v2.3.1](https://github.com/onsi/ginkgo/v2/compare/v2.2.0...v2.3.1) +- github.com/onsi/gomega: [v1.20.2 → v1.22.1](https://github.com/onsi/gomega/compare/v1.20.2...v1.22.1) +- github.com/spf13/cobra: [v1.5.0 → v1.6.0](https://github.com/spf13/cobra/compare/v1.5.0...v1.6.0) +- golang.org/x/mod: 9b9b3d8 → 86c51ed +- golang.org/x/sys: 3c1f352 → 2771309 +- golang.org/x/text: v0.3.7 → v0.4.0 +- k8s.io/api: v0.25.2 → v0.25.3 +- k8s.io/apimachinery: v0.25.2 → v0.25.3 +- k8s.io/client-go: v0.25.2 → v0.25.3 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.4.md b/content/en/blog/releases/v1.25.4.md new file mode 100644 index 0000000000..ff952d4a43 --- /dev/null +++ b/content/en/blog/releases/v1.25.4.md @@ -0,0 +1,33 @@ +--- +title: v1.25.4 +linkTitle: v1.25.4 +date: 2022-10-31 +description: Cloud Provider Azure v1.25.4 +--- + + +## Changes by Kind + +### Other (Cleanup or Flake) + +- Bump azure compute version to 2022-03-01 ([#2632](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2632), [@MartinForReal](https://github.com/MartinForReal)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/google/go-cmp: [v0.5.8 → v0.5.9](https://github.com/google/go-cmp/compare/v0.5.8...v0.5.9) +- github.com/onsi/ginkgo/v2: [v2.3.1 → v2.4.0](https://github.com/onsi/ginkgo/v2/compare/v2.3.1...v2.4.0) +- github.com/onsi/gomega: [v1.22.1 → v1.23.0](https://github.com/onsi/gomega/compare/v1.22.1...v1.23.0) +- github.com/spf13/cobra: [v1.6.0 → v1.6.1](https://github.com/spf13/cobra/compare/v1.6.0...v1.6.1) +- github.com/stretchr/objx: [v0.4.0 → v0.5.0](https://github.com/stretchr/objx/compare/v0.4.0...v0.5.0) +- github.com/stretchr/testify: [v1.8.0 → v1.8.1](https://github.com/stretchr/testify/compare/v1.8.0...v1.8.1) +- golang.org/x/net: f3363e0 → v0.1.0 +- golang.org/x/sys: 2771309 → v0.1.0 +- golang.org/x/term: 03fcf44 → v0.1.0 +- golang.org/x/tools: v0.1.12 → v0.2.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.5.md b/content/en/blog/releases/v1.25.5.md new file mode 100644 index 0000000000..8ebdc3afba --- /dev/null +++ b/content/en/blog/releases/v1.25.5.md @@ -0,0 +1,42 @@ +--- +title: v1.25.5 +linkTitle: v1.25.5 +date: 2022-12-05 +description: Cloud Provider Azure v1.25.5 +--- + + +## Changes by Kind + +### Bug or Regression + +- Considering thread safety, results of cache Get() should be deepcopied before used. ([#2692](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2692), [@lzhecheng](https://github.com/lzhecheng)) +- Fix an issue when DNS label of public ip is not updated when service.beta.kubernetes.io/azure-dns-label-name is changed. ([#2700](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2700), [@MartinForReal](https://github.com/MartinForReal)) +- Fix to reduce PublicIPAddress list arm calls ([#2808](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2808), [@jwtty](https://github.com/jwtty)) +- Fix: decouple vmss from the lb if the backend pool is empty when using ip-based LB + chore: do not set etag to nil when updating lb backend pool ([#2833](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2833), [@nilo19](https://github.com/nilo19)) +- Fix: remove lb from vmss when the backend pool is empty ([#2793](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2793), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: remove orphaned nic from lb backend pool if the corresponding VM is not found ([#2846](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2846), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.0.0+incompatible → v67.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.0.0...v67.1.0) +- github.com/onsi/ginkgo/v2: [v2.4.0 → v2.5.1](https://github.com/onsi/ginkgo/v2/compare/v2.4.0...v2.5.1) +- github.com/onsi/gomega: [v1.23.0 → v1.24.1](https://github.com/onsi/gomega/compare/v1.23.0...v1.24.1) +- golang.org/x/net: v0.1.0 → v0.2.0 +- golang.org/x/sys: v0.1.0 → v0.3.0 +- golang.org/x/term: v0.1.0 → v0.2.0 +- golang.org/x/text: v0.4.0 → v0.5.0 +- k8s.io/api: v0.25.3 → v0.25.4 +- k8s.io/apimachinery: v0.25.3 → v0.25.4 +- k8s.io/client-go: v0.25.3 → v0.25.4 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.6.md b/content/en/blog/releases/v1.25.6.md new file mode 100644 index 0000000000..6962d5cfc4 --- /dev/null +++ b/content/en/blog/releases/v1.25.6.md @@ -0,0 +1,49 @@ +--- +title: v1.25.6 +linkTitle: v1.25.6 +date: 2023-01-03 +description: Cloud Provider Azure v1.25.6 +--- + + +## Changes by Kind + +### Feature + +- Added: support for new annotations **service.beta.kubernetes.io/port__health-probe_protocol** and **service.beta.kubernetes.io/port__health-probe_port** to allow explicitly setting the health probe protocol individually for each service port. Useful for services like Istio which have health check separate from the main service port. ([#2823](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2823), [@MartinForReal](https://github.com/MartinForReal)) + +### Bug or Regression + +- Fix k8s-azure-dns-label-service tag not deleted with Service. Bug: When a Service with DNS label is deleted, k8s-azure-dns-label-service tag won't be deleted and it leads to ensurePublicIPExists error. ([#2910](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2910), [@lzhecheng](https://github.com/lzhecheng)) +- Fix: get vmss name and resource group from vm ID if the provider ID of the node is empty ([#2989](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2989), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Fix: CVE-2022-41717 ([#2922](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2922), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.1.0+incompatible → v67.2.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.1.0...v67.2.0) +- github.com/onsi/ginkgo/v2: [v2.5.1 → v2.6.1](https://github.com/onsi/ginkgo/v2/compare/v2.5.1...v2.6.1) +- github.com/onsi/gomega: [v1.24.1 → v1.24.2](https://github.com/onsi/gomega/compare/v1.24.1...v1.24.2) +- go.uber.org/goleak: v1.1.10 → v1.2.0 +- golang.org/x/net: v0.2.0 → v0.4.0 +- golang.org/x/term: v0.2.0 → v0.3.0 +- golang.org/x/tools: v0.2.0 → v0.4.0 +- k8s.io/api: v0.25.4 → v0.25.5 +- k8s.io/apimachinery: v0.25.4 → v0.25.5 +- k8s.io/apiserver: v0.25.1-rc.0 → v0.25.5 +- k8s.io/client-go: v0.25.4 → v0.25.5 +- k8s.io/cloud-provider: v0.25.1-rc.0 → v0.25.5 +- k8s.io/component-base: v0.25.1-rc.0 → v0.25.5 +- k8s.io/component-helpers: v0.25.1-rc.0 → v0.25.5 +- k8s.io/controller-manager: v0.25.1-rc.0 → v0.25.5 +- k8s.io/kubelet: v0.25.1-rc.0 → v0.25.5 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.32 → v0.0.33 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.7.md b/content/en/blog/releases/v1.25.7.md new file mode 100644 index 0000000000..a150138b4c --- /dev/null +++ b/content/en/blog/releases/v1.25.7.md @@ -0,0 +1,27 @@ +--- +title: v1.25.7 +linkTitle: v1.25.7 +date: 2023-01-16 +description: Cloud Provider Azure v1.25.7 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: Use TimedCache.Get() for read-only resources ([#3105](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3105), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.2.0+incompatible → v67.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.2.0...v67.3.0) +- github.com/onsi/ginkgo/v2: [v2.6.1 → v2.7.0](https://github.com/onsi/ginkgo/v2/compare/v2.6.1...v2.7.0) +- golang.org/x/sys: v0.3.0 → v0.4.0 +- golang.org/x/text: v0.5.0 → v0.6.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.8.md b/content/en/blog/releases/v1.25.8.md new file mode 100644 index 0000000000..30ae379c41 --- /dev/null +++ b/content/en/blog/releases/v1.25.8.md @@ -0,0 +1,59 @@ +--- +title: v1.25.8 +linkTitle: v1.25.8 +date: 2023-01-31 +description: Cloud Provider Azure v1.25.8 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: skip removing nics from lb if there will be no nics in the backend pool + update network api to 2022-07-01 to support backend pool level virtual network id ([#3246](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3246), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +- github.com/Azure/azure-kusto-go: [v0.10.2](https://github.com/Azure/azure-kusto-go/tree/v0.10.2) +- github.com/Azure/azure-pipeline-go: [v0.1.8](https://github.com/Azure/azure-pipeline-go/tree/v0.1.8) +- github.com/Azure/azure-sdk-for-go/sdk/azcore: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azcore/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/azidentity: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azidentity/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/internal: [v1.1.1](https://github.com/Azure/azure-sdk-for-go/sdk/internal/tree/v1.1.1) +- github.com/Azure/azure-sdk-for-go/sdk/storage/azblob: [v0.6.1](https://github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/tree/v0.6.1) +- github.com/Azure/azure-storage-queue-go: [6368018](https://github.com/Azure/azure-storage-queue-go/tree/6368018) +- github.com/AzureAD/microsoft-authentication-library-for-go: [v0.7.0](https://github.com/AzureAD/microsoft-authentication-library-for-go/tree/v0.7.0) +- github.com/cenkalti/backoff/v4: [v4.2.0](https://github.com/cenkalti/backoff/v4/tree/v4.2.0) +- github.com/dnaeon/go-vcr: [v1.1.0](https://github.com/dnaeon/go-vcr/tree/v1.1.0) +- github.com/gofrs/uuid: [v4.2.0+incompatible](https://github.com/gofrs/uuid/tree/v4.2.0) +- github.com/golang-jwt/jwt: [v3.2.1+incompatible](https://github.com/golang-jwt/jwt/tree/v3.2.1) +- github.com/kylelemons/godebug: [v1.1.0](https://github.com/kylelemons/godebug/tree/v1.1.0) +- github.com/montanaflynn/stats: [v0.6.6](https://github.com/montanaflynn/stats/tree/v0.6.6) +- github.com/pkg/browser: [681adbf](https://github.com/pkg/browser/tree/681adbf) +- github.com/tj/assert: [v0.0.3](https://github.com/tj/assert/tree/v0.0.3) + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.3.0+incompatible → v68.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.3.0...v68.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.21 → v0.9.22](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.21...v0.9.22) +- github.com/golang-jwt/jwt/v4: [v4.2.0 → v4.4.3](https://github.com/golang-jwt/jwt/v4/compare/v4.2.0...v4.4.3) +- github.com/google/uuid: [v1.1.2 → v1.3.0](https://github.com/google/uuid/compare/v1.1.2...v1.3.0) +- github.com/onsi/ginkgo/v2: [v2.7.0 → v2.7.1](https://github.com/onsi/ginkgo/v2/compare/v2.7.0...v2.7.1) +- github.com/onsi/gomega: [v1.24.2 → v1.26.0](https://github.com/onsi/gomega/compare/v1.24.2...v1.26.0) +- golang.org/x/crypto: 630584e → v0.5.0 +- golang.org/x/net: v0.4.0 → v0.5.0 +- golang.org/x/term: v0.3.0 → v0.4.0 +- golang.org/x/tools: v0.4.0 → v0.5.0 +- k8s.io/api: v0.25.5 → v0.25.6 +- k8s.io/apimachinery: v0.25.5 → v0.25.6 +- k8s.io/apiserver: v0.25.5 → v0.25.6 +- k8s.io/client-go: v0.25.5 → v0.25.6 +- k8s.io/cloud-provider: v0.25.5 → v0.25.6 +- k8s.io/component-base: v0.25.5 → v0.25.6 +- k8s.io/component-helpers: v0.25.5 → v0.25.6 +- k8s.io/controller-manager: v0.25.5 → v0.25.6 +- k8s.io/kubelet: v0.25.5 → v0.25.6 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.33 → v0.0.35 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.25.9.md b/content/en/blog/releases/v1.25.9.md new file mode 100644 index 0000000000..f401102534 --- /dev/null +++ b/content/en/blog/releases/v1.25.9.md @@ -0,0 +1,24 @@ +--- +title: v1.25.9 +linkTitle: v1.25.9 +date: 2023-02-13 +description: Cloud Provider Azure v1.25.9 +--- +Full Changelog: [v1.25.8..v1.25.9](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.25.8...v1.25.9) + +## Changes by Kind + +### Bug or Regression + +- Fix: remove vmss vm from cache when invalidate the cache ([#3301](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3301), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- golang.org/x/sys: v0.4.0 → v0.5.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.0.md b/content/en/blog/releases/v1.26.0.md new file mode 100644 index 0000000000..686641b392 --- /dev/null +++ b/content/en/blog/releases/v1.26.0.md @@ -0,0 +1,152 @@ +--- +title: v1.26.0 +linkTitle: v1.26.0 +date: 2022-12-14 +description: Cloud Provider Azure v1.26.0 +--- + +## Changes by Kind + +### Action Required + +- The command line option `--port` has been removed (because of dependency upgrade k8s.io/cloud-provider to v0.26.0). Please switch to `--secure-port` if you are using it in the deployments. + +### Feature + +- Add support for VMSS with Flexible orchestration ([#2523](https://github.com/kubernetes-sigs/cloud-provider-azure/issues/2523) [#639](https://github.com/kubernetes-sigs/cloud-provider-azure/issues/639) [@zmyzheng](https://github.com/zmyzheng)) +- Add annotation service.beta.kubernetes.io/port_%d_no_lb_rule, with this annotation in svc manifest, no loud balancing rules will be created for the corresponding port and health status port will not be exposed to public internet. ([#2828](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2828), [@MartinForReal](https://github.com/MartinForReal)) +- Added: support for new annotations **service.beta.kubernetes.io/port__health-probe_protocol** and **service.beta.kubernetes.io/port__health-probe_port** to allow explicitly setting the health probe protocol individually for each service port. Useful for services like Istio which have health check separate from the main service port. ([#2452](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2452), [@rainest](https://github.com/rainest)) +- Feat: add AccessTier and SMB MultiChannel support in storage account creation ([#2464](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2464), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: add PremiumV2LRS disk type support ([#2421](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2421), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: support snapshot with management api ([#2458](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2458), [@umagnus](https://github.com/umagnus)) + +### Bug or Regression + +- ARM will possibly return StatusCode 200 and ContentLength -1 which is a bug. However, cloudprovider can handle it better by retrying. ([#2298](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2298), [@lzhecheng](https://github.com/lzhecheng)) +- Avoid race condition between node-sync-loop routine and service reconcile routine. + Avoid UpdateLoadBalancer() using stale service spec to update Load Balancers. ([#2406](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2406), [@jwtty](https://github.com/jwtty)) +- Bug: When a Service with DNS label is deleted, k8s-azure-dns-label-service tag won't be deleted and it leads to ensurePublicIPExists error. ([#2866](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2866), [@lzhecheng](https://github.com/lzhecheng)) +- Check and cleanup both ELB and ILB when a service is being deleted. ([#2420](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2420), [@jwtty](https://github.com/jwtty)) +- Check internal lb ip in subnet before keeping it, so users can change their lb subnet. ([#2524](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2524), [@jwtty](https://github.com/jwtty)) +- Considering thread safety, results of cache Get() should be deepcopied before used. ([#2445](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2445), [@lzhecheng](https://github.com/lzhecheng)) +- Fix an issue when DNS label of public ip is not updated when service.beta.kubernetes.io/azure-dns-label-name is changed. ([#2665](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2665), [@MartinForReal](https://github.com/MartinForReal)) +- Fix to reduce PublicIPAddress list arm calls ([#2707](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2707), [@jwtty](https://github.com/jwtty)) +- Fix: Skip VMSS VM update operations if the VMs are not in good state + fix: Set the retryAfter to 5s when PUT failed due to concurrent operation conflict. ([#2386](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2386), [@nilo19](https://github.com/nilo19)) +- Fix: add disk lun check in AttachDisk to avoid race condition ([#2805](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2805), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: add disk lun check in VMSSFlex AttachDisk to avoid race condition ([#2830](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2830), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: avoid recreate vmss cache in race condition ([#2589](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2589), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: check private dns zone before creation ([#2723](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2723), [@ZeroMagic](https://github.com/ZeroMagic)) +- Fix: decouple vmss from the lb if the backend pool is empty when using ip-based LB + chore: do not set etag to nil when updating lb backend pool ([#2829](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2829), [@nilo19](https://github.com/nilo19)) +- Fix: decouple vmss with 0 instance from lb when deleting the service ([#2489](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2489), [@nilo19](https://github.com/nilo19)) +- Fix: panic in cache conversion ([#2771](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2771), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: reduce VMSS cache refresh in CSI driver ([#2816](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2816), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: remove lb from vmss when the backend pool is empty ([#2721](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2721), [@nilo19](https://github.com/nilo19)) +- Fix: resource group issue in disk attach ([#2817](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2817), [@andyzhangx](https://github.com/andyzhangx)) +- Only check response body length when request is GET. Avoids unnecessary retry when deleting an LB. ([#2363](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2363), [@jwtty](https://github.com/jwtty)) +- Fix [CVE-2022-41717](https://github.com/advisories/GHSA-xrjj-mj9h-534m) ([#2883](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2883), [@andyzhangx](https://github.com/andyzhangx)) +- Fixed a bug that prevents disks from being attached and detached for VMs in a Flex VMSS ([#2635](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2635), [@okushchenko](https://github.com/okushchenko)) + +### Other (Cleanup or Flake) + +- Bump snapshot client to 2022-03-02 ([#2647](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2647), [@MartinForReal](https://github.com/MartinForReal)) +- Bump azure compute version to 2022-03-01 ([#2623](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2623), [@MartinForReal](https://github.com/MartinForReal)) +- Chore: get node private IPs from cache but NIC ([#2430](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2430), [@nilo19](https://github.com/nilo19)) +- Chore: remove orphaned nic from lb backend pool if the corresponding VM is not found ([#2834](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2834), [@nilo19](https://github.com/nilo19)) +- Chore: update dependencies against k/k v1.26.0 ([#2882](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2882), [@nilo19](https://github.com/nilo19)) +- Chore: update helm chart to migrate from insecure to secure serving ([#2931](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2931), [@nilo19](https://github.com/nilo19)) +- Deprecate LoadBalancerIP with Service LB IP annotation. Add service.beta.kubernetes.io/azure-load-balancer-ipv4 and service.beta.kubernetes.io/azure-load-balancer-ipv6 ([#2428](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2428), [@lzhecheng](https://github.com/lzhecheng)) +- The following labels are removed on the nodes: + - "failure-domain.beta.kubernetes.io/zone" + - "failure-domain.beta.kubernetes.io/region" + - "beta.kubernetes.io/instance-type" ([#2653](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2653), [@Bryce-Soghigian](https://github.com/Bryce-Soghigian)) + +## Dependencies + +### Added + +- github.com/OneOfOne/xxhash: [v1.2.2](https://github.com/OneOfOne/xxhash/tree/v1.2.2) +- github.com/antlr/antlr4/runtime/Go/antlr: [v1.4.10](https://github.com/antlr/antlr4/runtime/Go/antlr/tree/v1.4.10) +- github.com/cenkalti/backoff/v4: [v4.1.3](https://github.com/cenkalti/backoff/v4/tree/v4.1.3) +- github.com/cespare/xxhash: [v1.1.0](https://github.com/cespare/xxhash/tree/v1.1.0) +- github.com/go-logr/stdr: [v1.2.2](https://github.com/go-logr/stdr/tree/v1.2.2) +- github.com/google/cel-go: [v0.12.5](https://github.com/google/cel-go/tree/v0.12.5) +- github.com/grpc-ecosystem/grpc-gateway/v2: [v2.7.0](https://github.com/grpc-ecosystem/grpc-gateway/v2/tree/v2.7.0) +- github.com/spaolacci/murmur3: [f09979e](https://github.com/spaolacci/murmur3/tree/f09979e) +- go.opentelemetry.io/otel/exporters/otlp/internal/retry: v1.10.0 +- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc: v1.10.0 +- go.opentelemetry.io/otel/exporters/otlp/otlptrace: v1.10.0 +- k8s.io/kms: v0.26.0 + +### Changed + +- github.com/Azure/azure-sdk-for-go: [v66.0.0+incompatible → v67.1.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v66.0.0...v67.1.0) +- github.com/emicklei/go-restful/v3: [v3.8.0 → v3.9.0](https://github.com/emicklei/go-restful/v3/compare/v3.8.0...v3.9.0) +- github.com/felixge/httpsnoop: [v1.0.1 → v1.0.3](https://github.com/felixge/httpsnoop/compare/v1.0.1...v1.0.3) +- github.com/fsnotify/fsnotify: [v1.5.4 → v1.6.0](https://github.com/fsnotify/fsnotify/compare/v1.5.4...v1.6.0) +- github.com/go-kit/log: [v0.1.0 → v0.2.0](https://github.com/go-kit/log/compare/v0.1.0...v0.2.0) +- github.com/go-logfmt/logfmt: [v0.5.0 → v0.5.1](https://github.com/go-logfmt/logfmt/compare/v0.5.0...v0.5.1) +- github.com/go-openapi/jsonreference: [v0.19.5 → v0.20.0](https://github.com/go-openapi/jsonreference/compare/v0.19.5...v0.20.0) +- github.com/golang/glog: [23def4e → v1.0.0](https://github.com/golang/glog/compare/23def4e...v1.0.0) +- github.com/google/go-cmp: [v0.5.8 → v0.5.9](https://github.com/google/go-cmp/compare/v0.5.8...v0.5.9) +- github.com/inconshreveable/mousetrap: [v1.0.0 → v1.0.1](https://github.com/inconshreveable/mousetrap/compare/v1.0.0...v1.0.1) +- github.com/matttproud/golang_protobuf_extensions: [c182aff → v1.0.2](https://github.com/matttproud/golang_protobuf_extensions/compare/c182aff...v1.0.2) +- github.com/moby/term: [3f7ff69 → 39b0c02](https://github.com/moby/term/compare/3f7ff69...39b0c02) +- github.com/onsi/ginkgo/v2: [v2.1.6 → v2.5.1](https://github.com/onsi/ginkgo/v2/compare/v2.1.6...v2.5.1) +- github.com/onsi/gomega: [v1.20.2 → v1.24.1](https://github.com/onsi/gomega/compare/v1.20.2...v1.24.1) +- github.com/prometheus/client_golang: [v1.12.1 → v1.14.0](https://github.com/prometheus/client_golang/compare/v1.12.1...v1.14.0) +- github.com/prometheus/client_model: [v0.2.0 → v0.3.0](https://github.com/prometheus/client_model/compare/v0.2.0...v0.3.0) +- github.com/prometheus/common: [v0.32.1 → v0.37.0](https://github.com/prometheus/common/compare/v0.32.1...v0.37.0) +- github.com/prometheus/procfs: [v0.7.3 → v0.8.0](https://github.com/prometheus/procfs/compare/v0.7.3...v0.8.0) +- github.com/spf13/cobra: [v1.5.0 → v1.6.1](https://github.com/spf13/cobra/compare/v1.5.0...v1.6.1) +- github.com/stretchr/objx: [v0.4.0 → v0.5.0](https://github.com/stretchr/objx/compare/v0.4.0...v0.5.0) +- github.com/stretchr/testify: [v1.8.0 → v1.8.1](https://github.com/stretchr/testify/compare/v1.8.0...v1.8.1) +- go.etcd.io/etcd/api/v3: v3.5.4 → v3.5.5 +- go.etcd.io/etcd/client/pkg/v3: v3.5.4 → v3.5.5 +- go.etcd.io/etcd/client/v2: v2.305.4 → v2.305.5 +- go.etcd.io/etcd/client/v3: v3.5.4 → v3.5.5 +- go.etcd.io/etcd/pkg/v3: v3.5.4 → v3.5.5 +- go.etcd.io/etcd/raft/v3: v3.5.4 → v3.5.5 +- go.etcd.io/etcd/server/v3: v3.5.4 → v3.5.5 +- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc: v0.20.0 → v0.35.0 +- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp: v0.20.0 → v0.35.0 +- go.opentelemetry.io/otel/metric: v0.20.0 → v0.31.0 +- go.opentelemetry.io/otel/sdk: v0.20.0 → v1.10.0 +- go.opentelemetry.io/otel/trace: v0.20.0 → v1.10.0 +- go.opentelemetry.io/otel: v0.20.0 → v1.10.0 +- go.opentelemetry.io/proto/otlp: v0.7.0 → v0.19.0 +- go.uber.org/goleak: v1.1.10 → v1.2.0 +- golang.org/x/crypto: 630584e → v0.1.0 +- golang.org/x/mod: 9b9b3d8 → 86c51ed +- golang.org/x/net: a158d28 → v0.4.0 +- golang.org/x/oauth2: d3ed0bb → ee48083 +- golang.org/x/sys: 8c9f86f → v0.3.0 +- golang.org/x/term: 03fcf44 → v0.3.0 +- golang.org/x/text: v0.3.7 → v0.5.0 +- golang.org/x/tools: v0.1.12 → v0.2.0 +- google.golang.org/grpc: v1.47.0 → v1.49.0 +- google.golang.org/protobuf: v1.28.0 → v1.28.1 +- k8s.io/api: v0.25.0 → v0.26.0 +- k8s.io/apimachinery: v0.25.0 → v0.26.0 +- k8s.io/apiserver: v0.25.0 → v0.26.0 +- k8s.io/client-go: v0.25.0 → v0.26.0 +- k8s.io/cloud-provider: v0.25.0 → v0.26.0 +- k8s.io/component-base: v0.25.0 → v0.26.0 +- k8s.io/component-helpers: v0.25.0 → v0.26.0 +- k8s.io/controller-manager: v0.25.0 → v0.26.0 +- k8s.io/klog/v2: v2.80.0 → v2.80.1 +- k8s.io/kube-openapi: 67bda5d → 172d655 +- k8s.io/kubelet: v0.25.0 → v0.26.0 +- k8s.io/utils: ee6ede2 → 99ec85e +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.32 → v0.0.33 + +### Removed + +- github.com/getkin/kin-openapi: [v0.76.0](https://github.com/getkin/kin-openapi/tree/v0.76.0) +- github.com/spf13/afero: [v1.6.0](https://github.com/spf13/afero/tree/v1.6.0) +- go.opentelemetry.io/contrib: v0.20.0 +- go.opentelemetry.io/otel/exporters/otlp: v0.20.0 +- go.opentelemetry.io/otel/oteltest: v0.20.0 +- go.opentelemetry.io/otel/sdk/export/metric: v0.20.0 +- go.opentelemetry.io/otel/sdk/metric: v0.20.0 diff --git a/content/en/blog/releases/v1.26.1.md b/content/en/blog/releases/v1.26.1.md new file mode 100644 index 0000000000..ffed478052 --- /dev/null +++ b/content/en/blog/releases/v1.26.1.md @@ -0,0 +1,32 @@ +--- +title: v1.26.1 +linkTitle: v1.26.1 +date: 2023-01-03 +description: Cloud Provider Azure v1.26.1 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: get vmss name and resource group from vm ID if the provider ID of the node is empty ([#2988](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2988), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- Chore: update dependencies against k/k v1.26.0 ([#2882](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2882), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.1.0+incompatible → v67.2.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.1.0...v67.2.0) +- github.com/onsi/ginkgo/v2: [v2.5.1 → v2.6.1](https://github.com/onsi/ginkgo/v2/compare/v2.5.1...v2.6.1) +- github.com/onsi/gomega: [v1.24.1 → v1.24.2](https://github.com/onsi/gomega/compare/v1.24.1...v1.24.2) +- golang.org/x/crypto: v0.1.0 → v0.4.0 +- golang.org/x/tools: v0.2.0 → v0.4.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.10.md b/content/en/blog/releases/v1.26.10.md new file mode 100644 index 0000000000..a04202b603 --- /dev/null +++ b/content/en/blog/releases/v1.26.10.md @@ -0,0 +1,35 @@ +--- +title: v1.26.10 +linkTitle: v1.26.10 +date: 2023-05-25 +description: Cloud Provider Azure v1.26.10 +--- +Full Changelog: [v1.26.9..v1.26.10](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.26.9...v1.26.10) + +## Changes by Kind + +### Feature + +- Apply the custom probe configs when externalTrafficPolicy is local and PLSProxyProtocol is enabled. ([#3944](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3944), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Fix: make sure the pip dns tag will not be removed when systemTags is set ([#3962](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3962), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- [Log] Print Service name and resource basename in ReconcileService(). Adding such log shows relation between Service name and its related resource name (Frontend IP config, etc.). It helps debugging. ([#3965](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3965), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/stretchr/testify: [v1.8.2 → v1.8.3](https://github.com/stretchr/testify/compare/v1.8.2...v1.8.3) +- k8s.io/cloud-provider: v0.26.4 → v0.26.5 +- k8s.io/component-helpers: v0.26.4 → v0.26.5 +- k8s.io/kubelet: v0.26.4 → v0.26.5 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.11.md b/content/en/blog/releases/v1.26.11.md new file mode 100644 index 0000000000..c28cf419e6 --- /dev/null +++ b/content/en/blog/releases/v1.26.11.md @@ -0,0 +1,28 @@ +--- +title: v1.26.11 +linkTitle: v1.26.11 +date: 2023-06-07 +description: Cloud Provider Azure v1.26.11 +--- +Full Changelog: [v1.26.10..v1.26.11](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.26.10...v1.26.11) + +## Changes by Kind + +### Feature + +- Feat: Support migrate from NIC-based to IP-based backend pool by migration API by setting `"enableMigrateToIpBasedBackendPoolAPI": true`. By using this API, there will be no downtime during the migration. ([#4044](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/4044), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- The deprecated beta topology labels are no longer applied by default, to maintain the legacy behaviour use `--deprecated-apply-beta-topology-labels` ([#4040](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/4040), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.2.md b/content/en/blog/releases/v1.26.2.md new file mode 100644 index 0000000000..972f923f2f --- /dev/null +++ b/content/en/blog/releases/v1.26.2.md @@ -0,0 +1,24 @@ +--- +title: v1.26.2 +linkTitle: v1.26.2 +date: 2023-01-05 +description: Cloud Provider Azure v1.26.2 +--- + + + + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- golang.org/x/crypto: v0.4.0 → v0.5.0 +- golang.org/x/net: v0.4.0 → v0.5.0 +- golang.org/x/sys: v0.3.0 → v0.4.0 +- golang.org/x/term: v0.3.0 → v0.4.0 +- golang.org/x/text: v0.5.0 → v0.6.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.3.md b/content/en/blog/releases/v1.26.3.md new file mode 100644 index 0000000000..442b0d9d7d --- /dev/null +++ b/content/en/blog/releases/v1.26.3.md @@ -0,0 +1,38 @@ +--- +title: v1.26.3 +linkTitle: v1.26.3 +date: 2023-01-16 +description: Cloud Provider Azure v1.26.3 +--- + + + + +## Dependencies + +### Added +- github.com/Azure/azure-kusto-go: [v0.10.2](https://github.com/Azure/azure-kusto-go/tree/v0.10.2) +- github.com/Azure/azure-pipeline-go: [v0.1.8](https://github.com/Azure/azure-pipeline-go/tree/v0.1.8) +- github.com/Azure/azure-sdk-for-go/sdk/azcore: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azcore/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/azidentity: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azidentity/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/internal: [v1.1.1](https://github.com/Azure/azure-sdk-for-go/sdk/internal/tree/v1.1.1) +- github.com/Azure/azure-sdk-for-go/sdk/storage/azblob: [v0.6.1](https://github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/tree/v0.6.1) +- github.com/Azure/azure-storage-queue-go: [6368018](https://github.com/Azure/azure-storage-queue-go/tree/6368018) +- github.com/AzureAD/microsoft-authentication-library-for-go: [v0.7.0](https://github.com/AzureAD/microsoft-authentication-library-for-go/tree/v0.7.0) +- github.com/dnaeon/go-vcr: [v1.1.0](https://github.com/dnaeon/go-vcr/tree/v1.1.0) +- github.com/gofrs/uuid: [v4.2.0+incompatible](https://github.com/gofrs/uuid/tree/v4.2.0) +- github.com/golang-jwt/jwt: [v3.2.1+incompatible](https://github.com/golang-jwt/jwt/tree/v3.2.1) +- github.com/kylelemons/godebug: [v1.1.0](https://github.com/kylelemons/godebug/tree/v1.1.0) +- github.com/montanaflynn/stats: [v0.6.6](https://github.com/montanaflynn/stats/tree/v0.6.6) +- github.com/pkg/browser: [681adbf](https://github.com/pkg/browser/tree/681adbf) +- github.com/tj/assert: [v0.0.3](https://github.com/tj/assert/tree/v0.0.3) + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.2.0+incompatible → v67.3.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.2.0...v67.3.0) +- github.com/cenkalti/backoff/v4: [v4.1.3 → v4.2.0](https://github.com/cenkalti/backoff/v4/compare/v4.1.3...v4.2.0) +- github.com/golang-jwt/jwt/v4: [v4.2.0 → v4.4.3](https://github.com/golang-jwt/jwt/v4/compare/v4.2.0...v4.4.3) +- github.com/google/uuid: [v1.1.2 → v1.3.0](https://github.com/google/uuid/compare/v1.1.2...v1.3.0) +- github.com/onsi/ginkgo/v2: [v2.6.1 → v2.7.0](https://github.com/onsi/ginkgo/v2/compare/v2.6.1...v2.7.0) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.4.md b/content/en/blog/releases/v1.26.4.md new file mode 100644 index 0000000000..37e9b02065 --- /dev/null +++ b/content/en/blog/releases/v1.26.4.md @@ -0,0 +1,41 @@ +--- +title: v1.26.4 +linkTitle: v1.26.4 +date: 2023-01-31 +description: Cloud Provider Azure v1.26.4 +--- + + +## Changes by Kind + +### Bug or Regression + +- Fix: skip removing nics from lb if there will be no nics in the backend pool + update network api to 2022-07-01 to support backend pool level virtual network id ([#3247](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3247), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.3.0+incompatible → v68.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.3.0...v68.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.21 → v0.9.22](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.21...v0.9.22) +- github.com/google/cel-go: [v0.12.5 → v0.12.6](https://github.com/google/cel-go/compare/v0.12.5...v0.12.6) +- github.com/onsi/ginkgo/v2: [v2.7.0 → v2.7.1](https://github.com/onsi/ginkgo/v2/compare/v2.7.0...v2.7.1) +- github.com/onsi/gomega: [v1.24.2 → v1.26.0](https://github.com/onsi/gomega/compare/v1.24.2...v1.26.0) +- golang.org/x/tools: v0.4.0 → v0.5.0 +- k8s.io/api: v0.26.0 → v0.26.1 +- k8s.io/apimachinery: v0.26.0 → v0.26.1 +- k8s.io/apiserver: v0.26.0 → v0.26.1 +- k8s.io/client-go: v0.26.0 → v0.26.1 +- k8s.io/cloud-provider: v0.26.0 → v0.26.1 +- k8s.io/component-base: v0.26.0 → v0.26.1 +- k8s.io/component-helpers: v0.26.0 → v0.26.1 +- k8s.io/controller-manager: v0.26.0 → v0.26.1 +- k8s.io/kms: v0.26.0 → v0.26.1 +- k8s.io/kubelet: v0.26.0 → v0.26.1 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.33 → v0.0.35 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.5.md b/content/en/blog/releases/v1.26.5.md new file mode 100644 index 0000000000..e9cf9ca6f3 --- /dev/null +++ b/content/en/blog/releases/v1.26.5.md @@ -0,0 +1,24 @@ +--- +title: v1.26.5 +linkTitle: v1.26.5 +date: 2023-02-13 +description: Cloud Provider Azure v1.26.5 +--- +Full Changelog: [v1.26.4..v1.26.5](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.26.4...v1.26.5) + +## Changes by Kind + +### Bug or Regression + +- Fix: remove vmss vm from cache when invalidate the cache ([#3302](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3302), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- golang.org/x/sys: v0.4.0 → v0.5.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.6.md b/content/en/blog/releases/v1.26.6.md new file mode 100644 index 0000000000..0b375440f5 --- /dev/null +++ b/content/en/blog/releases/v1.26.6.md @@ -0,0 +1,44 @@ +--- +title: v1.26.6 +linkTitle: v1.26.6 +date: 2023-03-10 +description: Cloud Provider Azure v1.26.6 +--- +Full Changelog: [v1.26.5..v1.26.6](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.26.5...v1.26.6) + +## Changes by Kind + +### Bug or Regression + +- Fix incorrect security rule name with IPv6 address prefix ([#3351](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3351), [@lzhecheng](https://github.com/lzhecheng)) +- Fix: remove shared security rule when no svc with shared-nsg annotation exists ([#3394](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3394), [@MartinForReal](https://github.com/MartinForReal)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.8.0 → v2.8.1](https://github.com/onsi/ginkgo/v2/compare/v2.8.0...v2.8.1) +- github.com/onsi/gomega: [v1.26.0 → v1.27.1](https://github.com/onsi/gomega/compare/v1.26.0...v1.27.1) +- github.com/stretchr/testify: [v1.8.1 → v1.8.2](https://github.com/stretchr/testify/compare/v1.8.1...v1.8.2) +- golang.org/x/crypto: v0.6.0 → v0.7.0 +- golang.org/x/mod: 86c51ed → v0.8.0 +- golang.org/x/net: v0.6.0 → v0.8.0 +- golang.org/x/sys: v0.5.0 → v0.6.0 +- golang.org/x/term: v0.5.0 → v0.6.0 +- golang.org/x/text: v0.7.0 → v0.8.0 +- golang.org/x/tools: v0.5.0 → v0.6.0 +- k8s.io/api: v0.26.1 → v0.26.2 +- k8s.io/apimachinery: v0.26.1 → v0.26.2 +- k8s.io/apiserver: v0.26.1 → v0.26.2 +- k8s.io/client-go: v0.26.1 → v0.26.2 +- k8s.io/cloud-provider: v0.26.1 → v0.26.2 +- k8s.io/component-base: v0.26.1 → v0.26.2 +- k8s.io/component-helpers: v0.26.1 → v0.26.2 +- k8s.io/controller-manager: v0.26.1 → v0.26.2 +- k8s.io/kms: v0.26.1 → v0.26.2 +- k8s.io/kubelet: v0.26.1 → v0.26.2 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.7.md b/content/en/blog/releases/v1.26.7.md new file mode 100644 index 0000000000..12d0a45203 --- /dev/null +++ b/content/en/blog/releases/v1.26.7.md @@ -0,0 +1,24 @@ +--- +title: v1.26.7 +linkTitle: v1.26.7 +date: 2023-03-13 +description: Cloud Provider Azure v1.26.7 +--- +Full Changelog: [v1.26.6..v1.26.7](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.26.6...v1.26.7) + +## Changes by Kind + +### Bug or Regression + +- Fix: do not tag user-assigned public IP ([#3531](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3531), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +_Nothing has changed._ + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.8.md b/content/en/blog/releases/v1.26.8.md new file mode 100644 index 0000000000..793adb2d0c --- /dev/null +++ b/content/en/blog/releases/v1.26.8.md @@ -0,0 +1,56 @@ +--- +title: v1.26.8 +linkTitle: v1.26.8 +date: 2023-04-21 +description: Cloud Provider Azure v1.26.8 +--- +Full Changelog: [v1.26.7..v1.26.8](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.26.7...v1.26.8) + +## Changes by Kind + +### Bug or Regression + +- Deprecate numberOfProbes and adopt ProbeThreshold in network api to address a probe issue in nrp ([#3656](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3656), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix nodeAddressesChangeDetected() bug when dual-stack. In a dual-stack cluster, a Node has 2 internal IPs but current logic doesn't distinguish between these 2. As a result, CNM always assumes that NodeAddresses changed. ([#3607](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3607), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: do not tag user-assigned public IP ([#3531](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3531), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- Fix: update resources in batches asynchronously + + A regression was introduced by #1687 where the behavior of updating resources in batches changes from sending requests asynchronously to synchonously. This would lead to latencies when updating vmss vms, especially when the cluster size is huge. This unexpected change is reverted in this fix. ([#3765](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3765), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- [IPv6] Choose correct primary IP config. Regardless of IPv6 only or dualstack clusters, IPv4 IP config is always primary. So for IPv6 backend address pool, IP config's IP version needs consideration. ([#3770](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3770), [@lzhecheng](https://github.com/lzhecheng)) +- [IPv6] Fix CNM not properly handling IPv6 from imds LB. imds LB returns IPv6 IPs wrapped by brackets so extra trimming is needed. ([#3727](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3727), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- Removing container images for Windows Server, Version 2004 and 20H2 ([#3595](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3595), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest/adal: [v0.9.22 → v0.9.23](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.22...v0.9.23) +- github.com/go-logr/logr: [v1.2.3 → v1.2.4](https://github.com/go-logr/logr/compare/v1.2.3...v1.2.4) +- github.com/golang-jwt/jwt/v4: [v4.4.3 → v4.5.0](https://github.com/golang-jwt/jwt/v4/compare/v4.4.3...v4.5.0) +- github.com/inconshreveable/mousetrap: [v1.0.1 → v1.1.0](https://github.com/inconshreveable/mousetrap/compare/v1.0.1...v1.1.0) +- github.com/spf13/cobra: [v1.6.1 → v1.7.0](https://github.com/spf13/cobra/compare/v1.6.1...v1.7.0) +- github.com/yuin/goldmark: [v1.3.5 → v1.4.13](https://github.com/yuin/goldmark/compare/v1.3.5...v1.4.13) +- golang.org/x/crypto: v0.7.0 → v0.8.0 +- golang.org/x/net: v0.8.0 → v0.9.0 +- golang.org/x/sys: v0.6.0 → v0.7.0 +- golang.org/x/term: v0.6.0 → v0.7.0 +- golang.org/x/text: v0.8.0 → v0.9.0 +- k8s.io/api: v0.26.2 → v0.26.4 +- k8s.io/apimachinery: v0.26.2 → v0.26.4 +- k8s.io/apiserver: v0.26.2 → v0.26.4 +- k8s.io/client-go: v0.26.2 → v0.26.4 +- k8s.io/cloud-provider: v0.26.2 → v0.26.3 +- k8s.io/component-base: v0.26.2 → v0.26.4 +- k8s.io/component-helpers: v0.26.2 → v0.26.4 +- k8s.io/controller-manager: v0.26.2 → v0.26.4 +- k8s.io/kms: v0.26.2 → v0.26.4 +- k8s.io/kubelet: v0.26.2 → v0.26.4 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.35 → v0.0.36 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.26.9.md b/content/en/blog/releases/v1.26.9.md new file mode 100644 index 0000000000..adbd50612b --- /dev/null +++ b/content/en/blog/releases/v1.26.9.md @@ -0,0 +1,31 @@ +--- +title: v1.26.9 +linkTitle: v1.26.9 +date: 2023-05-18 +description: Cloud Provider Azure v1.26.9 +--- +Full Changelog: [v1.26.8..v1.26.9](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.26.8...v1.26.9) + +## Changes by Kind + +### Bug or Regression + +- Fix: the pip without tags should be user-assigned + fix: refresh the pip cache when necessary + fix: do not tag user-assigned pip with `kubernetes-dns-label-service: ` ([#3890](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3890), [@nilo19](https://github.com/nilo19)) +- Fixed: Remove shared nsg rule immediately when no destinations left ([#3798](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3798), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/Azure/go-autorest/autorest: [v0.11.28 → v0.11.29](https://github.com/Azure/go-autorest/autorest/compare/v0.11.28...v0.11.29) +- golang.org/x/crypto: v0.8.0 → v0.9.0 +- golang.org/x/net: v0.9.0 → v0.10.0 +- golang.org/x/sys: v0.7.0 → v0.8.0 +- golang.org/x/term: v0.7.0 → v0.8.0 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.27.0.md b/content/en/blog/releases/v1.27.0.md new file mode 100644 index 0000000000..c1b62ec95b --- /dev/null +++ b/content/en/blog/releases/v1.27.0.md @@ -0,0 +1,110 @@ +--- +title: v1.27.0 +linkTitle: v1.27.0 +date: 2023-04-21 +description: Cloud Provider Azure v1.27.0 +--- +Full Changelog: [v1.26.0..v1.27.0](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.26.0...v1.27.0) + +## Changes by Kind + +### Feature + +- Add tolerations in values for cloud-controller-manager in Helm chart + - Add nodeSelector in values for cloud-controller-manager in Helm chart ([#3416](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3416), [@lzhecheng](https://github.com/lzhecheng)) +- Feat: Support private endpoint for blob-csi-driver ([#2992](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2992), [@cvvz](https://github.com/cvvz)) +- Feat: add DisableUpdateCache flag ([#2993](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2993), [@andyzhangx](https://github.com/andyzhangx)) +- Feat: support private endpoint for blob and file csi driver ([#2998](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2998), [@cvvz](https://github.com/cvvz)) +- Feat: update cache support for starndard and vmss flex ([#2950](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2950), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: add disk attach/detach delay time to allow more batch ([#3284](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3284), [@andyzhangx](https://github.com/andyzhangx)) +- Support data protection for blob csi driver ([#3115](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3115), [@cvvz](https://github.com/cvvz)) +- Support dualstack for PIP in azure_loadbalancer.go ([#3404](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3404), [@lzhecheng](https://github.com/lzhecheng)) + +### Bug or Regression + +- CCM will now shut down gracefully when losing leader election, will no longer panic ([#3504](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3504), [@JoelSpeed](https://github.com/JoelSpeed)) +- Choose correct primary IP config in ensureBackendPoolDeletedFromNode(). Regardless of IPv6 only or dualstack clusters, IPv4 IP config is always primary. So for IPv6 backend address pool, IP config's IP version needs consideration. ([#3715](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3715), [@lzhecheng](https://github.com/lzhecheng)) +- Deprecate numberOfProbes and adopt ProbeThreshold in network api to address a probe issue in nrp ([#3623](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3623), [@MartinForReal](https://github.com/MartinForReal)) +- Fix incorrect security rule name with IPv6 address prefix ([#3289](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3289), [@lzhecheng](https://github.com/lzhecheng)) +- Fix nic CreateOrUpdate bug when there are more than one nic. ([#3417](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3417), [@lzhecheng](https://github.com/lzhecheng)) +- Fix nodeAddressesChangeDetected() bug when dual-stack. In a dual-stack cluster, a Node has 2 internal IPs but current logic doesn't distinguish between these 2. As a result, CNM always assumes that NodeAddresses changed. ([#3586](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3586), [@lzhecheng](https://github.com/lzhecheng)) +- Fix: CVE-2022-41723 ([#3392](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3392), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: account matching issue in account search ([#3082](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3082), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: add more account search options ([#3085](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3085), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: detach disk failure when there is throttling ([#3482](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3482), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: do not tag user-assigned public IP ([#3527](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3527), [@nilo19](https://github.com/nilo19)) +- Fix: get vmss name and resource group from vm ID if the provider ID of the node is empty ([#2984](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2984), [@nilo19](https://github.com/nilo19)) +- Fix: race condition in lockMap ([#2985](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2985), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: remove unused shared nsg rule when there is no svc having azure-shared-securityrule annotations set ([#3391](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3391), [@MartinForReal](https://github.com/MartinForReal)) +- Fix: set ForceAttemptHTTP2 to increase ARM throttling limit ([#3006](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3006), [@umagnus](https://github.com/umagnus)) +- Fix: skip removing nics from lb if there will be no nics in the backend pool ([#3212](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3212), [@nilo19](https://github.com/nilo19)) +- Fix: support PrivateDNSZone in sovereign cloud ([#2964](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/2964), [@andyzhangx](https://github.com/andyzhangx)) +- Fix: update network api to 2022-07-01 to support backend pool level virtual network id ([#3232](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3232), [@nilo19](https://github.com/nilo19)) +- Fix: update resources in batches asynchronously + + A regression was introduced by #1687 where the behavior of updating resources in batches changes from sending requests asynchronously to synchonously. This would lead to latencies when updating vmss vms, especially when the cluster size is huge. This unexpected change is reverted in this fix. ([#3757](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3757), [@nilo19](https://github.com/nilo19)) +- Fixes an issue in the `TimedCache` implementation that could result in multiple concurrent calls to the getter function. ([#3084](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3084), [@edreed](https://github.com/edreed)) +- [IPv6] Fix CNM not properly handling IPv6 from imds LB. imds LB returns IPv6 IPs wrapped by brackets so extra trimming is needed. ([#3726](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3726), [@lzhecheng](https://github.com/lzhecheng)) + +### Other (Cleanup or Flake) + +- Chore: set default loadBalancerSKU to Standard ([#3768](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3768), [@nilo19](https://github.com/nilo19)) +- Chore: upgrade credentialprovider-api-version to v1 ([#3756](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3756), [@andyzhangx](https://github.com/andyzhangx)) +- Removing container images for Windows Server, Version 2004 and 20H2 ([#3555](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3555), [@marosset](https://github.com/marosset)) + +## Dependencies + +### Added +- github.com/Azure/azure-kusto-go: [v0.10.2](https://github.com/Azure/azure-kusto-go/tree/v0.10.2) +- github.com/Azure/azure-pipeline-go: [v0.1.8](https://github.com/Azure/azure-pipeline-go/tree/v0.1.8) +- github.com/Azure/azure-sdk-for-go/sdk/azcore: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azcore/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/azidentity: [v1.2.0](https://github.com/Azure/azure-sdk-for-go/sdk/azidentity/tree/v1.2.0) +- github.com/Azure/azure-sdk-for-go/sdk/internal: [v1.1.1](https://github.com/Azure/azure-sdk-for-go/sdk/internal/tree/v1.1.1) +- github.com/Azure/azure-sdk-for-go/sdk/storage/azblob: [v0.6.1](https://github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/tree/v0.6.1) +- github.com/Azure/azure-storage-queue-go: [6368018](https://github.com/Azure/azure-storage-queue-go/tree/6368018) +- github.com/AzureAD/microsoft-authentication-library-for-go: [v0.7.0](https://github.com/AzureAD/microsoft-authentication-library-for-go/tree/v0.7.0) +- github.com/dnaeon/go-vcr: [v1.1.0](https://github.com/dnaeon/go-vcr/tree/v1.1.0) +- github.com/gofrs/uuid: [v4.2.0+incompatible](https://github.com/gofrs/uuid/tree/v4.2.0) +- github.com/golang-jwt/jwt: [v3.2.1+incompatible](https://github.com/golang-jwt/jwt/tree/v3.2.1) +- github.com/kylelemons/godebug: [v1.1.0](https://github.com/kylelemons/godebug/tree/v1.1.0) +- github.com/montanaflynn/stats: [v0.6.6](https://github.com/montanaflynn/stats/tree/v0.6.6) +- github.com/pkg/browser: [681adbf](https://github.com/pkg/browser/tree/681adbf) +- github.com/tj/assert: [v0.0.3](https://github.com/tj/assert/tree/v0.0.3) + +### Changed +- github.com/Azure/azure-sdk-for-go: [v67.1.0+incompatible → v68.0.0+incompatible](https://github.com/Azure/azure-sdk-for-go/compare/v67.1.0...v68.0.0) +- github.com/Azure/go-autorest/autorest/adal: [v0.9.21 → v0.9.23](https://github.com/Azure/go-autorest/autorest/adal/compare/v0.9.21...v0.9.23) +- github.com/cenkalti/backoff/v4: [v4.1.3 → v4.2.0](https://github.com/cenkalti/backoff/v4/compare/v4.1.3...v4.2.0) +- github.com/go-logr/logr: [v1.2.3 → v1.2.4](https://github.com/go-logr/logr/compare/v1.2.3...v1.2.4) +- github.com/golang-jwt/jwt/v4: [v4.2.0 → v4.5.0](https://github.com/golang-jwt/jwt/v4/compare/v4.2.0...v4.5.0) +- github.com/google/cel-go: [v0.12.5 → v0.12.6](https://github.com/google/cel-go/compare/v0.12.5...v0.12.6) +- github.com/google/uuid: [v1.1.2 → v1.3.0](https://github.com/google/uuid/compare/v1.1.2...v1.3.0) +- github.com/inconshreveable/mousetrap: [v1.0.1 → v1.1.0](https://github.com/inconshreveable/mousetrap/compare/v1.0.1...v1.1.0) +- github.com/onsi/ginkgo/v2: [v2.5.1 → v2.8.1](https://github.com/onsi/ginkgo/v2/compare/v2.5.1...v2.8.1) +- github.com/onsi/gomega: [v1.24.1 → v1.27.1](https://github.com/onsi/gomega/compare/v1.24.1...v1.27.1) +- github.com/spf13/cobra: [v1.6.1 → v1.7.0](https://github.com/spf13/cobra/compare/v1.6.1...v1.7.0) +- github.com/stretchr/testify: [v1.8.1 → v1.8.2](https://github.com/stretchr/testify/compare/v1.8.1...v1.8.2) +- github.com/yuin/goldmark: [v1.3.5 → v1.4.13](https://github.com/yuin/goldmark/compare/v1.3.5...v1.4.13) +- golang.org/x/crypto: v0.1.0 → v0.8.0 +- golang.org/x/mod: 86c51ed → v0.8.0 +- golang.org/x/net: v0.4.0 → v0.9.0 +- golang.org/x/sync: 886fb93 → v0.1.0 +- golang.org/x/sys: v0.3.0 → v0.7.0 +- golang.org/x/term: v0.3.0 → v0.7.0 +- golang.org/x/text: v0.5.0 → v0.9.0 +- golang.org/x/tools: v0.2.0 → v0.6.0 +- k8s.io/api: v0.26.0 → v0.26.3 +- k8s.io/apimachinery: v0.26.0 → v0.26.3 +- k8s.io/apiserver: v0.26.0 → v0.26.3 +- k8s.io/client-go: v0.26.0 → v0.26.3 +- k8s.io/cloud-provider: v0.26.0 → v0.26.3 +- k8s.io/component-base: v0.26.0 → v0.26.3 +- k8s.io/component-helpers: v0.26.0 → v0.26.3 +- k8s.io/controller-manager: v0.26.0 → v0.26.3 +- k8s.io/klog/v2: v2.80.1 → v2.90.1 +- k8s.io/kms: v0.26.0 → v0.26.3 +- k8s.io/kubelet: v0.26.0 → v0.26.3 +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.33 → v0.0.36 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.27.1.md b/content/en/blog/releases/v1.27.1.md new file mode 100644 index 0000000000..65d816a0d6 --- /dev/null +++ b/content/en/blog/releases/v1.27.1.md @@ -0,0 +1,71 @@ +--- +title: v1.27.1 +linkTitle: v1.27.1 +date: 2023-04-23 +description: Cloud Provider Azure v1.27.1 +--- +Full Changelog: [v1.27.0..v1.27.1](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.27.0...v1.27.1) + + + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/coreos/go-systemd/v22: [v22.3.2 → v22.4.0](https://github.com/coreos/go-systemd/v22/compare/v22.3.2...v22.4.0) +- github.com/creack/pty: [v1.1.11 → v1.1.18](https://github.com/creack/pty/compare/v1.1.11...v1.1.18) +- github.com/go-openapi/jsonpointer: [v0.19.5 → v0.19.6](https://github.com/go-openapi/jsonpointer/compare/v0.19.5...v0.19.6) +- github.com/go-openapi/jsonreference: [v0.20.0 → v0.20.1](https://github.com/go-openapi/jsonreference/compare/v0.20.0...v0.20.1) +- github.com/go-openapi/swag: [v0.19.14 → v0.22.3](https://github.com/go-openapi/swag/compare/v0.19.14...v0.22.3) +- github.com/golang/protobuf: [v1.5.2 → v1.5.3](https://github.com/golang/protobuf/compare/v1.5.2...v1.5.3) +- github.com/google/pprof: [94a9f03 → 4bb14d4](https://github.com/google/pprof/compare/94a9f03...4bb14d4) +- github.com/ianlancetaylor/demangle: [5e5cf60 → 28f6c0f](https://github.com/ianlancetaylor/demangle/compare/5e5cf60...28f6c0f) +- github.com/kr/pretty: [v0.2.0 → v0.3.0](https://github.com/kr/pretty/compare/v0.2.0...v0.3.0) +- github.com/mailru/easyjson: [v0.7.6 → v0.7.7](https://github.com/mailru/easyjson/compare/v0.7.6...v0.7.7) +- github.com/mitchellh/mapstructure: [v1.1.2 → v1.4.1](https://github.com/mitchellh/mapstructure/compare/v1.1.2...v1.4.1) +- github.com/moby/term: [39b0c02 → 1aeaba8](https://github.com/moby/term/compare/39b0c02...1aeaba8) +- github.com/onsi/ginkgo/v2: [v2.8.1 → v2.9.1](https://github.com/onsi/ginkgo/v2/compare/v2.8.1...v2.9.1) +- github.com/onsi/gomega: [v1.27.1 → v1.27.4](https://github.com/onsi/gomega/compare/v1.27.1...v1.27.4) +- github.com/rogpeppe/go-internal: [v1.3.0 → v1.10.0](https://github.com/rogpeppe/go-internal/compare/v1.3.0...v1.10.0) +- github.com/sirupsen/logrus: [v1.8.1 → v1.9.0](https://github.com/sirupsen/logrus/compare/v1.8.1...v1.9.0) +- github.com/tmc/grpc-websocket-proxy: [e5319fd → 673ab2c](https://github.com/tmc/grpc-websocket-proxy/compare/e5319fd...673ab2c) +- go.etcd.io/etcd/api/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/client/pkg/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/client/v2: v2.305.5 → v2.305.7 +- go.etcd.io/etcd/client/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/pkg/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/raft/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/server/v3: v3.5.5 → v3.5.7 +- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp: v0.35.0 → v0.35.1 +- go.uber.org/goleak: v1.2.0 → v1.2.1 +- golang.org/x/lint: 6edffad → 738671d +- golang.org/x/mod: v0.8.0 → v0.9.0 +- golang.org/x/tools: v0.6.0 → v0.7.0 +- golang.org/x/xerrors: 5ec99f8 → 04be3eb +- google.golang.org/grpc: v1.49.0 → v1.51.0 +- gopkg.in/check.v1: 8fa4692 → 10cb982 +- gopkg.in/square/go-jose.v2: v2.2.2 → v2.6.0 +- k8s.io/api: v0.26.3 → v0.27.1 +- k8s.io/apimachinery: v0.26.3 → v0.27.1 +- k8s.io/apiserver: v0.26.3 → v0.27.1 +- k8s.io/client-go: v0.26.3 → v0.27.1 +- k8s.io/cloud-provider: v0.26.3 → v0.27.1 +- k8s.io/component-base: v0.26.3 → v0.27.1 +- k8s.io/component-helpers: v0.26.3 → v0.27.1 +- k8s.io/controller-manager: v0.26.3 → v0.27.1 +- k8s.io/kms: v0.26.3 → v0.27.1 +- k8s.io/kube-openapi: 172d655 → 15aac26 +- k8s.io/kubelet: v0.26.3 → v0.27.1 +- k8s.io/utils: 99ec85e → a36077c +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.36 → v0.1.1 +- sigs.k8s.io/json: f223a00 → bc3834c + +### Removed +- github.com/PuerkitoBio/purell: [v1.1.1](https://github.com/PuerkitoBio/purell/tree/v1.1.1) +- github.com/PuerkitoBio/urlesc: [de5bf2a](https://github.com/PuerkitoBio/urlesc/tree/de5bf2a) +- github.com/elazarl/goproxy: [947c36d](https://github.com/elazarl/goproxy/tree/947c36d) +- github.com/form3tech-oss/jwt-go: [v3.2.3+incompatible](https://github.com/form3tech-oss/jwt-go/tree/v3.2.3) +- github.com/niemeyer/pretty: [a10e7ca](https://github.com/niemeyer/pretty/tree/a10e7ca) +- gotest.tools/v3: v3.0.3 diff --git a/content/en/blog/releases/v1.27.2.md b/content/en/blog/releases/v1.27.2.md new file mode 100644 index 0000000000..821876ec6f --- /dev/null +++ b/content/en/blog/releases/v1.27.2.md @@ -0,0 +1,85 @@ +--- +title: v1.27.2 +linkTitle: v1.27.2 +date: 2023-05-06 +description: Cloud Provider Azure v1.27.2 +--- +Full Changelog: [v1.27.1..v1.27.2](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.27.1...v1.27.2) + +## Changes by Kind + +### Bug or Regression + +- Fixed: Remove shared nsg rule immediately when no destinations left ([#3797](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3797), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- [DualStack] IPv6 PIP uses suffix only when DualStack. For CCM v1.27.1, the IPv6 PIP created has suffix. After CCM is upgraded, such PIP will be recreated. ([#3853](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3853), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +- github.com/samber/lo: [v1.37.0](https://github.com/samber/lo/tree/v1.37.0) + +### Changed +- github.com/Azure/azure-kusto-go: [v0.10.2 → v0.11.3](https://github.com/Azure/azure-kusto-go/compare/v0.10.2...v0.11.3) +- github.com/Azure/azure-sdk-for-go/sdk/azcore: [v1.2.0 → v1.3.0](https://github.com/Azure/azure-sdk-for-go/sdk/azcore/compare/v1.2.0...v1.3.0) +- github.com/Azure/azure-sdk-for-go/sdk/storage/azblob: [v0.6.1 → v1.0.0](https://github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/compare/v0.6.1...v1.0.0) +- github.com/Azure/go-autorest/autorest: [v0.11.28 → v0.11.29](https://github.com/Azure/go-autorest/autorest/compare/v0.11.28...v0.11.29) +- github.com/coreos/go-systemd/v22: [v22.3.2 → v22.4.0](https://github.com/coreos/go-systemd/v22/compare/v22.3.2...v22.4.0) +- github.com/creack/pty: [v1.1.11 → v1.1.18](https://github.com/creack/pty/compare/v1.1.11...v1.1.18) +- github.com/go-openapi/jsonpointer: [v0.19.5 → v0.19.6](https://github.com/go-openapi/jsonpointer/compare/v0.19.5...v0.19.6) +- github.com/go-openapi/jsonreference: [v0.20.0 → v0.20.1](https://github.com/go-openapi/jsonreference/compare/v0.20.0...v0.20.1) +- github.com/go-openapi/swag: [v0.19.14 → v0.22.3](https://github.com/go-openapi/swag/compare/v0.19.14...v0.22.3) +- github.com/go-task/slim-sprig: [348f09d → 52ccab3](https://github.com/go-task/slim-sprig/compare/348f09d...52ccab3) +- github.com/golang/protobuf: [v1.5.2 → v1.5.3](https://github.com/golang/protobuf/compare/v1.5.2...v1.5.3) +- github.com/google/pprof: [94a9f03 → 4bb14d4](https://github.com/google/pprof/compare/94a9f03...4bb14d4) +- github.com/ianlancetaylor/demangle: [5e5cf60 → 28f6c0f](https://github.com/ianlancetaylor/demangle/compare/5e5cf60...28f6c0f) +- github.com/kr/pretty: [v0.2.0 → v0.3.0](https://github.com/kr/pretty/compare/v0.2.0...v0.3.0) +- github.com/mailru/easyjson: [v0.7.6 → v0.7.7](https://github.com/mailru/easyjson/compare/v0.7.6...v0.7.7) +- github.com/mitchellh/mapstructure: [v1.1.2 → v1.4.1](https://github.com/mitchellh/mapstructure/compare/v1.1.2...v1.4.1) +- github.com/moby/term: [39b0c02 → 1aeaba8](https://github.com/moby/term/compare/39b0c02...1aeaba8) +- github.com/onsi/ginkgo/v2: [v2.8.1 → v2.9.2](https://github.com/onsi/ginkgo/v2/compare/v2.8.1...v2.9.2) +- github.com/onsi/gomega: [v1.27.1 → v1.27.6](https://github.com/onsi/gomega/compare/v1.27.1...v1.27.6) +- github.com/rogpeppe/go-internal: [v1.3.0 → v1.10.0](https://github.com/rogpeppe/go-internal/compare/v1.3.0...v1.10.0) +- github.com/sirupsen/logrus: [v1.8.1 → v1.9.0](https://github.com/sirupsen/logrus/compare/v1.8.1...v1.9.0) +- github.com/tmc/grpc-websocket-proxy: [e5319fd → 673ab2c](https://github.com/tmc/grpc-websocket-proxy/compare/e5319fd...673ab2c) +- go.etcd.io/etcd/api/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/client/pkg/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/client/v2: v2.305.5 → v2.305.7 +- go.etcd.io/etcd/client/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/pkg/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/raft/v3: v3.5.5 → v3.5.7 +- go.etcd.io/etcd/server/v3: v3.5.5 → v3.5.7 +- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp: v0.35.0 → v0.35.1 +- go.uber.org/goleak: v1.2.0 → v1.2.1 +- golang.org/x/exp: 6cc2880 → bbda1ea +- golang.org/x/lint: 6edffad → 738671d +- golang.org/x/mod: v0.8.0 → v0.9.0 +- golang.org/x/tools: v0.6.0 → v0.7.0 +- golang.org/x/xerrors: 5ec99f8 → 04be3eb +- google.golang.org/grpc: v1.49.0 → v1.51.0 +- gopkg.in/check.v1: 8fa4692 → 10cb982 +- gopkg.in/square/go-jose.v2: v2.2.2 → v2.6.0 +- k8s.io/api: v0.26.3 → v0.27.1 +- k8s.io/apimachinery: v0.26.3 → v0.27.1 +- k8s.io/apiserver: v0.26.3 → v0.27.1 +- k8s.io/client-go: v0.26.3 → v0.27.1 +- k8s.io/cloud-provider: v0.26.3 → v0.27.1 +- k8s.io/component-base: v0.26.3 → v0.27.1 +- k8s.io/component-helpers: v0.26.3 → v0.27.1 +- k8s.io/controller-manager: v0.26.3 → v0.27.1 +- k8s.io/kms: v0.26.3 → v0.27.1 +- k8s.io/kube-openapi: 172d655 → 15aac26 +- k8s.io/kubelet: v0.26.3 → v0.27.1 +- k8s.io/utils: 99ec85e → a36077c +- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.36 → v0.1.1 +- sigs.k8s.io/json: f223a00 → bc3834c + +### Removed +- github.com/PuerkitoBio/purell: [v1.1.1](https://github.com/PuerkitoBio/purell/tree/v1.1.1) +- github.com/PuerkitoBio/urlesc: [de5bf2a](https://github.com/PuerkitoBio/urlesc/tree/de5bf2a) +- github.com/elazarl/goproxy: [947c36d](https://github.com/elazarl/goproxy/tree/947c36d) +- github.com/form3tech-oss/jwt-go: [v3.2.3+incompatible](https://github.com/form3tech-oss/jwt-go/tree/v3.2.3) +- github.com/niemeyer/pretty: [a10e7ca](https://github.com/niemeyer/pretty/tree/a10e7ca) +- gotest.tools/v3: v3.0.3 diff --git a/content/en/blog/releases/v1.27.3.md b/content/en/blog/releases/v1.27.3.md new file mode 100644 index 0000000000..c18d94d2f4 --- /dev/null +++ b/content/en/blog/releases/v1.27.3.md @@ -0,0 +1,32 @@ +--- +title: v1.27.3 +linkTitle: v1.27.3 +date: 2023-05-18 +description: Cloud Provider Azure v1.27.3 +--- +Full Changelog: [v1.27.2..v1.27.3](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.27.2...v1.27.3) + +## Changes by Kind + +### Bug or Regression + +- Fix: the pip without tags should be user-assigned + fix: refresh the pip cache when necessary + fix: do not tag user-assigned pip with `kubernetes-dns-label-service: ` ([#3889](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3889), [@nilo19](https://github.com/nilo19)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.9.2 → v2.9.5](https://github.com/onsi/ginkgo/v2/compare/v2.9.2...v2.9.5) +- golang.org/x/crypto: v0.8.0 → v0.9.0 +- golang.org/x/mod: v0.9.0 → v0.10.0 +- golang.org/x/net: v0.9.0 → v0.10.0 +- golang.org/x/sys: v0.7.0 → v0.8.0 +- golang.org/x/term: v0.7.0 → v0.8.0 +- golang.org/x/tools: v0.7.0 → v0.9.1 + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.27.4.md b/content/en/blog/releases/v1.27.4.md new file mode 100644 index 0000000000..34c7f354dc --- /dev/null +++ b/content/en/blog/releases/v1.27.4.md @@ -0,0 +1,33 @@ +--- +title: v1.27.4 +linkTitle: v1.27.4 +date: 2023-05-25 +description: Cloud Provider Azure v1.27.4 +--- +Full Changelog: [v1.27.3..v1.27.4](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.27.3...v1.27.4) + +## Changes by Kind + +### Feature + +- Apply the custom probe configs when externalTrafficPolicy is local and PLSProxyProtocol is enabled. ([#3945](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3945), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Bug or Regression + +- Fix: make sure the pip dns tag will not be removed when systemTags is set ([#3961](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3961), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) +- [IPv6] backend pool name should be case-insensitive ([#3938](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3938), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +### Other (Cleanup or Flake) + +- [Log] Print Service name and resource basename in ReconcileService(). Adding such log shows relation between Service name and its related resource name (Frontend IP config, etc.). It helps debugging. ([#3964](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3964), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/stretchr/testify: [v1.8.2 → v1.8.3](https://github.com/stretchr/testify/compare/v1.8.2...v1.8.3) + +### Removed +_Nothing has changed._ diff --git a/content/en/blog/releases/v1.27.5.md b/content/en/blog/releases/v1.27.5.md new file mode 100644 index 0000000000..11caee2529 --- /dev/null +++ b/content/en/blog/releases/v1.27.5.md @@ -0,0 +1,28 @@ +--- +title: v1.27.5 +linkTitle: v1.27.5 +date: 2023-06-07 +description: Cloud Provider Azure v1.27.5 +--- +Full Changelog: [v1.27.4..v1.27.5](https://github.com/kubernetes-sigs/cloud-provider-azure/compare/v1.27.4...v1.27.5) + +## Changes by Kind + +### Feature + +- Feat: Support migrate from NIC-based to IP-based backend pool by migration API by setting `"enableMigrateToIpBasedBackendPoolAPI": true`. By using this API, there will be no downtime during the migration. ([#4042](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/4042), [@nilo19](https://github.com/nilo19)) + +### Other (Cleanup or Flake) + +- The deprecated beta topology labels are no longer applied by default, to maintain the legacy behaviour use `--deprecated-apply-beta-topology-labels` ([#4041](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/4041), [@k8s-infra-cherrypick-robot](https://github.com/k8s-infra-cherrypick-robot)) + +## Dependencies + +### Added +_Nothing has changed._ + +### Changed +- github.com/onsi/ginkgo/v2: [v2.9.5 → v2.9.7](https://github.com/onsi/ginkgo/v2/compare/v2.9.5...v2.9.7) + +### Removed +_Nothing has changed._ diff --git a/content/en/contribute/CONTRIBUTING.md b/content/en/contribute/CONTRIBUTING.md new file mode 100644 index 0000000000..4377ecb18e --- /dev/null +++ b/content/en/contribute/CONTRIBUTING.md @@ -0,0 +1,16 @@ +--- +title: "Contributing" +linkTitle: "Contributing" +type: docs +weight: 1 +description: > + Developer guidance. +--- + +Thanks for taking the time to join our community and start contributing! + +The [Contributor Guide](https://github.com/kubernetes/community/blob/master/contributors/guide/README.md) +provides detailed instructions on how to get your ideas and bug fixes seen and accepted. + +Please remember to sign the [CNCF CLA](https://github.com/kubernetes/community/blob/master/CLA.md) and +read and observe the [Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). diff --git a/content/en/contribute/_index.md b/content/en/contribute/_index.md new file mode 100644 index 0000000000..e84902683d --- /dev/null +++ b/content/en/contribute/_index.md @@ -0,0 +1,8 @@ +--- +title: Contribution +linkTitle: Contribution +type: docs +menu: + main: + weight: 4 +--- diff --git a/content/en/contribute/issues-and-pull-requests-migration.md b/content/en/contribute/issues-and-pull-requests-migration.md new file mode 100644 index 0000000000..04f470570e --- /dev/null +++ b/content/en/contribute/issues-and-pull-requests-migration.md @@ -0,0 +1,59 @@ +--- +title: "Issues and pull requests migration" +linkTitle: "Issues and PRs" +type: docs +weight: 2 +description: > + Developer guidance for how to contribute using issues and PRs. +--- + +*NOTE* This page only applies after Azure cloud provider implementation code has been moved to this repository. + + +There are some ongoing issues and pull requests addressing the Azure cloud provider in Kubernetes repository. + +When we turned to use the standalone cloud provider in this repository, those issues and pull requests should also be moved. + +Here are some notes for issues and pull requests migration. + +## Issue migration + +If issue applies only to Azure cloud provider, please close it and create a new one in this repository. + +If issue also involves other component, leave it there, but do create a new issue in this repository to track counterpater in Azure cloud provider. + +In both cases, leave a link to the new created issue in the old issue. + +## Pull request migration + +Basically we have migrated code from `k8s.io/legacy-cloud-providers/azure/` to `github.com/sigs.k8s.io/cloud-provider-azure/pkg/provider`. + +The following steps describe how to port an existing PR from kubernetes repository to this repository. + +1. Generate pull request patch + +In your kubernetes repository, run following to generate a patch for your PR. +- PR_ID: Pull Request ID in kubernetes repository +- UPSTREAM_BRANCH: Branch name pointing to upstream, basically the branch with url `https://github.com/kubernetes/kubernetes.git` or `https://k8s.io/kubernetes` + +```shell script +PR_ID= +UPSTREAM_BRANCH=origin +PR_BRANCH_LOCAL=PR$PR_ID + +git fetch $UPSTREAM_BRANCH pull/$PR_ID/head:$PR_BRANCH_LOCAL +MERGE_BASE=$(git merge-base $UPSTREAM_BRANCH/master $PR_BRANCH_LOCAL) +PATCH_FILE=/tmp/${PR_ID}.patch +git diff $MERGE_BASE $PR_BRANCH_LOCAL > $PATCH_FILE +git branch -D $PR_BRANCH_LOCAL +``` + +2. Transform the patch and apply + +Switch to kubernetes-azure-cloud-controller-manager repo. +Apply the patch: +``` +hack/transform-patch.pl $PATCH_FILE | git apply +``` + +If any of file in the patch does not fall under Azure cloud provider directory, the transform script will prompt a warning. diff --git a/content/en/contribute/release-versioning.md b/content/en/contribute/release-versioning.md new file mode 100644 index 0000000000..6a94bffc98 --- /dev/null +++ b/content/en/contribute/release-versioning.md @@ -0,0 +1,76 @@ +--- +title: "Release Versioning" +linkTitle: "Release Versioning" +type: docs +weight: 3 +description: > + Introduce rules related to release. +--- + +## Release source +There are two major code change sources for this project, either may push forward a new release for `Kubernetes azure-cloud-controller-manager`: +1. Changes in [Kubernetes cloud-controller-manager](https://kubernetes.io/docs/concepts/overview/components/#cloud-controller-manager), which happens in [Kubernetes repository](https://github.com/kubernetes/kubernetes) + Since this project dependes on `Kubernetes cloud-controller-manager`, we'll periodically sync changes from Kubernetes upstream repository. When upstream shipped a new release tag, we may consider publishing a new release + +2. Changes in [Azure cloud provider](https://github.com/kubernetes-sigs/cloud-provider-azure), which happens directly in this repository + Azure cloud provider also accepts new features and bug changes. In cases when a security fix is required or when the changes accumulated to certain amount, we may also consider publishing a new release, even if there is no change from Kubernetes upstream. + +## Versioning +This project is a Kubernetes component whereas the functionalities and APIs all go with Kubernetes upstream project, thus we will use same versioning mechanism of Kubernetes, with some subtle differences for `Azure cloud provider` and non-Kubernetes changes. + +The basic rule is: +1. Every release version follows `Semantic Versioning`, in the form of `MAJOR.MINOR.PATCH` +2. For `MAJOR.MINOR`, it keeps same value as the Kubernetes upstream +3. For `PATCH`, it is calculated independently: + - If upstream Kubernetes has a new a [patch release](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/release/versioning.md#patch-releases), which introduces change in `cloud-controller-manager` or any component we depend on, then sync the change and increase the `PATCH` number. + - If any code change happens in [Azure cloud provider](https://github.com/kubernetes-sigs/cloud-provider-azure) or other dependency projects, which becomes eligible for a new release, then increase the `PATCH` number. + +References: +- [Kubernetes Release Versioning](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/release/versioning.md) +- [Semantic Versioning](http://semver.org/) + +### Branch and version scheme +This project uses golang's vendoring mechanism for managing dependencies (see [Dependency management](../../development/dependencies) for detail). When talking about 'sync from Kubernetes upstream', it actually means vendoring Kubernetes repository code under the vendor directory. + +During each sync from upstream, it is usually fine to sync to latest commit. But if there is a new tagged commit in upstream that we haven't vendored, we should sync to that tagged commit first, and apply a version tag correspondingly if applicable. The version tag mechanism is a bit different on master branch and releasing branch, please see below for detail. + +The upstream syncing change should be made in a single Pull Request. If in some case, the upstream change causes a test break, then the pull requests should not be merged until follow up fix commits are added. + +For example, if upstream change adds a new cloud provider interface, syncing the upstream change may raise a test break, and we should add the implementation (even no-op) in same pull request. + +#### master branch +This is the main development branch for merging pull requests. When upgrading dependencies, it will sync from Kubernetes upstream's `master` branch. + +Fixes to releasing branches should be merged in master branch first, and then ported to corresponding release branch. + +Version tags: +- X.Y.0-alpha.0 + - This is initial tag for a new release, it will be applied when a release branch is created. See below for detail +- X.Y.0-alpha.W, W > 0 + - Those version tags are periodically created if enough change accumulated. It does not have direct mapping with `X.Y.0-alpha.W` in Kubernetes upstream + +#### releasing branch +For release `X.Y`, the branch will have name `release-X.Y`. When upgrading dependencies, it will sync with Kubernetes upstream's `release-X.Y` branch. +Release branch would be created when upstream release branch is created and first `X.Y.0-beta.0` tag is applied. + +Version tags: +- X.Y.0-beta.0 + - `X.Y.0-beta.0` would be tagged at first independent commit on release branch, the corresponding separation point commit on master would be tagged `X.Y+1.0-alpha.0` + - No new feature changes are allowed from this time on +- X.Y.0-beta.W, W > 0 + - Those version tags are periodically created if enough change accumulated. It does not have direct mapping with `X.Y.0-beta.W` in Kubernetes upstream +- X.Y.0 + - This is the final release version. When upstream `X.Y.0` tag rolls out, we will begin prepare `X.Y.0` release + - After merging upstream `X.Y.0` tag commit, we will run full test cycle to ensure the `Azure cloud provider` works well before release: + - If any test fails, prepare fixes first. If the fix also applies to master branch, then also apply it to master. + - Rerun full test cycle till all tests got passed stablely + - Finally, apply `X.Y.0` to latest commit of releasing branch + - X.Y.1-beta.0 will be tagged at the same commit +- X.Y.Z, Z > 0 + - Those version tags are periodically created if enough change accumulated. It does not have direct mapping with `X.Y.Z` in Kubernetes upstream + - Testing and release process follows same rule as `X.Y.0` + +### CI and dev version scheme +We use [git-describe](https://git-scm.com/docs/git-describe) as versioning source, please check [version](https://github.com/kubernetes-sigs/cloud-provider-azure/tree/master/pkg/version) for detail. + +In this case, for commits that does not have a certain tag, the result version would be something like 'v0.1.0-alpha.0-25-gd7999d10'. diff --git a/content/en/contribute/security.md b/content/en/contribute/security.md new file mode 100644 index 0000000000..30bbdf1cc7 --- /dev/null +++ b/content/en/contribute/security.md @@ -0,0 +1,29 @@ +--- +title: "Security Policy" +linkTitle: "Security Policy" +type: docs +weight: 4 +description: > + Security Policies. +--- + +## Security Announcements + +Join the [kubernetes-security-announce] group for security and vulnerability announcements. + +You can also subscribe to an RSS feed of the above using [this link][kubernetes-security-announce-rss]. + +## Reporting a Vulnerability + +Instructions for reporting a vulnerability can be found on the +[Kubernetes Security and Disclosure Information] page. + +## Supported Versions + +Information about supported Kubernetes versions can be found on the +[Kubernetes version and version skew support policy] page on the Kubernetes website. + +[kubernetes-security-announce]: https://groups.google.com/forum/#!forum/kubernetes-security-announce +[kubernetes-security-announce-rss]: https://groups.google.com/forum/feed/kubernetes-security-announce/msgs/rss_v2_0.xml?num=50 +[Kubernetes version and version skew support policy]: https://kubernetes.io/docs/setup/release/version-skew-policy/#supported-versions +[Kubernetes Security and Disclosure Information]: https://kubernetes.io/docs/reference/issues-security/security/#report-a-vulnerability diff --git a/content/en/development/_index.md b/content/en/development/_index.md new file mode 100644 index 0000000000..c0785f06fe --- /dev/null +++ b/content/en/development/_index.md @@ -0,0 +1,8 @@ +--- +title: Development Guide +linkTitle: Development +type: docs +menu: + main: + weight: 2 +--- diff --git a/content/en/development/custom-images.md b/content/en/development/custom-images.md new file mode 100644 index 0000000000..d2da8c2301 --- /dev/null +++ b/content/en/development/custom-images.md @@ -0,0 +1,26 @@ +--- +title: "Deploy with Customized Images" +linkTitle: "Custom Images" +type: docs +weight: 1 +description: > + Deploy a cluster with customized CCM or CNM images. +--- + +Switch to the project root directory and run the following command to build both CCM and CNM images: + +```sh +make image +``` + +If you want to build only one of them, try `make build-ccm-image` or `ARCH=amd64 make build-node-image-linux`. + +To push the images to your own image registry, you can specify the registry and image tag while building: + +```sh +IMAGE_REGISTRY= IMAGE_TAG= make image +``` + +After building, you can push them to your image registry by `make push`. + +Please follow [here](http://kubernetes-sigs.github.io/cloud-provider-azure/development/image-building/) to build multi-arch image \ No newline at end of file diff --git a/content/en/development/dependencies.md b/content/en/development/dependencies.md new file mode 100644 index 0000000000..7ce5e61e06 --- /dev/null +++ b/content/en/development/dependencies.md @@ -0,0 +1,69 @@ +--- +title: "Dependency Management" +linkTitle: "Dependency Management" +type: docs +weight: 2 +description: > + Manage Cloud Provider Azure dependencies using go modules. +--- + +cloud-provider-azure uses [go modules] for Go dependency management. + +## Usage + +Run `make update-dependencies` whenever vendored dependencies change. +This takes a minute to complete. + +Run `make update-mocks` whenever implementations for pkg/azureclients change. + +### Updating dependencies + +New dependencies causes golang to recompute the minor version used for each major version of each dependency. And +golang automatically removes dependencies that nothing imports any more. + +To upgrade to the latest version for all direct and indirect dependencies of the current module: + +* run `go get -u ` to use the latest minor or patch releases +* run `go get -u=patch ` to use the latest patch releases +* run `go get @VERSION` to use the specified version + +You can also manually editing `go.mod` and update the versions in `require` and `replace` parts. + +Because of staging in Kubernetes, manually `go.mod` updating is required for Kubernetes and +its staging packages. In cloud-provider-azure, their versions are set in `replace` part, e.g. + +```go.mod +replace ( + ... + k8s.io/kubernetes => k8s.io/kubernetes v0.0.0-20190815230911-4e7fd98763aa +) +``` + +To update their versions, you need switch to `$GOPATH/src/k8s.io/kubernetes`, checkout to +the version you want upgrade to, and finally run the following commands to get the go modules expected version: + +```sh +commit=$(TZ=UTC git --no-pager show --quiet --abbrev=12 --date='format-local:%Y%m%d%H%M%S' --format="%cd-%h") +echo "v0.0.0-$commit" +``` + +After this, replace all kubernetes and staging versions (e.g. `v0.0.0-20190815230911-4e7fd98763aa` in above example) in `go.mod`. + +Always run `hack/update-dependencies.sh` after changing `go.mod` by any of these methods (or adding new imports). + +See golang's [go.mod], [Using Go Modules] and [Kubernetes Go modules] docs for more details. + + +[go.mod]: https://github.com/golang/go/wiki/Modules#gomod +[go modules]: https://github.com/golang/go/wiki/Modules +[`hack/update-dependencies.sh`]: https://github.com/kubernetes-sigs/cloud-provider-azure/blob/master/hack/update-dependencies.sh +[Using Go Modules]: https://blog.golang.org/using-go-modules +[Kubernetes Go modules]: https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/2019-03-19-go-modules.md + +### Updating mocks + +mockgen v1.6.0 is used to generate mocks. + +```sh +mockgen -copyright_file= -source= -package= +``` diff --git a/content/en/development/deploy-cluster.md b/content/en/development/deploy-cluster.md new file mode 100644 index 0000000000..f2c382aab6 --- /dev/null +++ b/content/en/development/deploy-cluster.md @@ -0,0 +1,46 @@ +--- +title: "Deploy clusters" +linkTitle: "Deploy clusters" +type: docs +weight: 4 +description: > + Deploy Kubernetes clusters +--- + +## Cluster API Provider Azure (CAPZ) + +Please run the following command in the root directory of the repo. + +```shell +make deploy-cluster +``` + +Customizations are supported by environment variables: + +| Environment variables | required | description | default | +|-----------------------------------------|----------|------------------------------------------------------------------------------------|-------------------------------------------------------------------------| +| AZURE_SUBSCRIPTION_ID | true | subscription ID | | +| AZURE_TENANT_ID | true | tenant ID | | +| AZURE_CLIENT_ID | true | client ID with permission | | +| AZURE_CLIENT_SECRET | true | client secret | | +| CLUSTER_NAME | true | name of the cluster | | +| AZURE_RESOURCE_GROUP | true | name of the resource group to be deployed (auto generated if not existed) | | +| MANAGEMENT_CLUSTER_NAME | false | name of the kind management cluster | capi | +| WORKLOAD_CLUSTER_TEMPLATE | false | path to the cluster-api template | tests/k8s-azure-manifest/cluster-api/vmss-multi-nodepool.yaml | +| CUSTOMIZED_CLOUD_CONFIG_TEMPLATE | false | customized cloud provider configs | | +| AZURE_CLUSTER_IDENTITY_SECRET_NAME | false | name of the cluster identity secret | cluster-identity-secret | +| AZURE_CLUSTER_IDENTITY_SECRET_NAMESPACE | false | namespace of the cluster identity secret | default | +| CLUSTER_IDENTITY_NAME | false | name of the AzureClusterIdentity CRD | cluster-identity | +| CONTROL_PLANE_MACHINE_COUNT | false | number of the control plane nodes | 1 | +| WORKER_MACHINE_COUNT | false | number of the worker nodes | 2 | +| AZURE_CONTROL_PLANE_MACHINE_TYPE | false | VM SKU of the control plane nodes | Standard_D4s_v3 | +| AZURE_NODE_MACHINE_TYPE | false | VM SKU of the worker nodes | Standard_D2s_v3 | +| AZURE_LOCATION | false | region of the cluster resources | westus2 | +| AZURE_CLOUD_CONTROLLER_MANAGER_IMG | false | image of the cloud-controller-manager | mcr.microsoft.com/oss/kubernetes/azure-cloud-controller-manager:v1.23.1 | +| AZURE_CLOUD_NODE_MANAGER_IMG | false | image of the cloud-node-manager | mcr.microsoft.com/oss/kubernetes/azure-cloud-node-manager:v1.23.1 | +| KUBERNETES_VERSION | false | Kubernetes components version | v1.25.0 | +| AZURE_LOADBALANCER_SKU | false | LoadBalancer SKU, Standard or Basic | Standard | +| LB_BACKEND_POOL_CONFIG_TYPE | false | LoadBalancer backend pool configuration type, nodeIPConfiguration, nodeIP or podIP | nodeIPConfiguration | +| PUT_VMSS_VM_BATCH_SIZE | false | Batch size when updating VMSS VM concurrently | 0 | +| AZURE_SSH_PUBLIC_KEY | false | SSH public key to connecet to the VMs | "" | + diff --git a/content/en/development/design-docs/_index.md b/content/en/development/design-docs/_index.md new file mode 100644 index 0000000000..39dea8023c --- /dev/null +++ b/content/en/development/design-docs/_index.md @@ -0,0 +1,11 @@ +--- +title: "Design Docs and KEPs" +linkTitle: "Design Docs" +type: docs +weight: 4 +description: > + Design Docs and KEPs related to this project. +--- + +This is the staging area of the design docs prior to or under development. Once the feature is done, the corresponding +design doc would be moved to [Topics](../../topics). diff --git a/content/en/development/design-docs/pls-integration.md b/content/en/development/design-docs/pls-integration.md new file mode 100644 index 0000000000..13eef32833 --- /dev/null +++ b/content/en/development/design-docs/pls-integration.md @@ -0,0 +1,9 @@ +--- +title: "Azure Private Link Service Integration" +linkTitle: "Azure Private Link Service Integration" +type: docs +description: > + Azure PLS Integration Design Document. +--- + +This feature is now in public preview. The page has been moved to ([topics](../../../topics/pls-integration)). \ No newline at end of file diff --git a/content/en/development/e2e/_index.md b/content/en/development/e2e/_index.md new file mode 100644 index 0000000000..be1d6cfaa4 --- /dev/null +++ b/content/en/development/e2e/_index.md @@ -0,0 +1,8 @@ +--- +title: "E2E tests" +linkTitle: "E2E tests" +type: docs +weight: 3 +description: > + E2E tests guidance. +--- diff --git a/content/en/development/e2e/e2e-tests-azure.md b/content/en/development/e2e/e2e-tests-azure.md new file mode 100644 index 0000000000..0ac00d4dcd --- /dev/null +++ b/content/en/development/e2e/e2e-tests-azure.md @@ -0,0 +1,52 @@ +--- +title: "Azure E2E tests" +linkTitle: "Azure E2E tests" +type: docs +description: > + Azure E2E tests guidance. +--- + +## Overview + +Here provides some E2E tests only specific to Azure provider. + +## Prerequisite + +### Deploy a Kubernetes cluster with Azure CCM + +Refer step 1-3 in [e2e-tests](../e2e-tests) for deploying the Kubernetes cluster. + +### Setup Azure credentials + +```sh +export AZURE_TENANT_ID= # the tenant ID +export AZURE_SUBSCRIPTION_ID= # the subscription ID +export AZURE_CLIENT_ID= # the service principal ID +export AZURE_CLIENT_SECRET= # the service principal secret +export AZURE_ENVIRONMENT= # the cloud environment (optional, default is AzurePublicCloud) +export AZURE_LOCATION= # the location +export AZURE_LOADBALANCER_SKU= # the sku of load balancer (optional, default is basic) +``` + +### Setup KUBECONFIG + +- Locate your kubeconfig and set it as env variable + ```export KUBECONFIG=``` + or + ```cp ~/.kube/config``` + +- Test it via ```kubectl version``` + +## Run tests + +- Run default tests + + The following command ensures [gingko](https://github.com/onsi/ginkgo) v2 is installed and then runs default tests. + + ``` make test-ccm-e2e ``` + +- Run specific tests + + ``` go test -v ./tests/e2e/ -timeout 0 -ginkgo.focus --ginkgo.skip ``` + +After a long time test, a JUnit report will be generated in a directory named by the cluster name diff --git a/content/en/development/e2e/e2e-tests.md b/content/en/development/e2e/e2e-tests.md new file mode 100644 index 0000000000..ec67701e3a --- /dev/null +++ b/content/en/development/e2e/e2e-tests.md @@ -0,0 +1,78 @@ +--- +title: "Kubernetes E2E tests" +linkTitle: "Kubernetes E2E tests" +type: docs +description: > + Kubernetes E2E tests guidance. +--- + +## Prerequisite + +- An azure service principal + + Please follow this [guide](https://github.com/kubernetes-sigs/cluster-api-provider-azure/blob/main/docs/book/src/topics/getting-started.md#setting-up-your-azure-environment) for creating an azure service principal + The service principal should either have: + - Contributor permission of a subscription + - Contributor permission of a resource group. In this case, please create the resource group first + +- Docker daemon enabled + +## How to run Kubernetes e2e tests locally + +1. Prepare dependency project + +- [kubectl](https://kubectl.docs.kubernetes.io/) + + Kubectl allows you to run command against Kubernetes cluster, which is also used for deploying CSI plugins. You can follow [here](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-binary-with-curl) to install kubectl. e.g. on Linux + + ```sh + curl -LO https://dl.k8s.io/release/$(curl -sL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl + chmod +x kubectl + sudo mv kubectl /usr/local/bin/ + ``` + +2. Build docker images `azure-cloud-controller-manager`, `azure-cloud-node-manager` and push them to your image repository. + + ```sh + git clone https://github.com/kubernetes-sigs/cloud-provider-azure $GOPATH/src/sigs.k8s.io/cloud-provider-azure + cd $GOPATH/src/sigs.k8s.io/cloud-provider-azure + export IMAGE_REGISTRY= + export IMAGE_TAG= + make image # build all images of different ARCHs and OSes + make push # push all images of different ARCHs and OSes to your registry. Or manually `docker push` + ``` + +3. Deploy a Kubernetes cluster with the above `azure-cloud-controller-manager` and `azure-cloud-node-manager` images. + + To deploy a cluster, export all the required environmental variables first and then invoke `make deploy-cluster`. + Please notice that [cluster-api-provider-azure](https://github.com/kubernetes-sigs/cluster-api-provider-azure) is + used to provision the management and workload clusters. To learn more about this provisioner, you can refer to + its [quick-start](https://cluster-api.sigs.k8s.io/user/quick-start.html) doc. + + ```sh + export AZURE_SUBSCRIPTION_ID= + export AZURE_TENANT_ID= + export AZURE_CLIENT_ID= + export AZURE_CLIENT_SECRET= + export CLUSTER_NAME= + export AZURE_RESOURCE_GROUP= + export AZURE_CLOUD_CONTROLLER_MANAGER_IMG= + export AZURE_CLOUD_NODE_MANAGER_IMG= + + make deploy-cluster + ``` + + To connect the cluster: + + ```sh + export KUBECONFIG=$GOPATH/src/sigs.k8s.io/cloud-provider-azure/$CLUSTER_NAME-kubeconfig + kubectl cluster-info + ``` + + To check out more of the deployed cluster , replace `kubectl cluster-info` with other `kubectl` commands. To further debug and diagnose cluster problems, use `kubectl cluster-info dump` + +4. Run Kubernetes E2E tests + + ```sh + make test-e2e-capz + ``` diff --git a/content/en/development/future.md b/content/en/development/future.md new file mode 100644 index 0000000000..9ae9b15eb1 --- /dev/null +++ b/content/en/development/future.md @@ -0,0 +1,10 @@ +--- +title: "Future Plans" +linkTitle: "Future Plans" +type: docs +weight: 6 +description: > + Future Plans. +--- + +To be completed. diff --git a/content/en/development/image-building.md b/content/en/development/image-building.md new file mode 100644 index 0000000000..15fd76e1b2 --- /dev/null +++ b/content/en/development/image-building.md @@ -0,0 +1,40 @@ +--- +title: "Image building" +linkTitle: "Image building" +type: docs +weight: 5 +description: > + Image building. +--- + +## multi-arch image + +Currently, only Linux multi-arch cloud-node-manager image is supported as a result of customer requests and windows limitations. +Supported Linux archs are defined by `ALL_ARCH.linux` in Makefile, and Windows os versions are by `ALL_OSVERSIONS.windows`. + +### Windows multi-arch image limitation + +Images [nanoserver](https://hub.docker.com/_/microsoft-windows-nanoserver) and [servercore](https://hub.docker.com/_/microsoft-windows-servercore) are referenced to build a Windows image, but as current officially published servercore images does not support non-amd64 image, and only Windows server 1809 has the support of non-amd64 for nanoserver, amd64 is the only supported arch for a range of Windows OS version so far. +This issue is tracked [here](https://github.com/microsoft/Windows-Containers/issues/195) + +## hand-on examples + +To build and publish the multi-arch image for node manager + +```sh +IMAGE_REGISTRY= make build-all-node-images +IMAGE_REGISTRY= make push-multi-arch-node-manager-image +``` + +To build a specific Linux arch image for node manager + +```sh +IMAGE_REGISTRY= ARCH=amd64 make build-node-image-linux +``` + +To build specific Windows OS and arch image for node manager + +```sh +IMAGE_REGISTRY= OUTPUT_TYPE=registry ARCH=amd64 WINDOWS_OSVERSION=1809 build-node-image-windows +``` +The `OUTPUT_TYPE` registry here means the built image will be published to the registry, this is necessary to build a Windows image from a Linux working environment. An alternative is to export the image tarball to a local destination, like `OUTPUT_TYPE=docker,dest=dstdir/azure-cloud-node-manager.tar`. For more info about `docker buildx` output type, please check out [here](https://docs.docker.com/engine/reference/commandline/buildx_build/#output) \ No newline at end of file diff --git a/content/en/example/_index.md b/content/en/example/_index.md new file mode 100644 index 0000000000..fdd2015b88 --- /dev/null +++ b/content/en/example/_index.md @@ -0,0 +1,8 @@ +--- +title: Example +linkTitle: Example +type: docs +menu: + main: + weight: 5 +--- diff --git a/content/en/example/in-tree.md b/content/en/example/in-tree.md new file mode 100644 index 0000000000..47c772160b --- /dev/null +++ b/content/en/example/in-tree.md @@ -0,0 +1,23 @@ +--- +title: "Deploy with In-tree Cloud Provider Azure" +linkTitle: "In-tree" +type: docs +weight: 1 +description: > + Deploy a cluster with In-tree Cloud Provider Azure. +--- + +[cluster-api-provider-azure](https://github.com/kubernetes-sigs/cluster-api-provider-azure) can be used to +provision a Kubernetes cluster with in-tree cloud-provider-azure. + +```sh +export AZURE_SUBSCRIPTION_ID= +export AZURE_TENANT_ID= +export AZURE_CLIENT_ID= +export AZURE_CLIENT_SECRET= +export CLUSTER_NAME= +export AZURE_RESOURCE_GROUP= +export USE_IN_TREE_CLOUD_PROVIDER=true + +make deploy-cluster +``` diff --git a/content/en/example/out-of-tree.md b/content/en/example/out-of-tree.md new file mode 100644 index 0000000000..309031cd72 --- /dev/null +++ b/content/en/example/out-of-tree.md @@ -0,0 +1,25 @@ +--- +title: "Deploy with Out-of-tree Cloud Provider Azure" +linkTitle: "Out-of-tree" +type: docs +weight: 2 +description: > + Deploy a cluster with Out-of-tree Cloud Provider Azure. +--- + +[cluster-api-provider-azure](https://github.com/kubernetes-sigs/cluster-api-provider-azure) can be used to +provision a Kubernetes cluster with out-of-tree cloud-provider-azure, including specific cloud-controller-manager +and cloud-node-manager images. + +```sh +export AZURE_SUBSCRIPTION_ID= +export AZURE_TENANT_ID= +export AZURE_CLIENT_ID= +export AZURE_CLIENT_SECRET= +export CLUSTER_NAME= +export AZURE_RESOURCE_GROUP= +export AZURE_CLOUD_CONTROLLER_MANAGER_IMG= +export AZURE_CLOUD_NODE_MANAGER_IMG= + +make deploy-cluster +``` \ No newline at end of file diff --git a/content/en/install/_index.md b/content/en/install/_index.md new file mode 100644 index 0000000000..fb4f97ab4e --- /dev/null +++ b/content/en/install/_index.md @@ -0,0 +1,8 @@ +--- +title: Deploy Cloud Provider Azure +linkTitle: Installation +type: docs +menu: + main: + weight: 1 +--- diff --git a/content/en/install/azure-ccm.md b/content/en/install/azure-ccm.md new file mode 100644 index 0000000000..d59435d4ed --- /dev/null +++ b/content/en/install/azure-ccm.md @@ -0,0 +1,104 @@ +--- +title: "Deploy Cloud Controller Manager" +linkTitle: "Azure Cloud Controller Manager" +type: docs +weight: 2 +description: > + The configurations for using Azure Cloud Controller Manager. +--- + +`azure-cloud-controller-manager` is a Kubernetes component which provides interoperability with Azure API, and will be used by Kubernetes clusters running on Azure. It runs together with other components to provide the Kubernetes cluster’s control plane. + +Using [cloud-controller-manager](https://kubernetes.io/docs/concepts/overview/components/#cloud-controller-manager) is a new alpha feature for Kubernetes since v1.14. `cloud-controller-manager` runs cloud provider related controller loops, which used to be run by `controller-manager`. + +`azure-cloud-controller-manager` is a specialization of `cloud-controller-manager`. It depends on [cloud-controller-manager app](https://github.com/kubernetes/kubernetes/tree/master/cmd/cloud-controller-manager/app) and [azure cloud provider](https://github.com/kubernetes-sigs/cloud-provider-azure/tree/master/pkg/provider). + +## Deployment + +There is a [helm chart available](https://github.com/kubernetes-sigs/cloud-provider-azure/tree/master/helm/cloud-provider-azure) which can be used to deploy the Azure cloud controller manager. + +To deploy Azure cloud controller manager, the following components need to be configured. + +### kubelet + +|Flag|Value|Remark| +|----|-----|------| +|`--cloud-provider`|external|cloud-provider should be set external| +|`--azure-container-registry-config`|/etc/kubernetes/cloud-config/azure.json|Used for Azure credential provider| + +### kube-controller-manager + +|Flag|Value|Remark| +|---|---|---| +|`--cloud-provider`|external|cloud-provider should be set external| +|`--external-cloud-volume-plugin`|azure|Optional*| + +`*`: Since cloud controller manager does not support volume controllers, it will not provide volume capabilities compared to using previous built-in cloud provider case. You can add this flag to turn on volume controller for in-tree cloud providers. This option is likely to be [removed with in-tree cloud providers](https://github.com/kubernetes/kubernetes/blob/v1.11.0-alpha.2/cmd/kube-controller-manager/app/options/options.go#L93) in future. + +### kube-apiserver + +Do not set flag `--cloud-provider`. + +### azure-cloud-controller-manager + +azure-cloud-controller-manager should be run as Deployment with multiple replicas or Kubelet static Pods on each master Node. + +|Flag|Value|Remark| +|---|---|---| +|`--cloud-provider`|azure|cloud-provider should be set azure| +|`--cloud-config`|/etc/kubernetes/cloud-config/azure.json|Path for [cloud provider config](./configs.md)| +|`--controllers`|*,-cloud-node | cloud node controller should be disabled| +|`--configure-cloud-routes`| "false" for Azure CNI and "true" for other network plugins| Used for non-AzureCNI clusters | + +For other flags such as `--allocate-node-cidrs`, `--cluster-cidr` and `--cluster-name`, they are moved from kube-controller-manager. If you are migrating from kube-controller-manager, they should be set to same value. + +For details of those flags, please refer to this [doc](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/). + +### azure-cloud-node-manager + +azure-cloud-node-manager should be run as daemonsets on both Windows and Linux nodes, and the following configurations should be set: + +|Flag|Value|Remark| +|---|---|---| +|`--node-name`|The node name for the Pod|Kubernetes Downward API could be used to get Pod's name| +|`--wait-routes`| only set to true when `--configure-cloud-routes=true` in cloud-controller-manager | Used for non-AzureCNI clusters | + +Please refer examples [here](https://github.com/kubernetes-sigs/cloud-provider-azure/tree/master/examples/out-of-tree) for sample deployment manifests for above components. + +Alternatively, you can use [cluster-api-provider-azure](https://github.com/kubernetes-sigs/cluster-api-provider-azure) to deploy a Kubernetes cluster running with cloud-controller-manager. + +## AzureDisk and AzureFile + +AzureDisk and AzureFile volume plugins are not supported with in-tree cloud provider (See [kubernetes/kubernetes#71018](https://github.com/kubernetes/kubernetes/issues/71018) for explanations). + +Hence, [azuredisk-csi-driver](https://github.com/kubernetes-sigs/azuredisk-csi-driver) and [azurefile-csi-driver](https://github.com/kubernetes-sigs/azurefile-csi-driver) should be used for persistent volumes. Please refer the installation guides [here](https://github.com/kubernetes-sigs/azuredisk-csi-driver/tree/master/charts) and [here](https://github.com/kubernetes-sigs/azurefile-csi-driver/tree/master/charts) for their deployments. + +### Change default storage class + +Follow the steps below if you want change the current default storage class to AzureDisk CSI driver. + +First, delete the default storage class: + +```sh +kubectl delete storageclass default +``` + +Then create a new storage class named `default`: + +```sh +cat < + Deploy AzureDisk CSI driver to Cloud Provider Azure. +--- + +Azure disk Container Storage Interface (CSI) Storage Plugin is moved to . +Please check the github [link](https://github.com/kubernetes-sigs/azuredisk-csi-driver) for the documentation. diff --git a/content/en/install/azurefile.md b/content/en/install/azurefile.md new file mode 100644 index 0000000000..3a22730014 --- /dev/null +++ b/content/en/install/azurefile.md @@ -0,0 +1,11 @@ +--- +title: "Deploy AzureFile CSI Driver" +linkTitle: "AzureFile" +type: docs +weight: 4 +description: > + Deploy AzureFile CSI driver to Cloud Provider Azure. +--- + +Azure file Container Storage Interface (CSI) Storage Plugin is moved to . +Please check the github [link](https://github.com/kubernetes-sigs/azurefile-csi-driver) for the documentation. diff --git a/content/en/install/configs.md b/content/en/install/configs.md new file mode 100644 index 0000000000..0ef75aaac3 --- /dev/null +++ b/content/en/install/configs.md @@ -0,0 +1,328 @@ +--- +title: "Configure Cloud Provider" +linkTitle: "Configurations" +type: docs +weight: 1 +description: > + The configurations for Cloud Provider Azure. +--- + +This doc describes cloud provider config file, which is to be used via the `--cloud-config` flag of azure-cloud-controller-manager. + +Here is a config file sample: + +```json +{ + "cloud":"AzurePublicCloud", + "tenantId": "0000000-0000-0000-0000-000000000000", + "aadClientId": "0000000-0000-0000-0000-000000000000", + "aadClientSecret": "0000000-0000-0000-0000-000000000000", + "subscriptionId": "0000000-0000-0000-0000-000000000000", + "resourceGroup": "", + "location": "eastus", + "subnetName": "", + "securityGroupName": "", + "securityGroupResourceGroup": "", + "vnetName": "", + "vnetResourceGroup": "", + "routeTableName": "", + "primaryAvailabilitySetName": "", + "routeTableResourceGroup": "", + "cloudProviderBackoff": false, + "useManagedIdentityExtension": false, + "useInstanceMetadata": true +} +``` + +Note: All values are of type `string` if not explicitly called out. + +## Auth configs + +|Name|Description|Remark| +|---|---|---| +|cloud|The cloud environment identifier|Valid values could be found [here](https://github.com/Azure/go-autorest/blob/v9.9.0/autorest/azure/environments.go#L29). Default to `AzurePublicCloud`.| +|tenantID|The AAD Tenant ID for the Subscription that the cluster is deployed in|**Required**.| +|aadClientID|The ClientID for an AAD application with RBAC access to talk to Azure RM APIs|Used for service principal authn.| +|aadClientSecret|The ClientSecret for an AAD application with RBAC access to talk to Azure RM APIs|Used for service principal authn.| +|aadClientCertPath|The path of a client certificate for an AAD application with RBAC access to talk to Azure RM APIs|Used for client cert authn.| +|aadClientCertPassword|The password of the client certificate for an AAD application with RBAC access to talk to Azure RM APIs|Used for client cert authn.| +|useManagedIdentityExtension|Use managed service identity for the virtual machine to access Azure ARM APIs|Boolean type, default to false.| +|userAssignedIdentityID|The Client ID of the user assigned MSI which is assigned to the underlying VMs|Required for user-assigned managed identity.| +|subscriptionId|The ID of the Azure Subscription that the cluster is deployed in|**Required**.| +|identitySystem|The identity system for AzureStack. Supported values are: ADFS|Only used for AzureStack| +|networkResourceTenantID|The AAD Tenant ID for the Subscription that the network resources are deployed in|Optional. Supported since v1.18.0. Only used for hosting network resources in different AAD Tenant and Subscription than those for the cluster.| +|networkResourceSubscriptionID|The ID of the Azure Subscription that the network resources are deployed in|Optional. Supported since v1.18.0. Only used for hosting network resources in different AAD Tenant and Subscription than those for the cluster.| + +Note: Cloud provider currently supports three authentication methods, you can choose one combination of them: + +- [Managed Identity](https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/overview): + - For system-assigned managed identity: set `useManagedIdentityExtension` to true + - For user-assigned managed identity: set `useManagedIdentityExtension` to true and also set `userAssignedIdentityID` +- [Service Principal](https://github.com/kubernetes-sigs/cluster-api-provider-azure/blob/main/docs/book/src/topics/getting-started.md#setting-up-your-azure-environment): set `aadClientID` and `aadClientSecret` +- [Client Certificate](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service): set `aadClientCertPath` and `aadClientCertPassword` + +If more than one value is set, the order is `Managed Identity` > `Service Principal` > `Client Certificate`. + +## Cluster config + +| Name | Description | Remark | +|------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------| +| resourceGroup | The name of the resource group that the cluster is deployed in | | +| location | The location of the resource group that the cluster is deployed in | | +| vnetName | The name of the VNet that the cluster is deployed in | | +| vnetResourceGroup | The name of the resource group that the Vnet is deployed in | | +| subnetName | The name of the subnet that the cluster is deployed in | | +| securityGroupName | The name of the security group attached to the cluster's subnet | | +| securityGroupResourceGroup | The name of the resource group that the security group is deployed in | | +| routeTableName | The name of the route table attached to the subnet that the cluster is deployed in | Optional in 1.6 | +| primaryAvailabilitySetName[*](#primaryavailabilitysetname) | The name of the availability set that should be used as the load balancer backend | Optional | +| vmType | The type of azure nodes. Candidate values are: `vmss`, `vmssflex` and `standard` | Optional, default to `standard` | +| primaryScaleSetName[*](#primaryscalesetname) | The name of the scale set that should be used as the load balancer backend | Optional | +| cloudProviderBackoff | Enable exponential backoff to manage resource request retries | Boolean value, default to false | +| cloudProviderBackoffRetries | Backoff retry limit | Integer value, valid if `cloudProviderBackoff` is true | +| cloudProviderBackoffExponent | Backoff exponent | Float value, valid if `cloudProviderBackoff` is true | +| cloudProviderBackoffDuration | Backoff duration | Integer value, valid if `cloudProviderBackoff` is true | +| cloudProviderBackoffJitter | Backoff jitter | Float value, valid if `cloudProviderBackoff` is true | +| cloudProviderBackoffMode | Backoff mode, supported values are "v2" and "default". Note that "v2" has been deprecated since v1.18.0. | Default to "default" | +| cloudProviderRateLimit | Enable rate limiting | Boolean value, default to false | +| cloudProviderRateLimitQPS | Rate limit QPS (Read) | Float value, valid if `cloudProviderRateLimit` is true | +| cloudProviderRateLimitBucket | Rate limit Bucket Size | Integar value, valid if `cloudProviderRateLimit` is true | +| cloudProviderRateLimitQPSWrite | Rate limit QPS (Write) | Float value, valid if `cloudProviderRateLimit` is true | +| cloudProviderRateLimitBucketWrite | Rate limit Bucket Size | Integer value, valid if `cloudProviderRateLimit` is true | +| useInstanceMetadata | Use instance metadata service where possible | Boolean value, default to false | +| loadBalancerSku | Sku of Load Balancer and Public IP. Candidate values are: `basic` and `standard`. | Default to `basic`. | +| excludeMasterFromStandardLB | ExcludeMasterFromStandardLB excludes master nodes from standard load balancer. | Boolean value, default to true. | +| disableOutboundSNAT | Disable outbound SNAT for SLB | Default to false and available since v1.11.9, v1.12.7, v1.13.5 and v1.14.0 | +| maximumLoadBalancerRuleCount | Maximum allowed LoadBalancer Rule Count is the limit enforced by Azure Load balancer | Integer value, default to [148](https://github.com/kubernetes/kubernetes/blob/v1.10.0/pkg/cloudprovider/providers/azure/azure.go#L48) | +| routeTableResourceGroup | The resource group name for routeTable | Default same as resourceGroup and available since v1.15.0 | +| loadBalancerName | Working together with loadBalancerResourceGroup to determine the LB name in a different resource group | Since v1.18.0, default is cluster name setting on kube-controller-manager | +| loadBalancerResourceGroup | The load balancer resource group name, which is different from node resource group | Since v1.18.0, default is same as resourceGroup | +| disableAvailabilitySetNodes | Disable supporting for AvailabilitySet virtual machines in vmss cluster. It should only be used when vmType is "vmss" and all the nodes (including master) are VMSS Uniform virtual machines | Since v1.18.0, default is false | +| enableVmssFlexNodes | Enable supporting for VMSS Flex virtual machines in vmss cluster. It should only be used when vmType is "vmss" | Since v1.26.0, default is false | +| availabilitySetNodesCacheTTLInSeconds | Cache TTL in seconds for availabilitySet Nodes | Since v1.18.0, default is 900 | +| vmssCacheTTLInSeconds | Cache TTL in seconds for VMSS | Since v1.18.0, default is 600 | +| vmssVirtualMachinesCacheTTLInSeconds | Cache TTL in seconds for VMSS virtual machines | Since v1.18.0, default is 600 | +| vmCacheTTLInSeconds | Cache TTL in seconds for virtual machines | Since v1.18.0, default is 60 | +| loadBalancerCacheTTLInSeconds | Cache TTL in seconds for load balancers | Since v1.18.0, default is 120 | +| nsgCacheTTLInSeconds | Cache TTL in seconds for network security group | Since v1.18.0, default is 120 | +| routeTableCacheTTLInSeconds | Cache TTL in seconds for route table | Since v1.18.0, default is 120 | +| disableAzureStackCloud | DisableAzureStackCloud disables AzureStackCloud support. It should be used when setting Cloud with "AZURESTACKCLOUD" to customize ARM endpoints while the cluster is not running on AzureStack. Default is false. | Optional. Supported since v1.20.0 in out-of-tree cloud provider Azure. | +| tags | Tags that would be tagged onto the cloud provider managed resources, including lb, public IP, network security group and route table. | Optional. Supported since v1.20.0. | +| tagsMap | JSON-style tags, will be merged with `tags` | Optional. Supported since v1.23.0. | +| systemTags | Tag keys that should not be deleted when being updated. | Optional. Supported since v1.21.0. | +| loadBalancerBackendPoolConfigurationType | The type of the Load Balancer backend pool. Supported values are `nodeIPConfiguration` (default) and `nodeIP` | Optional. Supported since v1.23.0 | +| putVMSSVMBatchSize | The number of requests the client sends concurrently in a batch when putting the VMSS VMs. Anything smaller than or equal to 0 means to update VMSS VMs one by one in sequence. | Optional. Supported since v1.24.0. | +| enableMigrateToIPBasedBackendPoolAPI | Use the migration API to migrate from NIC-based to IP-based Load Balancer backend pools without downtime. | Optional. Supported since v1.24.0. | + +### primaryAvailabilitySetName + +If this is set, the Azure cloudprovider will only add nodes from that availability set to the load +balancer backend pool. If this is not set, and multiple agent pools (availability sets) are used, then +the cloudprovider will try to add all nodes to a single backend pool which is forbidden. +In other words, if you use multiple agent pools (availability sets), you MUST set this field. + +### primaryScaleSetName + +If this is set, the Azure cloudprovider will only add nodes from that scale set to the load +balancer backend pool. If this is not set, and multiple agent pools (scale sets) are used, then +the cloudprovider will try to add all nodes to a single backend pool which is forbidden when using Load Balancer Basic SKU. +In other words, if you use multiple agent pools (scale sets), and `loadBalancerSku` is set to `basic` you MUST set this field. + +### excludeMasterFromStandardLB + +Master nodes are not added to the backends of Azure Load Balancer (ALB) if `excludeMasterFromStandardLB` is set. + +By default, if nodes are labeled with `node-role.kubernetes.io/master`, they would also be excluded from ALB. If you want to add the master nodes to ALB, `excludeMasterFromStandardLB` should be set to false and label `node-role.kubernetes.io/master` should be removed if it has already been applied. + +### Dynamically reloading cloud controller manager + +Since v1.21.0, Azure cloud provider supports reading the cloud config from Kubernetes secrets. The secret is a serialized version of `azure.json` file. When the secret is changed, the cloud controller manager will re-constructing itself without restarting the pod. + +To enable this feature, set `--enable-dynamic-reloading=true` and configure the secret name, namespace and data key by `--cloud-config-secret-name`, `--cloud-config-secret-namespace` and `--cloud-config-key`. When initializing from secret, the `--cloud-config` should not be set. + +> Note that the `--enable-dynamic-reloading` cannot be `false` if `--cloud-config` is empty. To build the cloud provider from classic config file, please explicitly specify the `--cloud-config` and do not set `--enable-dynamic-reloading=true`. In this manner, the cloud controller manager will not be updated when the config file is changed. You need to restart the pod to manually trigger the re-initialization. + +Since Azure cloud provider would read Kubernetes secrets, the following RBAC should also be configured: + +```yaml +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + labels: + kubernetes.io/cluster-service: "true" + name: system:azure-cloud-provider-secret-getter +rules: +- apiGroups: [""] + resources: ["secrets"] + resourceNames: ["azure-cloud-provider"] + verbs: + - get +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + labels: + kubernetes.io/cluster-service: "true" + name: system:azure-cloud-provider-secret-getter +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:azure-cloud-provider-secret-getter +subjects: +- kind: ServiceAccount + name: azure-cloud-provider + namespace: kube-system +``` + +It is also supported to build the cloud controller manager from the cloud config file and reload dynamically. To use this way, turn on `--enable-dynamic-reloading` and set `--cloud-config` to an non-empty value. + +### per client rate limiting + +Since v1.18.0, the original global rate limiting has been switched to per-client. A set of new rate limit configure options are introduced for each client, which includes: + + +- routeRateLimit +- SubnetsRateLimit +- InterfaceRateLimit +- RouteTableRateLimit +- LoadBalancerRateLimit +- PublicIPAddressRateLimit +- SecurityGroupRateLimit +- VirtualMachineRateLimit +- StorageAccountRateLimit +- DiskRateLimit +- SnapshotRateLimit +- VirtualMachineScaleSetRateLimit +- VirtualMachineSizeRateLimit +- AvailabilitySetRateLimit +- AttachDetachDiskRateLimit +- ContainerServiceRateLimit +- DeploymentRateLimit +- PrivateDNSRateLimit +- PrivateDNSZoneGroupRateLimit +- PrivateEndpointRateLimit +- PrivateLinkServiceRateLimit +- VirtualNetworkRateLimit + +The original rate limiting options ("cloudProviderRateLimitBucket", "cloudProviderRateLimitBucketWrite", "cloudProviderRateLimitQPS", "cloudProviderRateLimitQPSWrite") are still supported, and they would be the default values if per-client rate limiting is not configured. + +Here is an example of per-client config: + +```json +{ + // default rate limit (enabled). + "cloudProviderRatelimit": true, + "cloudProviderRateLimitBucket": 1, + "cloudProviderRateLimitBucketWrite": 1, + "cloudProviderRateLimitQPS": 1, + "cloudProviderRateLimitQPSWrite": 1, + "virtualMachineScaleSetRateLimit": { // VMSS specific (enabled). + "cloudProviderRatelimit": true, + "cloudProviderRateLimitBucket": 2, + "CloudProviderRateLimitBucketWrite": 2, + "cloudProviderRateLimitQPS": 0, + "CloudProviderRateLimitQPSWrite": 0 + }, + "loadBalancerRateLimit": { // LB specific (disabled) + "cloudProviderRatelimit": false + }, + ... // other cloud provider configs +} +``` + +## Run Kubelet without Azure identity + +When running Kubelet with kube-controller-manager, it also supports running without Azure identity since v1.15.0. + +Both kube-controller-manager and kubelet should configure `--cloud-provider=azure --cloud-config=/etc/kubernetes/cloud-config/azure.json`, but the contents for `azure.json` are different: + +(1) For kube-controller-manager, refer the above part for setting `azure.json`. + +(2) For kubelet, `useInstanceMetadata` is required to be `true` and Azure identities are not required. A sample for Kubelet's azure.json is + +```json +{ + "useInstanceMetadata": true, + "vmType": "vmss" +} +``` + +## Azure Stack Configuration + +Azure Stack has different API endpoints, depending on the Azure Stack deployment. These need to be provided to the Azure SDK and currently this is done by adding an extra `json` file with the arguments, as well as an environment variable pointing to this file. + +There are several available presets, namely: + +- `AzureChinaCloud` +- `AzureGermanCloud` +- `AzurePublicCloud` +- `AzureUSGovernmentCloud` + +These are determined using `cloud: ` described above in the description of `azure.json`. + +When `cloud: AzureStackCloud`, the extra environment variable used by the Azure SDK to find the Azure Stack configuration file is: + + - [`AZURE_ENVIRONMENT_FILEPATH`](https://github.com/Azure/go-autorest/blob/562d376/autorest/azure/environments.go#L28) + +The configuration parameters of this file: + +```json +{ + "name": "AzureStackCloud", + "managementPortalURL": "...", + "publishSettingsURL": "...", + "serviceManagementEndpoint": "...", + "resourceManagerEndpoint": "...", + "activeDirectoryEndpoint": "...", + "galleryEndpoint": "...", + "keyVaultEndpoint": "...", + "graphEndpoint": "...", + "serviceBusEndpoint": "...", + "batchManagementEndpoint": "...", + "storageEndpointSuffix": "...", + "sqlDatabaseDNSSuffix": "...", + "trafficManagerDNSSuffix": "...", + "keyVaultDNSSuffix": "...", + "serviceBusEndpointSuffix": "...", + "serviceManagementVMDNSSuffix": "...", + "resourceManagerVMDNSSuffix": "...", + "containerRegistryDNSSuffix": "...", + "cosmosDBDNSSuffix": "...", + "tokenAudience": "...", + "resourceIdentifiers": { + "graph": "...", + "keyVault": "...", + "datalake": "...", + "batch": "...", + "operationalInsights": "..." + } +} +``` + +The full list of existing settings for the `AzureChinaCloud`, `AzureGermanCloud`, `AzurePublicCloud` and `AzureUSGovernmentCloud` is available in the source code at https://github.com/Azure/go-autorest/blob/master/autorest/azure/environments.go#L51. + +## Host Network Resources in different AAD Tenant and Subscription + +Since v1.18.0, Azure cloud provider supports hosting network resources (Virtual Network, Network Security Group, Route Table, Load Balancer and Public IP) in different AAD Tenant and Subscription than those for the cluster. To enable this feature, set `networkResourceTenantID` and `networkResourceSubscriptionID` in auth config. Note that the value of them need to be different than value of `tenantID` and `subscriptionID`. + +With this feature enabled, network resources of the cluster will be created in `networkResourceSubscriptionID` in `networkResourceTenantID`, and rest resources of the cluster still remain in `subscriptionID` in `tenantID`. Properties which specify the resource groups of network resources are compatible with this feature. For example, Virtual Network will be created in `vnetResourceGroup` in `networkResourceSubscriptionID` in `networkResourceTenantID`. + +For authentication methods, only Service Principal supports this feature, and `aadClientID` and `aadClientSecret` are used to authenticate with those two AAD Tenants and Subscriptions. Managed Identity and Client Certificate doesn't support this feature. Azure Stack doesn't support this feature. + +## Current default rate-limiting values + +The following are the default rate limiting values configured in [AKS](https://azure.microsoft.com/en-us/services/kubernetes-service/) and [cluster-api-provider-azure](https://github.com/kubernetes-sigs/cluster-api-provider-azure) clusters prior to Kubernetes version v1.18.0. + +```json + "cloudProviderBackoff": true, + "cloudProviderBackoffRetries": 6, + "cloudProviderBackoffDuration": 5, + "cloudProviderRatelimit": true, + "cloudProviderRateLimitQPS": 10, + "cloudProviderRateLimitBucket": 100, + "cloudProviderRatelimitQPSWrite": 10, + "cloudProviderRatelimitBucketWrite": 100, +``` + +For v1.18.0+ refer to [per client rate limit config](#per-client-rate-limiting) diff --git a/content/en/search.md b/content/en/search.md new file mode 100644 index 0000000000..c4e13ddc79 --- /dev/null +++ b/content/en/search.md @@ -0,0 +1,7 @@ +--- +title: Search Results +layout: search + + +--- + diff --git a/content/en/topics/_index.md b/content/en/topics/_index.md new file mode 100644 index 0000000000..295fec436f --- /dev/null +++ b/content/en/topics/_index.md @@ -0,0 +1,8 @@ +--- +title: Topics +linkTitle: Topics +type: docs +menu: + main: + weight: 3 +--- diff --git a/content/en/topics/assumptions.md b/content/en/topics/assumptions.md new file mode 100644 index 0000000000..556c39ed5b --- /dev/null +++ b/content/en/topics/assumptions.md @@ -0,0 +1,23 @@ +--- +title: "Cluster Provisioning Tools Contract" +linkTitle: "Cluster Provisioning Tools Contract" +weight: 1 +type: docs +description: > + Cloud provider assumptions on Azure resources that provisioning tools should follow. +--- + +> The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. + +Here is a list of Azure resource assumptions that are required for cloud provider Azure: + +* All Azure resources MUST be under the same tenant. +* All virtual machine names MUST be the same as their hostname. +* The cluster name set for `kube-controller-manager --cluster-name=` MUST not end with `-internal`. + +After the cluster is provisioned, cloud provider Azure MAY update the following Azure resources based on workloads: + +* New routes would be added for each node if `--configure-cloud-routes` is enabled. +* New LoadBalancer (including external and internal) would be created if they're not existing yet. +* Virtual machines and virtual machine scale sets would be added to LoadBalancer backend address pools if they're not added yet. +* New public IPs and NSG rules would be added when LoadBalancer typed services are created. diff --git a/content/en/topics/availability-zones.md b/content/en/topics/availability-zones.md new file mode 100644 index 0000000000..f162cddc42 --- /dev/null +++ b/content/en/topics/availability-zones.md @@ -0,0 +1,227 @@ +--- +title: "Use Availability Zones" +linkTitle: "Availability Zones" +weight: 4 +type: docs +description: > + Use availability zones in provider azure. +--- + +**Feature Status:** Alpha since v1.12. + +Kubernetes v1.12 adds support for [Azure availability zones (AZ)](https://azure.microsoft.com/en-us/global-infrastructure/availability-zones/). Nodes in availability zone will be added with label `failure-domain.beta.kubernetes.io/zone=-` and topology-aware provisioning is added for Azure managed disks storage class. + +**TOC:** + + + +- [Availability Zones](#availability-zones) + - [Pre-requirements](#pre-requirements) + - [Node labels](#node-labels) + - [Load Balancer](#load-balancer) + - [Managed Disks](#managed-disks) + - [StorageClass examples](#storageclass-examples) + - [PV examples](#pv-examples) + - [Appendix](#appendix) + - [Reference](#reference) + + + +## Pre-requirements + +Because only standard load balancer is supported with AZ, it is a prerequisite to enable AZ for the cluster. It should be configured in Azure cloud provider configure file (e.g. `/etc/kubernetes/cloud-config/azure.json`): + +```json +{ + "loadBalancerSku": "standard", + ... +} +``` + +If topology-aware provisioning feature is used, feature gate `VolumeScheduling` should be enabled on master components (e.g. kube-apiserver, kube-controller-manager and kube-scheduler). + +## Node labels + +Both zoned and unzoned nodes are supported, but the value of node label `failure-domain.beta.kubernetes.io/zone` are different: + +- For zoned nodes, the value is `-`, e.g. `centralus-1`. +- For unzoned nodes, the value is faultDomain, e.g. `0`. + +e.g. + +```yaml +$ kubectl get nodes --show-labels +NAME STATUS AGE VERSION LABELS +kubernetes-node12 Ready 6m v1.11 failure-domain.beta.kubernetes.io/region=centralus,failure-domain.beta.kubernetes.io/zone=centralus-1,... +``` + +## Load Balancer + +`loadBalancerSku` has been set to `standard` in cloud provider configure file, so standard load balancer and standard public IPs will be provisioned automatically for services with type `LoadBalancer`. Both load balancer and public IPs are zone redundant. + +## Managed Disks + +Zone-aware and topology-aware provisioning are supported for Azure managed disks. To support these features, a few options are added in AzureDisk storage class: + +- **zoned**: indicates whether new disks are provisioned with AZ. Default is true. +- **allowedTopologies**: indicates which topologies are allowed for topology-aware provisioning. Only can be set if `zoned` is not false. + +### StorageClass examples + +An example of zone-aware provisioning storage class is: + +```yaml +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + annotations: + labels: + kubernetes.io/cluster-service: "true" + name: managed-premium +parameters: + kind: Managed + storageaccounttype: Premium_LRS + zoned: "true" +provisioner: kubernetes.io/azure-disk +volumeBindingMode: WaitForFirstConsumer +``` + +Another example of topology-aware provisioning storage class is: + +```yaml +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + annotations: + labels: + kubernetes.io/cluster-service: "true" + name: managed-premium +parameters: + kind: Managed + storageaccounttype: Premium_LRS +provisioner: kubernetes.io/azure-disk +volumeBindingMode: WaitForFirstConsumer +allowedTopologies: +- matchLabelExpressions: + - key: failure-domain.beta.kubernetes.io/zone + values: + - centralus-1 + - centralus-2 +``` + +### PV examples + +When feature gate `VolumeScheduling` disabled, no `NodeAffinity` set for zoned PV: + +```shell script +$ kubectl describe pv +Name: pvc-d30dad05-9ad8-11e8-94f2-000d3a07de8c +Labels: failure-domain.beta.kubernetes.io/region=southeastasia + failure-domain.beta.kubernetes.io/zone=southeastasia-2 +Annotations: pv.kubernetes.io/bound-by-controller=yes + pv.kubernetes.io/provisioned-by=kubernetes.io/azure-disk + volumehelper.VolumeDynamicallyCreatedByKey=azure-disk-dynamic-provisioner +Finalizers: [kubernetes.io/pv-protection] +StorageClass: default +Status: Bound +Claim: default/pvc-azuredisk +Reclaim Policy: Delete +Access Modes: RWO +Capacity: 5Gi +Node Affinity: + Required Terms: + Term 0: failure-domain.beta.kubernetes.io/region in [southeastasia] + failure-domain.beta.kubernetes.io/zone in [southeastasia-2] +Message: +Source: + Type: AzureDisk (an Azure Data Disk mount on the host and bind mount to the pod) + DiskName: k8s-5b3d7b8f-dynamic-pvc-d30dad05-9ad8-11e8-94f2-000d3a07de8c + DiskURI: /subscriptions//resourceGroups//providers/Microsoft.Compute/disks/k8s-5b3d7b8f-dynamic-pvc-d30dad05-9ad8-11e8-94f2-000d3a07de8c + Kind: Managed + FSType: + CachingMode: None + ReadOnly: false +Events: +``` + +When feature gate `VolumeScheduling` enabled, `NodeAffinity` will be populated for zoned PV: + +```shell script +$ kubectl describe pv +Name: pvc-0284337b-9ada-11e8-a7f6-000d3a07de8c +Labels: failure-domain.beta.kubernetes.io/region=southeastasia + failure-domain.beta.kubernetes.io/zone=southeastasia-2 +Annotations: pv.kubernetes.io/bound-by-controller=yes + pv.kubernetes.io/provisioned-by=kubernetes.io/azure-disk + volumehelper.VolumeDynamicallyCreatedByKey=azure-disk-dynamic-provisioner +Finalizers: [kubernetes.io/pv-protection] +StorageClass: default +Status: Bound +Claim: default/pvc-azuredisk +Reclaim Policy: Delete +Access Modes: RWO +Capacity: 5Gi +Node Affinity: + Required Terms: + Term 0: failure-domain.beta.kubernetes.io/region in [southeastasia] + failure-domain.beta.kubernetes.io/zone in [southeastasia-2] +Message: +Source: + Type: AzureDisk (an Azure Data Disk mount on the host and bind mount to the pod) + DiskName: k8s-5b3d7b8f-dynamic-pvc-0284337b-9ada-11e8-a7f6-000d3a07de8c + DiskURI: /subscriptions//resourceGroups//providers/Microsoft.Compute/disks/k8s-5b3d7b8f-dynamic-pvc-0284337b-9ada-11e8-a7f6-000d3a07de8c + Kind: Managed + FSType: + CachingMode: None + ReadOnly: false +Events: +``` + +While unzoned disks are not able to attach in zoned nodes, `NodeAffinity` will also be set for them so that they will only be scheduled to unzoned nodes: + +```shell script +$ kubectl describe pv pvc-bdf93a67-9c45-11e8-ba6f-000d3a07de8c +Name: pvc-bdf93a67-9c45-11e8-ba6f-000d3a07de8c +Labels: +Annotations: pv.kubernetes.io/bound-by-controller=yes + pv.kubernetes.io/provisioned-by=kubernetes.io/azure-disk + volumehelper.VolumeDynamicallyCreatedByKey=azure-disk-dynamic-provisioner +Finalizers: [kubernetes.io/pv-protection] +StorageClass: azuredisk-unzoned +Status: Bound +Claim: default/unzoned-pvc +Reclaim Policy: Delete +Access Modes: RWO +Capacity: 5Gi +Node Affinity: + Required Terms: + Term 0: failure-domain.beta.kubernetes.io/region in [southeastasia] + failure-domain.beta.kubernetes.io/zone in [0] + Term 1: failure-domain.beta.kubernetes.io/region in [southeastasia] + failure-domain.beta.kubernetes.io/zone in [1] + Term 2: failure-domain.beta.kubernetes.io/region in [southeastasia] + failure-domain.beta.kubernetes.io/zone in [2] +Message: +Source: + Type: AzureDisk (an Azure Data Disk mount on the host and bind mount to the pod) + DiskName: k8s-5b3d7b8f-dynamic-pvc-bdf93a67-9c45-11e8-ba6f-000d3a07de8c + DiskURI: /subscriptions//resourceGroups//providers/Microsoft.Compute/disks/k8s-5b3d7b8f-dynamic-pvc-bdf93a67-9c45-11e8-ba6f-000d3a07de8c + Kind: Managed + FSType: + CachingMode: None + ReadOnly: false +Events: +``` + +## Appendix + +Note that unlike most cases, fault domain and availability zones mean different on Azure: + +- A Fault Domain (FD) is essentially a rack of servers. It consumes subsystems like network, power, cooling etc. +- Availability Zones are unique physical locations within an Azure region. Each zone is made up of one or more data centers equipped with independent power, cooling, and networking. + +An Availability Zone in an Azure region is a combination of a fault domain, and an update domain (Same like FD, but for updates. When upgrading a deployment, it is carried out one update domain at a time). For example, if you create three or more VMs across three zones in an Azure region, your VMs are effectively distributed across three fault domains and three update domains. + +## Reference + +See design docs for AZ in [KEP for Azure availability zones](https://github.com/kubernetes/enhancements/blob/master/keps/sig-cloud-provider/azure/20180711-azure-availability-zones.md). diff --git a/content/en/topics/azure-permissions.md b/content/en/topics/azure-permissions.md new file mode 100644 index 0000000000..2d8c901e7f --- /dev/null +++ b/content/en/topics/azure-permissions.md @@ -0,0 +1,101 @@ +--- +title: "Azure Permissions" +linkTitle: "Azure Permissions" +weight: 3 +type: docs +description: > + Permissions required to set up Azure resources. +--- + +Azure cloud provider requires a set of permissions to manage the Azure resources. Here is a list of all permissions and reasons of why they're required. + +```c +// Required to create, delete or update LoadBalancer for LoadBalancer service +Microsoft.Network/loadBalancers/delete +Microsoft.Network/loadBalancers/read +Microsoft.Network/loadBalancers/write +Microsoft.Network/loadBalancers/backendAddressPools/read +Microsoft.Network/loadBalancers/backendAddressPools/write +Microsoft.Network/loadBalancers/backendAddressPools/delete + +// Required to allow query, create or delete public IPs for LoadBalancer service +Microsoft.Network/publicIPAddresses/delete +Microsoft.Network/publicIPAddresses/read +Microsoft.Network/publicIPAddresses/write + +// Required if public IPs from another resource group are used for LoadBalancer service +// This is because of the linked access check when adding the public IP to LB frontendIPConfiguration +Microsoft.Network/publicIPAddresses/join/action + +// Required to create or delete security rules for LoadBalancer service +Microsoft.Network/networkSecurityGroups/read +Microsoft.Network/networkSecurityGroups/write + +// Required to create, delete or update AzureDisks +Microsoft.Compute/disks/delete +Microsoft.Compute/disks/read +Microsoft.Compute/disks/write +Microsoft.Compute/locations/DiskOperations/read + +// Required to create, update or delete storage accounts for AzureFile or AzureDisk +Microsoft.Storage/storageAccounts/delete +Microsoft.Storage/storageAccounts/listKeys/action +Microsoft.Storage/storageAccounts/read +Microsoft.Storage/storageAccounts/write +Microsoft.Storage/operations/read + +// Required to create, delete or update routeTables and routes for nodes +Microsoft.Network/routeTables/read +Microsoft.Network/routeTables/routes/delete +Microsoft.Network/routeTables/routes/read +Microsoft.Network/routeTables/routes/write +Microsoft.Network/routeTables/write + +// Required to query information for VM (e.g. zones, faultdomain, size and data disks) +Microsoft.Compute/virtualMachines/read + +// Required to attach AzureDisks to VM +Microsoft.Compute/virtualMachines/write + +// Required to query information for vmssVM (e.g. zones, faultdomain, size and data disks) +Microsoft.Compute/virtualMachineScaleSets/read +Microsoft.Compute/virtualMachineScaleSets/virtualMachines/read +Microsoft.Compute/virtualMachineScaleSets/virtualmachines/instanceView/read + +// Required to add VM to LoadBalancer backendAddressPools +Microsoft.Network/networkInterfaces/write +// Required to add vmss to LoadBalancer backendAddressPools +Microsoft.Compute/virtualMachineScaleSets/write +// Required to attach AzureDisks and add vmssVM to LB +Microsoft.Compute/virtualMachineScaleSets/virtualmachines/write +// Required to upgrade VMSS models to latest for all instances +// only needed for Kubernetes 1.11.0-1.11.9, 1.12.0-1.12.8, 1.13.0-1.13.5, 1.14.0-1.14.1 +Microsoft.Compute/virtualMachineScaleSets/manualupgrade/action + +// Required to query internal IPs and loadBalancerBackendAddressPools for VM +Microsoft.Network/networkInterfaces/read +// Required to query internal IPs and loadBalancerBackendAddressPools for vmssVM +microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/read +// Required to get public IPs for vmssVM +Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ipconfigurations/publicipaddresses/read + +// Required to check whether subnet existing for ILB in another resource group +Microsoft.Network/virtualNetworks/read +Microsoft.Network/virtualNetworks/subnets/read + +// Required to create, update or delete snapshots for AzureDisk +Microsoft.Compute/snapshots/delete +Microsoft.Compute/snapshots/read +Microsoft.Compute/snapshots/write + +// Required to get vm sizes for getting AzureDisk volume limit +Microsoft.Compute/locations/vmSizes/read +Microsoft.Compute/locations/operations/read + +// Required to create, update or delete PrivateLinkService for Service +Microsoft.Network/privatelinkservices/delete +Microsoft.Network/privatelinkservices/privateEndpointConnections/delete +Microsoft.Network/privatelinkservices/read +Microsoft.Network/privatelinkservices/write +Microsoft.Network/virtualNetworks/subnets/write +``` diff --git a/content/en/topics/credential-provider.md b/content/en/topics/credential-provider.md new file mode 100644 index 0000000000..418033d8d8 --- /dev/null +++ b/content/en/topics/credential-provider.md @@ -0,0 +1,37 @@ +--- +title: "Kubelet Credential Provider" +linkTitle: "Kubelet Credential Provider" +weight: 10 +type: docs +description: > + Detailed steps to setup out-of-tree Kubelet Credential Provider. +--- + +> Note: The Kubelet credential provider feature is still in alpha and shouldn't be used in production environments. Please use `--azure-container-registry-config=/etc/kubernetes/cloud-config/azure.json` if you need pulling images from ACR in production. + +As part of [Out-of-Tree Credential Providers](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cloud-provider/2133-out-of-tree-credential-provider), the kubelet builtin image pulling from ACR (which could be enabled by setting `kubelet --azure-container-registry-config=`) would be moved out-of-tree credential plugin `acr-credential-provider`. Please refer the original [KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cloud-provider/2133-out-of-tree-credential-provider) for details. + +In order to switch the kubelet credential provider to out-of-tree, you'll have to + +* Remove `--azure-container-registry-config` from kubelet configuration options. +* Add `--feature-gates=KubeletCredentialProviders=true` to kubelet configuration options. +* Create directory `/var/lib/kubelet/credential-provider`, download 'acr-credential-provider' binary to this directory and add `--image-credential-provider-bin-dir=/var/lib/kubelet/credential-provider` to kubelet configuration options. +* Create the following credential-provider-config.yaml file and add `--image-credential-provider-config=/var/lib/kubelet/credential-provider-config.yaml` to kubelet configuration options. + +```yaml +# cat /var/lib/kubelet/credential-provider-config.yaml +kind: CredentialProviderConfig +apiVersion: kubelet.config.k8s.io/v1 +providers: +- name: acr-credential-provider + apiVersion: credentialprovider.kubelet.k8s.io/v1 + defaultCacheDuration: 10m + matchImages: + - "*.azurecr.io" + - "*.azurecr.cn" + - "*.azurecr.de" + - "*.azurecr.us" + args: + - /etc/kubernetes/azure.json +``` + diff --git a/content/en/topics/cross-resource-group-nodes.md b/content/en/topics/cross-resource-group-nodes.md new file mode 100644 index 0000000000..ac47da302d --- /dev/null +++ b/content/en/topics/cross-resource-group-nodes.md @@ -0,0 +1,66 @@ +--- +title: "Deploy Cross Resource Group Nodes" +linkTitle: "Cross Resource Group Nodes" +weight: 5 +type: docs +description: > + Deploy cross resource group nodes. +--- + +**Feature status:** GA since v1.21. + +Kubernetes v1.21 adds support for cross resource group (RG) nodes and unmanaged (such as on-prem) nodes in Azure cloud provider. A few assumptions are made for such nodes: + +- Cross-RG nodes are in same region and set with required labels (as clarified in the following part) +- Nodes will not be part of the load balancer managed by cloud provider +- Both node and container networking should be configured properly by provisioning tools +- AzureDisk is supported for Azure cross-RG nodes, but not for on-prem nodes + +## Pre-requirements + +Because cross-RG nodes and unmanaged nodes won't be added to Azure load balancer backends, feature gate `ServiceNodeExclusion` should be enabled for master components (`ServiceNodeExclusion` has been GA and enabled by default since v1.21). + +## Cross-RG nodes + +Cross-RG nodes should register themselves with required labels together with cloud provider: + +- `node.kubernetes.io/exclude-from-external-load-balancers`, which is used to exclude the node from load balancer. + - `alpha.service-controller.kubernetes.io/exclude-balancer=true` should be used if the cluster version is below v1.16.0. +- `kubernetes.azure.com/resource-group=`, which provides external RG and is used to get node information. +- cloud provider config + - `--cloud-provider=azure` when using kube-controller-manager + - `--cloud-provider=external` when using cloud-controller-manager + +For example, + +```shell script +kubelet ... \ + --cloud-provider=azure \ + --cloud-config=/etc/kubernetes/cloud-config/azure.json \ + --node-labels=node.kubernetes.io/exclude-from-external-load-balancers=true,kubernetes.azure.com/resource-group= +``` + +## Unmanaged nodes + +On-prem nodes are different from Azure nodes, all Azure coupled features (such as load balancers and Azure managed disks) are not supported for them. To prevent the node being deleted, Azure cloud provider will always assumes the node existing. + +On-prem nodes should register themselves with labels `node.kubernetes.io/exclude-from-external-load-balancers=true` and `kubernetes.azure.com/managed=false`: + +- `node.kubernetes.io/exclude-from-external-load-balancers=true`, which is used to exclude the node from load balancer. +- `kubernetes.azure.com/managed=false`, which indicates the node is on-prem or on other clouds. + +For example, + +```shell script +kubelet ...\ + --cloud-provider= \ + --node-labels=node.kubernetes.io/exclude-from-external-load-balancers=true,kubernetes.azure.com/managed=false +``` + +## Limitations + +Cross resource group nodes and unmanaged nodes are unsupported when joined to an AKS cluster. Using these labels on AKS-managed nodes is not supported. + +## Reference + +See design docs for cross resource group nodes in [KEP 20180809-cross-resource-group-nodes](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cloud-provider/azure/604-cross-resource-group-nodes). diff --git a/content/en/topics/images/pip-labels.png b/content/en/topics/images/pip-labels.png new file mode 100644 index 0000000000..28cf8532a2 Binary files /dev/null and b/content/en/topics/images/pip-labels.png differ diff --git a/content/en/topics/ipam.md b/content/en/topics/ipam.md new file mode 100644 index 0000000000..5dc8575055 --- /dev/null +++ b/content/en/topics/ipam.md @@ -0,0 +1,74 @@ +--- +title: "Node IPAM controller" +linkTitle: "Node IPAM controller" +type: docs +weight: 10 +description: "Usage of out-of-tree Node IPAM allocator." +--- + +> This feature is supported since v1.21.0. + +## Background + +The in-tree [Node IPAM controller](https://github.com/kubernetes/kubernetes/tree/master/pkg/controller/nodeipam) only +supports a fixed node CIDR mask size for all nodes, while in multiple node pool (VMSS) scenarios, different mask sizes +are required for different node pools. There is a GCE-specific cloud CIDR allocator for a similar scenario, but that is +not exposed in cloud provider API and it is planned to be moved out-of-tree. + +Hence this docs proposes an out-of-tree node IPAM controller. Specifically, allocate different pod CIDRs based on +different CIDR mask size for different node pools (VMSS or VMAS). + +## Usage + +There are two kinds of CIDR allocator in the node IPAM controller, which are `RangeAllocator` and `CloudAllocator`. +The `RangeAllocator` is the default one which allocates the pod CIDR for every node in the range of the cluster CIDR. +The `CloudAllocator` allocates the pod CIDR for every node in the range of the CIDR on the corresponding VMSS or VMAS. + +The pod CIDR mask size of each node that belongs to a specific VMSS or VMAS is set by a specific tag +`{"kubernetesNodeCIDRMaskIPV4": "24"}` or `{"kubernetesNodeCIDRMaskIPV6": "64"}`. Note that the mask size tagging on +the VMSS or VMAS must be within the cluster CIDR, or an error would be thrown. + +When the above tag doesn't exist on VMSS/VMAS, the default mask size (24 for ipv4 and 64 for ipv6) would be used. + +To turn on the out-of-tree node IPAM controller: +1. Disable the in-tree node IPAM controller by setting `--allocate-node-cidrs=false` in kube-controller-manager. +1. Enable the out-of-tree counterpart by setting `--allocate-node-cidrs=true` in cloud-controller-manager. +1. To use `RangeAllocator`: + * configure the `--cluster-cidr`, `--service-cluster-ip-range` and `--node-cidr-mask-size`; + * if you enable the ipv6 dualstack, setting `--node-cidr-mask-size-ipv4` and `--node-cidr-mask-size-ipv6` instead of + `--node-cidr-mask-size`. An error would be reported if `--node-cidr-mask-size` and `--node-cidr-mask-size-ipv4` + (or `--node-cidr-mask-size-ipv6`) are set to non-zero values at a time. If only `--node-cidr-mask-size` is set, + which is not recommended, the `--node-cidr-mask-size-ipv4` and `--node-cidr-mask-size-ipv6` would be set to this + value by default. +1. To use `CloudAllocator`: + * set the `--cidr-allocator-type=CloudAllocator`; + * configure mask sizes of each VMSS/VMAS by tagging `{"kubernetesNodeCIDRMaskIPV4": "custom-mask-size"}` and + `{"kubernetesNodeCIDRMaskIPV4": "custom-mask-size"}` if necessary. + +## Configurations + +### kube-controller-manager + +kube-controller-manager would be configured with option `--allocate-node-cidrs=false` to disable the in-tree node IPAM controller. + +### cloud-controller-manager + +The following configurations from cloud-controller-manager would be used as default options: + +| name | type | default | description | +| ----- | -----| ----- | ----- | +| allocate-node-cidrs | bool | true | Should CIDRs for Pods be allocated and set on the cloud provider. | +| cluster-cidr | string | "10.244.0.0/16" | CIDR Range for Pods in cluster. Requires --allocate-node-cidrs to be true. It will be ignored when enabling dualstack. | +| service-cluster-ip-range | string | "" | CIDR Range for Services in cluster, this would get excluded from the allocatable range. Requires --allocate-node-cidrs to be true. | +| node-cidr-mask-size | int | 24 | Mask size for node cidr in cluster. Default is 24 for IPv4 and 64 for IPv6. | +| node-cidr-mask-size-ipv4 | int | 24 | Mask size for IPv4 node cidr in dual-stack cluster. Default is 24. | +| node-cidr-mask-size-ipv6 | int | 64 | Mask size for IPv6 node cidr in dual-stack cluster. Default is 64. | +| cidr-allocator-type | string | "RangeAllocator" | The CIDR allocator type. "RangeAllocator" or "CloudAllocator". | + +## Limitations + +1. We plan to integrate out-of-tree node ipam controller with [cluster-api-provider-azure](https://github.com/kubernetes-sigs/cluster-api-provider-azure) to provider a better experience. Before that, +the manual configuration is required. +1. It is not supported to change the custom mask size value on the tag once it is set. +1. For now, there is no e2e test covering this feature, so there can be potential bugs. It is not recommended enabling +it in the production environment. diff --git a/content/en/topics/loadbalancer.md b/content/en/topics/loadbalancer.md new file mode 100644 index 0000000000..40c3abf547 --- /dev/null +++ b/content/en/topics/loadbalancer.md @@ -0,0 +1,315 @@ +--- +title: "Azure LoadBalancer" +linkTitle: "Azure LoadBalancer" +weight: 2 +type: docs +description: Azure LoadBalancer basics. +--- + +The way Azure defines a LoadBalancer is different from GCE or AWS. Azure's LB can have multiple frontend IP refs. GCE and AWS only allow one, if you want more, you would need multiple LBs. Since Public IP's are not part of the LB in Azure, an NSG is not part of the LB in Azure either. However, you cannot delete them in parallel, a Public IP can only be deleted after the LB's frontend IP ref is removed. + +The different Azure Resources such as LB, Public IP, and NSG are the same tier of Azure resources and circular dependencies need to be avoided. In other words, they should only depend on service state. + +By default the basic SKU is selected for a load balancer. Services can be annotated to allow auto selection of available load balancers. Service annotations can also be used to provide specific availability sets that host the load balancers. Note that in case of auto selection or specific availability set selection, services are currently not auto-reassigned to an available loadbalancer when the availability set is lost in case of downtime or cluster scale down. + +## LoadBalancer annotations + +Below is a list of annotations supported for Kubernetes services with type `LoadBalancer`: + +| Annotation | Value | Description | Kubernetes Version | +| ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| `service.beta.kubernetes.io/azure-load-balancer-internal` | `true` or `false` | Specify whether the load balancer should be internal. It’s defaulting to public if not set. | v1.10.0 and later | +| `service.beta.kubernetes.io/azure-load-balancer-internal-subnet` | Name of the subnet | Specify which subnet the internal load balancer should be bound to. It’s defaulting to the subnet configured in cloud config file if not set. | v1.10.0 and later | +| `service.beta.kubernetes.io/azure-load-balancer-mode` | `auto`, `{vmset-name}` | Specify the Azure load balancer selection algorithm based on vm sets (VMSS or VMAS). There are currently three possible load balancer selection modes : default, auto or "{vmset-name}". This is only working for basic LB or multiple standard LB (see below for how it works) | v1.10.0 and later | +| `service.beta.kubernetes.io/azure-dns-label-name` | Name of the PIP DNS label | Specify the DNS label name for the service's public IP address (PIP). If it is set to empty string, DNS in PIP would be deleted. Because of a bug, before v1.15.10/v1.16.7/v1.17.3, the DNS label on PIP would also be deleted if the annotation is not specified. | v1.15.0 and later | +| `service.beta.kubernetes.io/azure-shared-securityrule` | `true` or `false` | Specify that the service should be exposed using an Azure security rule that may be shared with another service, trading specificity of rules for an increase in the number of services that can be exposed. This relies on the Azure "augmented security rules" feature. | v1.10.0 and later | +| `service.beta.kubernetes.io/azure-load-balancer-resource-group` | Name of the PIP resource group | Specify the resource group of the service's PIP that are not in the same resource group as the cluster. | v1.10.0 and later | +| `service.beta.kubernetes.io/azure-allowed-service-tags` | List of allowed service tags | Specify a list of allowed [service tags](https://docs.microsoft.com/en-us/azure/virtual-network/security-overview#service-tags) separated by comma. | v1.11.0 and later | +| `service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout` | TCP idle timeouts in minutes | Specify the time, in minutes, for TCP connection idle timeouts to occur on the load balancer. Default and minimum value is 4. Maximum value is 30. Must be an integer. | v1.11.4, v1.12.0 and later | +| `service.beta.kubernetes.io/azure-pip-name` | Name of PIP | Specify the PIP that will be applied to load balancer. After v1.27, it is used for IPv4 only. | v1.16 and later | +| `service.beta.kubernetes.io/azure-pip-name-ipv6` | Name of IPv6 PIP | Specify the IPv6 PIP that will be applied to load balancer. | v1.27 and later | +| `service.beta.kubernetes.io/azure-pip-prefix-id` | ID of Public IP Prefix | Specify the Public IP Prefix that will be applied to load balancer. After v1.27, it is for IPv4 only. | v1.21 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/azure-pip-prefix-id-ipv6` | ID of IPv6 Public IP Prefix | Specify the IPv6 Public IP Prefix that will be applied to load balancer. | v1.27 and later | +| `service.beta.kubernetes.io/azure-pip-tags` | Tags of the PIP | Specify the tags of the PIP that will be associated to the load balancer typed service. [Doc](../tagging-resources) | v1.20 and later | +| `service.beta.kubernetes.io/azure-load-balancer-health-probe-interval` | Health probe interval | Refer to the detailed docs [here](#custom-load-balancer-health-probe) | v1.21 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/azure-load-balancer-health-probe-num-of-probe` | The minimum number of unhealthy responses of health probe | Refer to the detailed docs [here](#custom-load-balancer-health-probe) | v1.21 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path` | Request path of the health probe | Refer to the detailed docs [here](#custom-load-balancer-health-probe) | v1.20 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/azure-load-balancer-ipv4` | Load balancer IPv4 address | Specify the load balancer IP of IPv4, deprecating Service.spec.loadBalancerIP | v1.21 and later | +| `service.beta.kubernetes.io/azure-load-balancer-ipv6` | Load balancer IPv6 address | Specify the load balancer IP of IPv6, deprecating Service.spec.loadBalancerIP | v1.21 and later | +| `service.beta.kubernetes.io/port_{port}_no_lb_rule` | true/false | {port} is the port number in the service. When it is set to true, no lb rule and health probe rule for this port will be generated. health check service should not be exposed to the public internet(e.g. istio/envoy health check service) | v1.24 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/port_{port}_no_probe_rule` | true/false | {port} is the port number in the service. When it is set to true, no health probe rule for this port will be generated. | v1.24 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/port_{port}_health-probe_protocol` | Health probe protocol | {port} is the port number in the service. Explicit protocol for the health probe for the service port {port}, overriding port.appProtocol if set. Refer to the detailed docs [here](#custom-load-balancer-health-probe) | v1.24 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/port_{port}_health-probe_port` | port number or port name in service manifest | {port} is the port number in the service. Explicit port for the health probe for the service port {port}, overriding the default value. Refer to the detailed docs [here](#custom-load-balancer-health-probe) | v1.24 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/port_{port}_health-probe_interval` | Health probe interval | {port} is port number of service. Refer to the detailed docs [here](#custom-load-balancer-health-probe) | v1.21 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/port_{port}_health-probe_num-of-probe` | The minimum number of unhealthy responses of health probe | {port} is port number of service. Refer to the detailed docs [here](#custom-load-balancer-health-probe) | v1.21 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/port_{port}_health-probe_request-path` | Request path of the health probe | {port} is port number of service. Refer to the detailed docs [here](#custom-load-balancer-health-probe) | v1.20 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/azure-load-balancer-enable-high-availability-ports` | Enable [high availability ports](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-ha-ports-overview) on internal SLB | HA ports is required when applications require IP fragments | v1.20 and later | +| `service.beta.kubernetes.io/azure-deny-all-except-load-balancer-source-ranges` | `true` or `false` | Deny all traffic to the service. This is helpful when the `service.Spec.LoadBalancerSourceRanges` is set to an internal load balancer typed service. When set the loadBalancerSourceRanges field on the service in order to whitelist ip src addresses, although the generated NSG has added the rules for loadBalancerSourceRanges, the default rule (65000) will allow any vnet traffic, basically meaning the whitelist is of no use. This annotation solves this issue. | v1.21 and later | +| `service.beta.kubernetes.io/azure-additional-public-ips` | External public IPs besides the service's own public IP | It is mainly used for global VIP on Azure cross-region LoadBalancer | v1.20 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/azure-disable-load-balancer-floating-ip` | `true` or `false` | Disable [Floating IP configuration](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-floating-ip) for load balancer | v1.21 and later with out-of-tree cloud provider | +| `service.beta.kubernetes.io/azure-pip-ip-tags` | comma separated key-value pairs `a=b,c=d`, for example `RoutingPreference=Internet` | Refer to the [doc](https://learn.microsoft.com/en-us/javascript/api/@azure/arm-network/iptag?view=azure-node-latest) | v1.21 and later with out-of-tree cloud provider | + +Please note that + +* When `loadBalancerSourceRanges` have been set on service spec, `service.beta.kubernetes.io/azure-allowed-service-tags` won't work because of DROP iptables rules from kube-proxy. The CIDRs from service tags should be merged into `loadBalancerSourceRanges` to make it work. +* When `allocateLoadBalancerNodePorts` is set to `false`, ensure the following conditions are met: + * Set `externalTrafficPolicy` to `Local`. + * And enable the FloatingIP feature by either not setting annotation `service.beta.kubernetes.io/azure-disable-load-balancer-floating-ip`, or setting its value to false. + +### Setting LoadBalaner IP + +If you want to specify an IP address for the load balancer, there are two ways: + +* Recommended: Set Service annotations `service.beta.kubernetes.io/azure-load-balancer-ipv4` for an IPv4 address and `service.beta.kubernetes.io/azure-load-balancer-ipv6` for an IPv6 address. Dual-stack support will be implemented soon. It is highly recommended for new Services. +* Deprecating: Set Service field: `Service.Spec.LoadbalancerIP`. This field is deprecating following [upstream kubernetes](https://github.com/kubernetes/kubernetes/pull/107235) and it cannot support dual-stack. However, current usage remains the same and existing Services are expected to work without modification. + +### Load balancer selection modes + +This is only useful for cluster with basic SKU load balancers. There are currently three possible load balancer selection modes: + +1. Default mode - service has no annotation ("service.beta.kubernetes.io/azure-load-balancer-mode"). In this case the Loadbalancer of the primary Availability set is selected +2. "__auto__" mode - service is annotated with `__auto__` value. In this case, services would be associated with the Loadbalancer with the minimum number of rules. +3. "{vmset-name}" mode - service is annotated with the name of a VMSS/VMAS. In this case, only load balancers of the specified VMSS/VMAS would be selected, and services would be associated with the one with the minimum number of rules. + +> Note that the "__auto__" mode is valid only if the service is newly created. It is not allowed to change the annotation value to `__auto__` of an existed service. + +The selection mode for a load balancer only works for basic load balancers or multiple standard load balancers. Following is the detailed information of allowed number of VMSS/VMAS in a load balancer. + +* Standard SKU supports any virtual machine in a single virtual network, including a mix of virtual machines, availability sets, and virtual machine scale sets. So all the nodes would be added to the same standard LB backend pool with a max size of 1000. +* Basic SKU only supports virtual machines in a single availability set, or a virtual machine scale set. Only nodes with the same availability set or virtual machine scale set would be added to the basic LB backend pool. + +## LoadBalancer SKUs + +Azure cloud provider supports both `basic` and `standard` SKU load balancers, which can be set via `loadBalancerSku` option in [cloud config file](../../install/configs). A list of differences between these two SKUs can be found [here](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-standard-overview#why-use-standard-load-balancer). + +> Note that the public IPs used in load balancer frontend configurations should be the same SKU. That is a standard SKU public IP for standard load balancer and a basic SKU public IP for a basic load balancer. + +Azure doesn’t support a network interface joining load balancers with different SKUs, hence migration dynamically between them is not supported. + +> If you do require migration, please delete all services with type `LoadBalancer` (or change to other type) + +### Outbound connectivity + +[Outbound connectivity](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections +) is also different between the two load balancer SKUs: + +* For the basic SKU, the outbound connectivity is opened by default. If multiple frontends are set, then the outbound IP is selected randomly (and configurable) from them. + +* For the standard SKU, the outbound connectivity is disabled by default. There are two ways to open the outbound connectivity: use a standard public IP with the standard load balancer or define outbound rules. + +### Standard LoadBalancer + +Because the load balancer in a Kubernetes cluster is managed by the Azure cloud provider, and it may change dynamically (e.g. the public load balancer would be deleted if no services defined with type `LoadBalancer`), [outbound rules](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-rules-overview) are the recommended path if you want to ensure the outbound connectivity for all nodes. + +> Especially note: +> +> * In the context of outbound connectivity, a single standalone VM, all the VM's in an Availability Set, all the instances in a VMSS behave as a group. This means, if a single VM in an Availability Set is associated with a Standard SKU, all VM instances within this Availability Set now behave by the same rules as if they are associated with Standard SKU, even if an individual instance is not directly associated with it. +> +> * Public IP's used as instance-level public IP are mutually exclusive with outbound rules. + +Here is the recommended way to define the [outbound rules](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-rules-overview) when using separate provisioning tools: + +* Create a separate IP (or multiple IPs for scale) in a standard SKU for outbound rules. Make use of the [allocatedOutboundPorts](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-rules-overview#snatports) parameter to allocate sufficient ports for your desired scenario scale. +* Create a separate pool definition for outbound, and ensure all virtual machines or VMSS virtual machines are in this pool. Azure cloud provider will manage the load balancer rules with another pool, so that provisioning tools and the Azure cloud provider won't affect each other. +* Define inbound with load balancing rules and inbound NAT rules as needed, and set `disableOutboundSNAT` to true on the load balancing rule(s). Don't rely on the side effect from these rules for outbound connectivity. It makes it messier than it needs to be and limits your options. Use inbound NAT rules to create port forwarding mappings for SSH access to the VM's rather than burning public IPs per instance. + +## Exclude nodes from the load balancer + +> Excluding nodes from Azure LoadBalancer is supported since v1.20.0. + +The kubernetes controller manager supports excluding nodes from the load balancer backend pools by enabling the feature gate `ServiceNodeExclusion`. To exclude nodes from Azure LoadBalancer, label `node.kubernetes.io/exclude-from-external-load-balancers=true` should be added to the nodes. + +1. To use the feature, the feature gate `ServiceNodeExclusion` should be on (enabled by default since its beta on v1.19). + +2. The labeled nodes would be excluded from the LB in the next LB reconcile loop, which needs one or more LB typed services to trigger. Basically, users could trigger the update by creating a service. If there are one or more LB typed services existing, no extra operations are needed. + +3. To re-include the nodes, just remove the label and the update would be operated in the next LB reconcile loop. + +### Limitations + +* Excluding nodes from LoadBalancer is not supported on AKS managed nodes. + +## Using SCTP + +SCTP protocol services are only supported on internal standard LoadBalancer, hence annotation `service.beta.kubernetes.io/azure-load-balancer-internal: "true"` should be added to SCTP protocol services. See below for an example: + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: sctpservice + annotations: + service.beta.kubernetes.io/azure-load-balancer-internal: "true" +spec: + type: LoadBalancer + selector: + app: sctpserver + ports: + - name: sctpserver + protocol: SCTP + port: 30102 + targetPort: 30102 +``` + +## Custom Load Balancer health probe + +As documented [here](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-custom-probe-overview), Tcp, Http and Https are three protocols supported by load balancer service. + +Currently, the default protocol of the health probe varies among services with different transport protocols, app protocols, annotations and external traffic policies. + +1. for local services, HTTP and /healthz would be used. The health probe will query NodeHealthPort rather than actual backend service +1. for cluster TCP services, TCP would be used. +1. for cluster UDP services, no health probes. + +> Note: For local services with PLS integration and PLS proxy protocol enabled, the default HTTP+/healthz health probe does not work. Thus health probe can be customized the same way as cluster services to support this scenario. For more details, please check [PLS Integration Note](../pls-integration). + +Since v1.20, service annotation `service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path` is introduced to determine the health probe behavior. + +* For clusters <=1.23, `spec.ports.appProtocol` would only be used as probe protocol when `service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path` is also set. +* For clusters >1.24, `spec.ports.appProtocol` would be used as probe protocol and `/` would be used as default probe request path (`service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path` could be used to change to a different request path). + +Note that the request path would be ignored when using TCP or the `spec.ports.appProtocol` is empty. More specifically: + +| loadbalancer sku | `externalTrafficPolicy` | spec.ports.Protocol | spec.ports.AppProtocol | `service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path` | LB Probe Protocol | LB Probe Request Path | +| ---------------- | ----------------------- | ------------------- | ---------------------- | -------------------------------------------------------------------------- | --------------------------------- | --------------------------- | +| standard | local | any | any | any | http | `/healthz` | +| standard | cluster | udp | any | any | null | null | +| standard | cluster | tcp | | (ignored) | tcp | null | +| standard | cluster | tcp | tcp | (ignored) | tcp | null | +| standard | cluster | tcp | http/https | | TCP(<=1.23) or http/https(>=1.24) | null(<=1.23) or `/`(>=1.24) | +| standard | cluster | tcp | http/https | `/custom-path` | http/https | `/custom-path` | +| standard | cluster | tcp | unsupported protocol | `/custom-path` | tcp | null | +| basic | local | any | any | any | http | `/healthz` | +| basic | cluster | tcp | | (ignored) | tcp | null | +| basic | cluster | tcp | tcp | (ignored) | tcp | null | +| basic | cluster | tcp | http | | TCP(<=1.23) or http/https(>=1.24) | null(<=1.23) or `/`(>=1.24) | +| basic | cluster | tcp | http | `/custom-path` | http | `/custom-path` | +| basic | cluster | tcp | unsupported protocol | `/custom-path` | tcp | null | + +Since v1.21, two service annotations `service.beta.kubernetes.io/azure-load-balancer-health-probe-interval` and `load-balancer-health-probe-num-of-probe` are introduced, which customize the configuration of health probe. If `service.beta.kubernetes.io/azure-load-balancer-health-probe-interval` is not set, Default value of 5 is applied. If `load-balancer-health-probe-num-of-probe` is not set, Default value of 2 is applied. And total probe should be less than 120 seconds. + + +### Custom Load Balancer health probe for port +Different ports in a service may require different health probe configurations. This could be because of service design (such as a single health endpoint controlling multiple ports), or Kubernetes features like the [MixedProtocolLBService](https://kubernetes.io/docs/concepts/services-networking/service/#load-balancers-with-mixed-protocol-types). + +The following annotations can be used to customize probe configuration per service port. + +| port specific annotation | global probe annotation | Usage | +| ---------------------------------------------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | +| service.beta.kubernetes.io/port_{port}_no_lb_rule | N/A (no equivalent globally) | if set true, no lb rules and probe rules will be generated | +| service.beta.kubernetes.io/port_{port}_no_probe_rule | N/A (no equivalent globally) | if set true, no probe rules will be generated | +| service.beta.kubernetes.io/port_{port}_health-probe_protocol | N/A (no equivalent globally) | Set the health probe protocol for this service port (e.g. Http, Https, Tcp) | +| service.beta.kubernetes.io/port_{port}_health-probe_port | N/A (no equivalent globally) | Sets the health probe port for this service port (e.g. 15021) | +| service.beta.kubernetes.io/port_{port}_health-probe_request-path | service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path | For Http or Https, sets the health probe request path. Defaults to / | +| service.beta.kubernetes.io/port_{port}_health-probe_num-of-probe | service.beta.kubernetes.io/azure-load-balancer-health-probe-num-of-probe | Number of consecutive probe failures before the port is considered unhealthy | +| service.beta.kubernetes.io/port_{port}_health-probe_interval | service.beta.kubernetes.io/azure-load-balancer-health-probe-interval | The amount of time between probe attempts | + +For following manifest, probe rule for port httpsserver is different from the one for httpserver because annoations for port httpsserver are specified. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: appservice + annotations: + service.beta.kubernetes.io/azure-load-balancer-health-probe-num-of-probe: "5" + service.beta.kubernetes.io/port_443_health-probe_num-of-probe: "4" +spec: + type: LoadBalancer + selector: + app: server + ports: + - name: httpserver + protocol: TCP + port: 80 + targetPort: 30102 + - name: httpsserver + protocol: TCP + appProtocol: HTTPS + port: 443 + targetPort: 30104 +``` + +In this manifest, the https ports use a different health probe endpoint, an HTTP readiness check at port 30000 on /healthz/ready. +```yaml +apiVersion: v1 +kind: Service +metadata: + name: istio + annotations: + service.beta.kubernetes.io/azure-load-balancer-internal: "true" + service.beta.kubernetes.io/port_443_health-probe_protocol: "http" + service.beta.kubernetes.io/port_443_health-probe_port: "30000" + service.beta.kubernetes.io/port_443_health-probe_request-path: "/healthz/ready" +spec: + ports: + - name: https + protocol: TCP + port: 443 + targetPort: 8443 + appProtocol: https + selector: + app: istio-ingressgateway + gateway: istio-ingressgateway + istio: ingressgateway + type: LoadBalancer + sessionAffinity: None + externalTrafficPolicy: Local + ipFamilies: + - IPv4 + ipFamilyPolicy: SingleStack + allocateLoadBalancerNodePorts: true + internalTrafficPolicy: Cluster +``` + +## Configure Load Balancer backend + +> This feature is supported since v1.23.0 + +The backend pool type can be configured by specifying `loadBalancerBackendPoolConfigurationType` in the cloud configuration file. There are three possible values: + +1. `nodeIPConfiguration` (default). In this case we attach nodes to the LB by calling the VMSS/NIC API to associate the corresponding node IP configuration with the LB backend pool. +2. `nodeIP`. In this case we attach nodes to the LB by calling the LB API to add the node private IP addresses to the LB backend pool. +3. `podIP` (not supported yet). In this case we do not attach nodes to the LB. Instead we directly adding pod IPs to the LB backend pool. + +To migrate from one backend pool type to another, just change the value of `loadBalancerBackendPoolConfigurationType` and re-apply the cloud configuration file. There will be downtime during the migration process. + +### Migration API from `nodeIPConfiguration` to `nodeIP` + +> This feature is supported since v1.24.0 + +The migration from `nodeIPConfiguration` to `nodeIP` can be done without downtime by configuring `"enableMigrateToIPBasedBackendPoolAPI": true` in the cloud configuration file. + +```bash + +## Load balancer limits + +The limits of the load balancer related resources are listed below: + +**Standard Load Balancer** + +| Resource | Limit | +| --------------------------------------- | ----------------------------------------------- | +| Load balancers | 1,000 | +| Rules per resource | 1,500 | +| Rules per NIC (across all IPs on a NIC) | 300 | +| Frontend IP configurations | 600 | +| Backend pool size | 1,000 IP configurations, single virtual network | +| Backend resources per Load Balancer | 150 | +| High-availability ports | 1 per internal frontend | +| Outbound rules per Load Balancer | 600 | +| Load Balancers per VM | 2 (1 Public and 1 internal) | + +The limit is up to 150 resources, in any combination of standalone virtual machine resources, availability set resources, and virtual machine scale-set placement groups. + +**Basic Load Balancer** + +| Resource | Limit | +| --------------------------------------- | ---------------------------------------------- | +| Load balancers | 1,000 | +| Rules per resource | 250 | +| Rules per NIC (across all IPs on a NIC) | 300 | +| Frontend IP configurations | 200 | +| Backend pool size | 300 IP configurations, single availability set | +| Availability sets per Load Balancer | 1 | +| Load Balancers per VM | 2 (1 Public and 1 internal) | diff --git a/content/en/topics/multislb.md b/content/en/topics/multislb.md new file mode 100644 index 0000000000..25535abb9d --- /dev/null +++ b/content/en/topics/multislb.md @@ -0,0 +1,72 @@ +--- +title: "Multiple Standard LoadBalancers" +linkTitle: "Multiple Standard LoadBalancers" +type: docs +description: Multiple Standard LoadBalancers. +--- + +# Multiple Standard LoadBalancers + +## Backgrounds + +There will be only a single Standard Load Balancer and a single Internal Load Balancer (if required) per cluster by default. This imposes a number of limits on clusters based on [Azure Load Balancer limits](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits#load-balancer), the largest being based on the 300 rules per NIC limitation. Any IP:port combination in a frontEndIPConfiguration that maps to a member of a backend pool counts as one of the 300 rules for that node. This limits any AKS cluster to a maximum of 300 LoadBalancer service IP:port combinations (so a maximum of 300 services with one port, or fewer if services have multiple ports). Load balancers are also limited to no more than 8 private link services targeting a given load balancer. + +## Configuration + +Introduce a new cloud configuration option `multipleStandardLoadBalancerConfigurations`. Example: + +```json +{ + ... + "loadBalancerBackendPoolConfigurationType": "nodeIP", + "multipleStandardLoadBalancerConfigurations": [ + { + "name": "", + "autoPlaceServices": true + }, + { + "name": "lb-2", + "autoPlaceServices": false, + "serviceNamespaceSelector": [ + "matchExpressions": [ + { + "key": "key1", + "operator": "In", + "values": [ + "val1" + ] + } + ] + ], + "nodeSelector": { + "matchLabels": { + "key1": "val1" + } + }, + "primaryVMSet": "vmss-1" + } + ] +} +``` + +- default lbs +The default lb `` is required in `loadBalancerProfiles`. The cloud provider will check if there is an lb config named ``. If not, an error will be reported in the service event. + +- internal lbs +The behavior of internal lbs remains the same as is. It shares the same config as its public counterpart and will be automatically created if needed with the name `-internal`. Internal lbs are not required in the `loadBalancerProfiles`, all lb names in it are considered public ones. + + +- Service selection + +In the cases of basic lb and the previous revision of multiple slb design, we use service annotation `service.beta.kubernetes.io/azure-load-balancer-mode` to decide which lb the service should be attached to. It can be set to an agent pool name, and the service will be attached to the lb belongs to that agent pool. If set to `__auto__`, we pick an lb with the fewest number of lb rules for the service. This selection logic will be replaced by the following: + +- New service annotation `service.beta.kubernetes.io/azure-load-balancer-configurations: ,` will replace the old annotation `service.beta.kubernetes.io/azure-load-balancer-mode` which will only be useful for basic SKU load balancers. If all selected lbs are not eligible, an error will be reported in the service events. If multiple eligible lbs are provided, choose one with the lowest number of rules. + +- `AllowServicePlacement` +This load balancer can have services placed on it. Defaults to true, can be set to false to drain and eventually remove a load balancer. This will not impact existing services on the load balancer. + +- `ServiceNamespaceSelector` +Only services created in namespaces that match the selector will be allowed to select that load balancer, either manually or automatically. If not supplied, services created in any namespaces can be created on that load balancer. If the value is changed, all services on this slb will be moved onto another one with the public/internal IP addresses unchanged. If the services have no place to go, an error should be thrown in the service event. + +- `ServiceLabelSelector` +Similar to `ServiceNamespaceSelector`. Services must match this selector to be placed on this load balancer. diff --git a/content/en/topics/node-types.md b/content/en/topics/node-types.md new file mode 100644 index 0000000000..15994c8723 --- /dev/null +++ b/content/en/topics/node-types.md @@ -0,0 +1,17 @@ +--- +title: "Support Multiple Node Types" +linkTitle: "Node Types" +weight: 4 +type: docs +description: > + Node type description in provider azure. +--- + +Kubernetes v1.26 adds support for using [Azure VMSS Flex VMs](https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-orchestration-modes#scale-sets-with-flexible-orchestration) as the cluster nodes. Besides, mixing up different VM types in the same cluster is also supported. There is no API change expected from end users' perspective when manipulating the Kubernetes cluster, however, users can choose to specify the VM type when configuring the Cloud Provider to further optimize the API calls in Cloud Controller Manager. Below are the configurations suggested based on the cluster modes. + +|Node Type|Configurations|Comments| +|---|---|---| +|Standalone VMs or AvailabilitySet VMs|vmType == standard|This will bypass the node type check and assume all the nodes in the cluster are standalone VMs / AvailabilitySet VMs. This should only be used for pure standalone VM / AvailabilitySet VM clusters. | +|VMSS Uniform VMs|vmType==vmss && DisableAvailabilitySetNodes==true && EnbleVmssFlexNodes==false|This will bypass the node type check and assume all the nodes in the cluster are VMSS Uniform VMs. This should only be used for pure VMSS Uniform VM clusters.| +|VMSS Flex VMs|vmType==vmssflex|This will bypass the node type check and assume all the nodes in the cluster are VMSS Flex VMs. This should only be used for pure VMSS Flex VM clusters (since v1.26.0).| +|Standalone VMs, AvailabilitySet VMs, VMSS Uniform VMs and VMSS Flex VMs|vmType==vmss && (DisableAvailabilitySetNodes==false \|\| EnbleVmssFlexNodes==true)|This should be used the clusters of which the nodes are mixed from standalone VMs, AvailabilitySet VMs, VMSS Flex VMs (since v1.26.0) and VMSS Uniform VMs. Node type will be checked and corresponding cloud provider API will be called based on the node type.| diff --git a/content/en/topics/pls-integration.md b/content/en/topics/pls-integration.md new file mode 100644 index 0000000000..2ca7838d5c --- /dev/null +++ b/content/en/topics/pls-integration.md @@ -0,0 +1,96 @@ +--- +title: "Azure Private Link Service Integration" +linkTitle: "Azure Private Link Service Integration" +type: docs +description: > + Connect Azure Private Link service to Azure Standard Load Balancer. +--- + +Azure Private Link Service (PLS) is an infrastructure component that allows users to privately connect via a Private Endpoint (PE) in a VNET in Azure and a Frontend IP Configuration associated with an Azure Load Balancer (ALB). With Private Link, users as service providers can securely provide their services to consumers who can connect from within Azure or on-premises without data exfiltration risks. + +Before Private Link Service integration, users who wanted private connectivity from on-premises or other VNETs to their services in the Azure Kubernetes cluster were required to create a Private Link Service (PLS) to reference the Azure LoadBalancer. The user would then create a Private Endpoint (PE) to connect to the PLS to enable private connectivity. With this feature, a managed PLS to the LB would be created automatically, and the user would only be required to create PE connections to it for private connectivity. + +> Note: When PLS has TCP proxy protocol V2 enabled (`service.beta.kubernetes.io/azure-pls-proxy-protocol: true`) and service `externalTrafficPolicy` is set to `Local`, LB health probe is down. This is because when PLS has proxy protocol enabled, the corresponding LB HTTP health probe would use proxy protocol as well. When service's `externalTrafficPolicy` is set to `Local`, health probe depends on kube-proxy's [health check service](https://github.com/kubernetes/kubernetes/blob/15a1f9a39db95a7f83ce5463a328566411d99d51/pkg/proxy/healthcheck/service_health.go#L187) which does not accept proxy protocol and all health probes fail. [PR #3931](https://github.com/kubernetes-sigs/cloud-provider-azure/pull/3931) allows users to customize health probe when `externalTrafficPolicy` is set to `Local` and thus provides the workaround. It will be released soon. + +## PrivateLinkService annotations + +Below is a list of annotations supported for Kubernetes services with Azure PLS created: + +| Annotation | Value | Description | Required | Default | +| ------------------------------------------------------------------------ | ---------------------------------- | ------------------------------------------------------------ |------|------| +| `service.beta.kubernetes.io/azure-pls-create` | `"true"` | Boolean indicating whether a PLS needs to be created. | Required | | +| `service.beta.kubernetes.io/azure-pls-name` | `` | String specifying the name of the PLS resource to be created. | Optional | `"pls-"` | +| `service.beta.kubernetes.io/azure-pls-ip-configuration-subnet` |`` | String indicating the subnet to which the PLS will be deployed. This subnet must exist in the same VNET as the backend pool. PLS NAT IPs are allocated within this subnet. | Optional | If `service.beta.kubernetes.io/azure-load-balancer-internal-subnet`, this ILB subnet is used. Otherwise, the default subnet from config file is used. | +| `service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count` | `[1-8]` | Total number of private NAT IPs to allocate. | Optional | 1 | +| `service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address` | `"10.0.0.7 ... 10.0.0.10"` | A space separated list of static **IPv4** IPs to be allocated. (IPv6 is not supported right now.) Total number of IPs should not be greater than the ip count specified in `service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count`. If there are fewer IPs specified, the rest are dynamically allocated. The first IP in the list is set as `Primary`. | Optional | All IPs are dynamically allocated. | +| `service.beta.kubernetes.io/azure-pls-fqdns` | `"fqdn1 fqdn2"` | A space separated list of fqdns associated with the PLS. | Optional | `[]` | +| `service.beta.kubernetes.io/azure-pls-proxy-protocol` | `"true"` or `"false"` | Boolean indicating whether the TCP PROXY protocol should be enabled on the PLS to pass through connection information, including the link ID and source IP address. Note that the backend service MUST support the PROXY protocol or the connections will fail. | Optional | `false` | +| `service.beta.kubernetes.io/azure-pls-visibility` | `"sub1 sub2 sub3 … subN"` or `"*"` | A space separated list of Azure subscription ids for which the private link service is visible. Use `"*"` to expose the PLS to all subs (Least restrictive). | Optional | Empty list `[]` indicating role-based access control only: This private link service will only be available to individuals with role-based access control permissions within your directory. (Most restrictive) | +| `service.beta.kubernetes.io/azure-pls-auto-approval` | `"sub1 sub2 sub3 … subN"` | A space separated list of Azure subscription ids. This allows PE connection requests from the subscriptions listed to the PLS to be automatically approved. This only works when visibility is set to "*". | Optional | `[]` | + +For more details about each configuration, please refer to [Azure Private Link Service Documentation](https://docs.microsoft.com/en-us/cli/azure/network/private-link-service?view=azure-cli-latest#az-network-private-link-service-create). + + +## Design Details + +### Creating managed PrivateLinkService + +When a `LoadBalancer` typed service is created without the annotations `service.beta.kubernetes.io/azure-load-balancer-ipv4`, `service.beta.kubernetes.io/azure-load-balancer-ipv6` or field `Service.Spec.LoadBalancerIP` set, an LB frontend IP configuration is created with a dynamically generated IP. If the service has the annotation `service.beta.kubernetes.io/azure-load-balancer-ipv4` or `service.beta.kubernetes.io/azure-load-balancer-ipv6` set, an existing LB frontend IP configuration may be reused if one exists; otherwise a static configuration is created with the specified IP. When a service is created with annotation `service.beta.kubernetes.io/azure-pls-create` set to `true` or updated later with the annotation added, a PLS resource attached to the LB frontend is created in the default resource group or the resource group user set in config file with key `PrivateLinkServiceResourceGroup`. + +The Kubernetes service creating the PLS is assigned as the owner of the resource. Azure cloud provider tags the PLS with cluster name and service name `kubernetes-owner-service: /`. Only the owner service can later update the properties of the PLS resource. + +If there's a managed PLS already created for the LB frontend, the same PLS is reused automatically since each LB frontend can be referenced by only one PLS. If the LB frontend is attached to a user defined PLS, service creation should fail with proper error logged. + +For now, Azure cloud provider does not manage any [Private Link Endpoint](https://docs.microsoft.com/en-us/azure/private-link/private-endpoint-overview) resources. Once a PLS is created, users can create their own PEs to connect to the PLS. + +### Deleting managed PrivateLinkService + +Once a PLS is created, it shares the lifetime of the LB frontend IP configuration and is deleted only when its corresponding LB frontend gets deleted. As a result, a PLS may still exist even when its owner service is deleted. This is out of the consideration that multiple Kubernetes services can share the same LB frontend IP configuration and thus share the PLS automatically. More details are discussed in [next section](#sharing-managed-privatelinkservice). + +If there are active PE connections to the PLS, all connections are removed and the PEs become obsolete. Users are responsible for cleaning up the PE resources. + +### Sharing managed PrivateLinkService + +Multiple Kubernetes services can share the same LB frontend by specifying the same annotations `service.beta.kubernetes.io/azure-load-balancer-ipv4`, `service.beta.kubernetes.io/azure-load-balancer-ipv6` or field `Service.Spec.LoadBalancerIP` (for more details, please refer to [Multiple Services Sharing One IP Address](../shared-ip)). Once a PLS is attached to the LB frontend, these services automatically share the PLS. Users can access these services via the same PE but different ports. + +Azure cloud provider tags the service creating the PLS as the owner (`kubernetes-owner-service: /`) and only allows that service to update the configurations of the PLS. If the owner service is deleted or if user wants some other service to take control, user can modify the tag value to a new service in `/` pattern. + +PLS is only automatically deleted when the LB frontend IP configuration is deleted. One can delete a service while preserving the PLS by creating a temporary service referring to the same LB frontend. + +### Managed PrivateLinkService Creation example + +Below we provide an example for creating a Kubernetes service object with Azure ILB and PLS created: + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: myService + annotations: + service.beta.kubernetes.io/azure-load-balancer-internal: "true" # Use an internal LB with PLS + service.beta.kubernetes.io/azure-pls-create: "true" + service.beta.kubernetes.io/azure-pls-name: myServicePLS + service.beta.kubernetes.io/azure-pls-ip-configuration-subnet: pls-subnet + service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count: "1" + service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address: 10.240.0.9 # Must be available in pls-subnet + service.beta.kubernetes.io/azure-pls-fqdns: "fqdn1 fqdn2" + service.beta.kubernetes.io/azure-pls-proxy-protocol: "false" + service.beta.kubernetes.io/azure-pls-visibility: "*" + service.beta.kubernetes.io/azure-pls-auto-approval: "subId1" +spec: + type: LoadBalancer + selector: + app: myApp + ports: + - name: myAppPort + protocol: TCP + port: 80 + targetPort: 80 +``` +## Restrictions + +* PLS does not support basic Load Balancer or IP-based Load Balancer. +* PLS connectivity is broken with Azure external Standard Load Balancer and floating ip enabled (default). To use managed private link service, users can either create an internal service by setting annotation `service.beta.kubernetes.io/azure-load-balancer-internal` to `true` or disable floating ip by setting annotation `service.beta.kubernetes.io/service.beta.kubernetes.io/azure-disable-load-balancer-floating-ip` to `true` ([more details here](../loadbalancer)). +* Due to limitation of [kubernetes#95555](https://github.com/kubernetes/kubernetes/issues/95555), when the service's externalTrafficPolicy set to Local, PLS need to use a different subnet from Pod's subnet. If the same subnet is required, then the service should use Cluster externalTrafficPolicy. +* PLS only works with IPv4 and cannot be deployed to an SLB with IPv6 frontend ipConfigurations. In dual-stack clusters, users cannot create a service with PLS if there's existing IPv6 service deployed on the same load balancer. +* For other limitations, please check [Azure Private Link Service Doc](https://learn.microsoft.com/en-us/azure/private-link/private-link-service-overview). diff --git a/content/en/topics/shared-ip.md b/content/en/topics/shared-ip.md new file mode 100644 index 0000000000..8e61eaf261 --- /dev/null +++ b/content/en/topics/shared-ip.md @@ -0,0 +1,70 @@ +--- +title: "Multiple Services Sharing One IP Address" +linkTitle: "Multiple Services Sharing One IP Address" +weight: 6 +type: docs +description: > + Bind one IP address to multiple services. +--- + +> This feature is supported since v1.20.0. + +Provider Azure supports sharing one IP address among multiple load balancer typed external or internal services. To share an IP address among multiple public services, a public IP resource is needed. This public IP could be created in advance or let the cloud provider provision it when creating the first external service. Specifically, Azure would create a public IP resource automatically when an external service is discovered. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: nginx + namespace: default +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 80 + selector: + app: nginx + type: LoadBalancer +``` + +Note that the annotations `service.beta.kubernetes.io/azure-load-balancer-ipv4`, `service.beta.kubernetes.io/azure-load-balancer-ipv6`, field `Service.Spec.LoadBalancerIP` are not set, or Azure would find a pre-allocated public IP with the address. After obtaining the IP address of the service, you could create other services using this address. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: https + namespace: default + annotations: + service.beta.kubernetes.io/azure-load-balancer-ipv4: 1.2.3.4 # the IP address could be the same as it is of `nginx` service +spec: + ports: + - port: 443 + protocol: TCP + targetPort: 443 + selector: + app: https + type: LoadBalancer +``` + +Note that if you specify the annotations `service.beta.kubernetes.io/azure-load-balancer-ipv4`, `service.beta.kubernetes.io/azure-load-balancer-ipv6` or field `Service.Spec.LoadBalancerIP` but there is no corresponding public IP pre-allocated, an error would be reported. + +## DNS + +Even if multiple services can refer to one public IP, the DNS label cannot be re-used. The public IP would have the label `kubernetes-dns-label-service: ` to indicate which service is binding to the DNS label. In this case if there is another service sharing this specific IP address trying to refer to the DNS label, an error would be reported. For managed public IPs, this label will be added automatically by the cloud provider. For static public IPs, this label should be added manually. + +```yaml + +## Restrictions + +The cloud provider azure manages the lifecycle of the system-created public IPs. By default, there are two kinds of system managed tags: `kubernetes-cluster-name` and `service` (see the picture below). The controller manager would +add the service name to the `service` if a service is trying to refer to the public IP, and remove the name from the `service` if the service is deleted. The public IP would be deleted if there is no service +in the tag `service`. However, according to the [docs of azure tags](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/tag-resources#limitations), there are several restrictions: + +- Each resource, resource group, and subscription can have a maximum of 50 tag name/value pairs. If you need to apply more tags than the maximum allowed number, use a JSON string for the tag value. The JSON string can contain many values that are applied to a single tag name. A resource group or subscription can contain many resources that each have 50 tag name/value pairs. + +- The tag name is limited to 512 characters, and the tag value is limited to 256 characters. For storage accounts, the tag name is limited to 128 characters, and the tag value is limited to 256 characters. + +Based to that, we suggest to use static public IPs when there are more than 10 services sharing the IP address. + +![tags on the public IP](../images/pip-labels.png) diff --git a/content/en/topics/tagging-resources.md b/content/en/topics/tagging-resources.md new file mode 100644 index 0000000000..1b3b6a43d4 --- /dev/null +++ b/content/en/topics/tagging-resources.md @@ -0,0 +1,57 @@ +--- +title: "Tagging resources managed by Cloud Provider Azure" +linkTitle: "Tagging resources managed by Cloud Provider Azure" +weight: 7 +type: docs +--- + +> This feature is supported since v1.20.0. + +We could use tags to organize your Azure resources and management hierarchy. Cloud Provider Azure supports tagging managed resource through configuration file or service annotation. + +Specifically, the shared resources (load balancer, route table and security group) could be tagged by setting `tags` in `azure.json`: + +```json +{ + "tags": "a=b,c=d" +} +``` + +the controller manager would parse this configuration and tag the shared resources once restarted. + +The non-shared resource (public IP) could be tagged by setting `tags` in `azure.json` or service annotation `service.beta.kubernetes.io/azure-pip-tags`. The format of the two is similar and the tags in the annotation would be considered first when there are conflicts between the configuration file and the annotation. + +> The annotation `service.beta.kubernetes.io/azure-pip-tags` only works for managed public IPs. For BYO public IPs, the cloud provider would not apply any tags to them. + +When the configuration, file or annotation, is updated, the old ones would be updated if there are conflicts. For example, after updating `{"tags": "a=b,c=d"}` to `{"tags": "a=c,e=f"}`, the new tags would be `a=c,c=d,e=f`. + +## Integrating with system tags + +> This feature is supported since v1.21.0. + +Normally the controller manager don't delete the existing tags even if they are not included in the new version of azure configuration files, because the controller manager doesn't know which tags should be deleted and which should not (e.g., tags managed by cloud provider itself). We can leverage the config `systemTags` in the cloud configuration file to control what tags can be deleted. Here are the examples: + +| Tags | SystemTags | existing tags on resources | new tags on resources | +| ----- | ------------ | ----- | ----- | +| "a=b,c=d" | "" | {} | {"a": "b", "c": "d"} | +| "a=b,c=d" | "" | {"a": "x", "c": "y"} | {"a": "b", "c": "d"} | +| "a=b,c=d" | "" | {"e": "f"} | {"a": "b", "c": "d", "e": "f"} /* won't delete `e` because the SystemTags is empty */ | +| "c=d" | "a" | {"a": "b"} | {"a": "b", "c": "d"} /* won't delete `a` because it's in the SystemTags */ | +| "c=d" | "x" | {"a": "b"} | {"c": "d"} /* will delete `a` because it's not in Tags or SystemTags */ | + +> Please consider migrating existing "tags" to "tagsMap", the support of "tags" configuration would be removed in a future release. + +## Including special characters in tags + +> This feature is supported since v1.23.0. + +Normally we don't support special characters such as `=` or `,` in key-value pairs. These characters will be treated as separator and will not be included in the key/value literal. To solve this problem, `tagsMap` is introduced since v1.23.0, in which a JSON-style tag is acceptable. + +```json +{ + "tags": "a=b,c=d", + "tagsMap": {"e": "f", "g=h": "i,j"} +} +``` + +`tags` and `tagsMap` will be merged, and similarly, they are case-insensitive. diff --git a/go.mod b/go.mod new file mode 100644 index 0000000000..c38f10185e --- /dev/null +++ b/go.mod @@ -0,0 +1,10 @@ +module sigs.k8s.io/cloud-provider-azure/site + +go 1.20 + +require ( + github.com/FortAwesome/Font-Awesome v0.0.0-20230327165841-0698449d50f2 // indirect + github.com/google/docsy v0.7.0 // indirect + github.com/google/docsy/dependencies v0.7.0 // indirect + github.com/twbs/bootstrap v5.2.3+incompatible // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000000..fe3052d42c --- /dev/null +++ b/go.sum @@ -0,0 +1,16 @@ +github.com/FortAwesome/Font-Awesome v0.0.0-20220831210243-d3a7818c253f h1:bvkUptSRPZBr3Kxuk+bnWCEmQ5MtEJX5fjezyV0bC3g= +github.com/FortAwesome/Font-Awesome v0.0.0-20220831210243-d3a7818c253f/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= +github.com/FortAwesome/Font-Awesome v0.0.0-20230327165841-0698449d50f2 h1:Uv1z5EqCfmiK4IHUwT0m3h/u/WCk+kpRfxvAZhpC7Gc= +github.com/FortAwesome/Font-Awesome v0.0.0-20230327165841-0698449d50f2/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= +github.com/google/docsy v0.6.0 h1:43bVF18t2JihAamelQjjGzx1vO2ljCilVrBgetCA8oI= +github.com/google/docsy v0.6.0/go.mod h1:VKKLqD8PQ7AglJc98yBorATfW7GrNVsn0kGXVYF6G+M= +github.com/google/docsy v0.7.0 h1:JaeZ0/KufX/BJ3SyATb/fmZa1DFI7o5d9KU+i6+lLJY= +github.com/google/docsy v0.7.0/go.mod h1:5WhIFchr5BfH6agjcInhpLRz7U7map0bcmKSpcrg6BE= +github.com/google/docsy/dependencies v0.6.0 h1:BFXDCINbp8ZuUGl/mrHjMfhCg+b1YX+hVLAA5fGW7Pc= +github.com/google/docsy/dependencies v0.6.0/go.mod h1:EDGc2znMbGUw0RW5kWwy2oGgLt0iVXBmoq4UOqstuNE= +github.com/google/docsy/dependencies v0.7.0 h1:/xUlWCZOSMDubHfrhIz1YtaRn2Oc/swfJ7OUfglXE8U= +github.com/google/docsy/dependencies v0.7.0/go.mod h1:gihhs5gmgeO+wuoay4FwOzob+jYJVyQbNaQOh788lD4= +github.com/twbs/bootstrap v4.6.2+incompatible h1:TDa+R51BTiy1wEHSYjmqDb8LxNl/zaEjAOpRE9Hwh/o= +github.com/twbs/bootstrap v4.6.2+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= +github.com/twbs/bootstrap v5.2.3+incompatible h1:lOmsJx587qfF7/gE7Vv4FxEofegyJlEACeVV+Mt7cgc= +github.com/twbs/bootstrap v5.2.3+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0= diff --git a/layouts/404.html b/layouts/404.html new file mode 100644 index 0000000000..378b736750 --- /dev/null +++ b/layouts/404.html @@ -0,0 +1,10 @@ +{{ define "main"}} +
+
+

Not found

+

Oops! This page doesn't exist. Try going back to our home page.

+ +

You can learn how to make a 404 page like this in Custom 404 Pages.

+
+
+{{ end }} diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000000..5d9cb49de0 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,28 @@ +# Netlify build instructions +[build] + command = "npm install && hugo --minify --environment netlify" + publish = "public/" + +[build.environment] + HUGO_VERSION = "0.113.0" + GO_VERSION = "1.19.2" + +# Standard Netlify redirects +[[redirects]] + from = "https://kubernetes-sigs-cloud-provide-azure.netlify.app/*" + to = "https://cloud-provider-azure.sigs.k8s.io/:splat" + status = 301 + force = true + +# HTTP-to-HTTPS rules +[[redirects]] + from = "http://kubernetes-sigs-cloud-provide-azure.netlify.app/*" + to = "https://cloud-provider-azure.sigs.k8s.io/:splat" + status = 301 + force = true + +[[redirects]] + from = "http://kubernetes-sigs-cloud-provide-azure.netlify.app/*" + to = "http://cloud-provider-azure.sigs.k8s.io/:splat" + status = 301 + force = true diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..8fd2dc6777 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,920 @@ +{ + "name": "site", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "site", + "dependencies": { + "autoprefixer": "^10.4.14", + "postcss-cli": "^10.1.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001492", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001492.tgz", + "integrity": "sha512-2efF8SAZwgAX1FJr87KWhvuJxnGJKOnctQa8xLOskAXNXq8oiuqgl6u1kk3fFpsp3GgvzlRjiK1sl63hNtFADw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.417", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.417.tgz", + "integrity": "sha512-8rY8HdCxuSVY8wku3i/eDac4g1b4cSbruzocenrqBlzqruAZYHjQCHIjC66dLR9DXhEHTojsC4EjhZ8KmzwXqA==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/ignore": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-cli": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", + "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^0.11.0", + "fs-extra": "^11.0.0", + "get-stdin": "^9.0.0", + "globby": "^13.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^4.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-reporter": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", + "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/slash": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.0.0.tgz", + "integrity": "sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000000..7930fedecb --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "autoprefixer": "^10.4.14", + "postcss-cli": "^10.1.0" + } +}