Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CHANGELOG-2.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Changelog since v2.0.0

The attacher now supports CSI version 1.2.0, namely LIST_VOLUMES_PUBLISHED_NODES capability. When the capability is supported by CSI driver, the attacher periodically syncs volume attachments requested by Kubernetes with actual state reported by CSI driver.

## New Features

- The attacher reconciles VolumeAttachment status with actual back-end volume attachment state if plugin supports LIST_VOLUMES_PUBLISHED_NODES capability. ([#184](https://github.com/kubernetes-csi/external-attacher/pull/184), [@davidz627](https://github.com/davidz627))
- Add prometheus metrics to CSI external-attacher under the /metrics endpoint. This can be enabled via the "--metrics-address" and "--metrics-path" options. ([#201](https://github.com/kubernetes-csi/external-attacher/pull/201), [@saad-ali](https://github.com/saad-ali))


## Other Notable Changes

- Migrated to Go modules, so the source builds also outside of GOPATH. ([#188](https://github.com/kubernetes-csi/external-attacher/pull/188), [@pohly](https://github.com/pohly))
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ The external-attacher is an external controller that monitors `VolumeAttachment`

This information reflects the head of this branch.

| Compatible with CSI Version | Container Image | Min K8s Version |
| ------------------------------------------------------------------------------------------ | ----------------------------| --------------- |
| [CSI Spec v1.0.0](https://github.com/container-storage-interface/spec/releases/tag/v1.0.0) | quay.io/k8scsi/csi-attacher | 1.15 |
| Compatible with CSI Version | Container Image | Min K8s Version | Recommended K8s Version |
| ------------------------------------------------------------------------------------------ | ----------------------------| --------------- | ----------------------- |
| [CSI Spec v1.2.0](https://github.com/container-storage-interface/spec/releases/tag/v1.2.0) | quay.io/k8scsi/csi-attacher | 1.15 | 1.17 |

## Feature Status

Expand All @@ -32,7 +32,7 @@ The following table reflects the head of this branch.
| Feature | Status | Default | Description |
| ------------- | ------- | ------- | --------------------------------------------------------------------------------------------- |
| CSINode* | Beta | On | external-attacher uses the CSINode object to get the driver's node name instead of the Node annotation. |
| CSIMigration* | Alpha | On | [Migrating in-tree volume plugins to CSI](https://kubernetes.io/docs/concepts/storage/volumes/#csi-migration). |
| CSIMigration* | Beta | On | [Migrating in-tree volume plugins to CSI](https://kubernetes.io/docs/concepts/storage/volumes/#csi-migration). |
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CSINode is GA now, but we still use beta object for backwards compatibility. How do you want to note it? Or can we remove it altogether? Our min version is 1.15 which means that it should not be falling back on node annotation anymore

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have we ever removed storage.k8s.io/v1beta1? IMO we've always added new objects there (+v1alpha1) and we do not deprecate / remove it. We can keep using it and move to v1 in the next release, bumping just min. k8s version.

We should not use the node annotation, I filed #203.


*) There are no special feature gates for these features. They are enabled by turning on the corresponding features in Kubernetes.

Expand Down Expand Up @@ -71,6 +71,8 @@ Note that the external-attacher does not scale with more replicas. Only one exte

* `--metrics-path`: The HTTP path where prometheus metrics will be exposed. Default is `/metrics`.

* `--reconcile-sync`: Resync frequency of the attached volumes with the driver. See [Periodic re-sync](#periodic-re-sync) for details. 1 minute is used by default.

#### Other recognized arguments
* `--kubeconfig <path>`: Path to Kubernetes client configuration that the external-attacher uses to connect to Kubernetes API server. When omitted, default token provided by Kubernetes will be used. This option is useful only when the external-attacher does not run as a Kubernetes pod, e.g. for debugging.

Expand All @@ -90,6 +92,9 @@ The external-attacher invokes all gRPC calls to CSI driver with timeout provided

Correct timeout value depends on the storage backend and how quickly it is able to processes `ControllerPublish` and `ControllerUnpublish` calls. The value should be set to accommodate majority of them. It is fine if some calls time out - such calls will be re-tried after exponential backoff (starting with `--retry-interval-start`), however, this backoff will introduce delay when the call times out several times for a single volume (up to `--retry-interval-max`).

### Periodic re-sync
When CSI driver supports `LIST_VOLUMES` and `LIST_VOLUMES_PUBLISHED_NODES` capabilities, the external attacher periodically syncs volume attachments requested by Kubernetes with the actual state reported by CSI driver. Volumes detached by any 3rd party, but still required to be attached by Kubernetes, will be re-attached back. Frequency of this re-sync is controlled by `--reconcile-sync` command line parameter.

## Community, discussion, contribution, and support

Learn how to engage with the Kubernetes community on the [community page](http://kubernetes.io/community/).
Expand Down