lakeFS Mount CSI Driver v1.4.0¶
Changelog¶
- Bumped the bundled
everestmount binary from0.12.0to0.14.0. For the CSI driver this means: - Mount Pods exit after their volume is unmounted and stop promptly on SIGTERM. Before, every unmounted volume left a
RunningMount Pod behind, which accumulated in theeverest-lakefs-csinamespace and blocked node scale-down. Deleting one by hand waited out the full 600s grace period. - Directories are group-writable when the mount has a
--mount-gid, which completes thefsGroupsupport below. - See the everest changelog for the full list, including
0.13.0.
Warning: the ServiceAccount names change in this release. If the driver uses driver-level IRSA or EKS Pod Identity, it loses its AWS credentials on upgrade unless you migrate the IAM binding first. See the upgrade notes.
Features¶
- Added the
node.updateStrategychart value, rendered as the node DaemonSet'sspec.updateStrategy. Kubernetes' default rolls one node at a time, which makes upgrades on clusters with thousands of nodes impractically slow; set, for example,rollingUpdate.maxUnavailable: 10%, or usetype: OnDelete. The default{}omits the field, so existing installs are unaffected. - A workload Pod's
fsGroupis passed to everest as--mount-gid, so the mount is owned byroot:<fsGroup>and directories are0775. A non-root workload with anfsGroupcan now create files in a write-mode mount. A--mount-gidset inmountOptionsstill takes precedence. Mount Pods no longer default to--mount-gid=0.
Fixes¶
- Renamed the chart's ServiceAccounts, ClusterRoles, ClusterRoleBindings, Roles and RoleBindings from
s3-csi-driver-*toeverest-lakefs-csi-*, so the chart installs alongsideaws-mountpoint-s3-csi-driver, including in the same namespace. The ServiceAccounts default toeverest-lakefs-csi-sa(node) andeverest-lakefs-csi-controller-sa(controller). - Helm chart bumped to
1.4.0with matchingappVersionandimage.tag.
Upgrade notes¶
- Driver-level IRSA or EKS Pod Identity: move the IAM binding to the new node ServiceAccount before upgrading, or the driver loses its AWS credentials. Pod-level (
authenticationSource: pod) andsecretcredentials are unaffected. - IRSA: add
system:serviceaccount:<namespace>:everest-lakefs-csi-sato the IAM role trust policy'ssubcondition. Remove thes3-csi-driver-saentry after the upgrade. - IRSA annotation: the chart creates the new ServiceAccount with only the annotations in
node.serviceAccount.annotations. If you seteks.amazonaws.com/role-arnthere, it carries over. If you added it tos3-csi-driver-sadirectly (for example withkubectl annotateoreksctl create iamserviceaccountwithout--role-only), it does not: setnode.serviceAccount.annotations."eks\.amazonaws\.com/role-arn"in your values before upgrading. - EKS Pod Identity: create an association for
everest-lakefs-csi-sain the release namespace with the same IAM role. Delete thes3-csi-driver-saassociation after the upgrade. - To skip the migration, keep the previous names with
--set node.serviceAccount.name=s3-csi-driver-sa --set controller.serviceAccount.name=s3-csi-driver-controller-sa. The chart then cannot share a namespace withaws-mountpoint-s3-csi-driver. - Rollout window:
helm upgradedeletes the previous ServiceAccounts and RBAC objects before it waits for the rollout, even with--wait. Node and controller Pods still running as the previous ServiceAccount lose Kubernetes API access until they are replaced, so volume mounts and unmounts on those nodes can fail during the rollout; kubelet retries them. - Running alongside
aws-mountpoint-s3-csi-driver: Helm deletes the previous objects even when another release owns them. If the AWS release ownss3-csi-driver-cluster-role,s3-csi-driver-controller-cluster-role,s3-csi-driver-controller-cluster-role-bindingor a ServiceAccount of the same name, runhelm upgradeon that release afterwards to recreate them. - Kustomize:
kubectl apply -k deploy/kubernetes/...does not prune. Delete thes3-csi-driver-*ServiceAccounts, ClusterRoles, ClusterRoleBindings, Roles and RoleBindings by hand, unlessaws-mountpoint-s3-csi-driveruses them.
Docker¶
Verify the signature (optional)¶
Requires Cosign:
cosign verify treeverse/everest-lakefs-csi-driver:1.4.0 \
--certificate-identity-regexp='^https://github\.com/treeverse/everest\-lakefs\-csi\-driver/\.github/workflows/' \
--certificate-oidc-issuer='https://token.actions.githubusercontent.com'
Expected output
Verification for index.docker.io/treeverse/everest-lakefs-csi-driver:1.4.0 --
The following checks were performed on each of these signatures:
- The cosign claims were validated
- Existence of the claims in the transparency log was verified offline
- The code-signing certificate was verified using trusted certificate authority certificates