Skip to content

Commit e584d79

Browse files
committed
V0.4.0 Release
2 parents 5016f6d + 5afb9ff commit e584d79

File tree

2,803 files changed

+191527
-464361
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,803 files changed

+191527
-464361
lines changed

.github/ISSUE_TEMPLATE/support.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ about: Ask questions about this project
44

55
---
66

7-
<!--
7+
<!--
88
STOP -- PLEASE READ!
99
1010
GitHub is not the right place for support requests.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Optionally add one or more of the following kinds if applicable:
3131
**What this PR does / why we need it**:
3232

3333
**Which issue(s) this PR fixes**:
34-
<!--
34+
<!--
3535
*Automatically closes linked issue when PR is merged.
3636
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
3737
_If PR is about `failing-tests or flakes`, please post the related issues/tests in a comment and do not use `Fixes`_*

.github/workflows/long_haul.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ name: Long-Haul Test
1212
jobs:
1313
Run-long-haul-on-AKS:
1414
name: Run long-haul on AKS
15-
runs-on: ubuntu-latest
15+
runs-on: ubuntu-latest
1616
steps:
1717
- name: Check out code
1818
uses: actions/checkout@v4
19-
19+
2020
- name: Azure Login
2121
uses: Azure/login@v1.1
2222
with:

.github/workflows/static.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jobs:
1818
with:
1919
go-version-file: 'go.mod'
2020
- name: Run linter
21-
uses: golangci/golangci-lint-action@v6
21+
uses: golangci/golangci-lint-action@v9
2222
with:
2323
working-directory: pkg
24+
version: v2.6

.github/workflows/trivy.yaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,17 @@ jobs:
3434
- name: Run Trivy vulnerability scanner
3535
uses: aquasecurity/trivy-action@master
3636
with:
37-
image-ref: 'test/azurelustre-csi:latest'
37+
image-ref: 'test/azurelustre-csi:latest-jammy'
38+
format: 'table'
39+
exit-code: '1'
40+
ignore-unfixed: true
41+
vuln-type: 'os,library'
42+
severity: 'CRITICAL,HIGH,MEDIUM,LOW,UNKNOWN'
43+
44+
- name: Run Trivy vulnerability scanner
45+
uses: aquasecurity/trivy-action@master
46+
with:
47+
image-ref: 'test/azurelustre-csi:latest-noble'
3848
format: 'table'
3949
exit-code: '1'
4050
ignore-unfixed: true

.golangci.yaml

Lines changed: 79 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,100 @@
1+
version: "2"
12
linters:
2-
presets:
3-
- bugs
43
enable:
4+
- asasalint
5+
- asciicheck
6+
- bidichk
7+
- bodyclose
58
- containedctx
9+
- contextcheck
610
- copyloopvar
711
- decorder
812
- dupl
13+
- durationcheck
14+
- errchkjson
15+
- errorlint
16+
- exhaustive
917
- forbidigo
1018
- forcetypeassert
11-
- gci
12-
- gofmt
13-
- gofumpt
14-
- goimports
15-
- gosimple
19+
- gocheckcompilerdirectives
20+
- gochecksumtype
21+
- gosec
22+
- gosmopolitan
1623
- grouper
1724
- inamedparam
18-
- ineffassign
25+
- loggercheck
26+
- makezero
1927
- misspell
28+
- musttag
29+
- nilerr
30+
- nilnesserr
31+
- noctx
2032
- nolintlint
2133
- nonamedreturns
2234
- nosprintfhostport
2335
- predeclared
36+
- protogetter
37+
- reassign
38+
- recvcheck
2439
- revive
25-
- stylecheck
40+
- rowserrcheck
41+
- spancheck
42+
- sqlclosecheck
43+
- staticcheck
2644
- tagalign
27-
- tenv
45+
- testifylint
2846
- unconvert
29-
- unused
3047
- usestdlibvars
3148
- wastedassign
3249
- whitespace
33-
linters-settings:
34-
copyloopvar:
35-
check-alias: true
36-
errcheck:
37-
check-blank: true
38-
check-type-assertions: true
39-
disable-default-exclusions: true
40-
gofumpt:
41-
extra-rules: true
42-
grouper:
43-
const-require-grouping: true
44-
const-require-single-const: true
45-
import-require-grouping: false
46-
import-require-single-import: true
47-
type-require-grouping: false
48-
type-require-single-type: false
49-
var-require-grouping: false
50-
var-require-single-var: true
51-
nolintlint:
52-
require-explanation: true
53-
require-specific: true
54-
unparam:
55-
check-exported: true
56-
run:
57-
timeout: 30m
50+
- zerologlint
51+
settings:
52+
copyloopvar:
53+
check-alias: true
54+
errcheck:
55+
disable-default-exclusions: true
56+
check-type-assertions: true
57+
check-blank: true
58+
grouper:
59+
const-require-single-const: true
60+
const-require-grouping: true
61+
import-require-single-import: true
62+
import-require-grouping: false
63+
type-require-single-type: false
64+
type-require-grouping: false
65+
var-require-single-var: true
66+
var-require-grouping: false
67+
nolintlint:
68+
require-explanation: true
69+
require-specific: true
70+
unparam:
71+
check-exported: true
72+
exclusions:
73+
presets:
74+
- comments
75+
#- common-false-positives
76+
#- legacy
77+
#- std-error-handling
78+
paths:
79+
- third_party$
80+
- builtin$
81+
- examples$
82+
rules:
83+
- linters:
84+
- revive
85+
path: 'util/*'
86+
text: 'var-naming: avoid meaningless package names'
87+
formatters:
88+
enable:
89+
- gci
90+
- gofmt
91+
- gofumpt
92+
- goimports
93+
settings:
94+
gofumpt:
95+
extra-rules: true
96+
exclusions:
97+
paths:
98+
- third_party$
99+
- builtin$
100+
- examples$

Makefile

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ REGISTRY ?= azurelustre.azurecr.io
1818
REGISTRY_NAME ?= $(shell echo $(REGISTRY) | sed "s/.azurecr.io//g")
1919
TARGET ?= csi
2020
IMAGE_NAME ?= azurelustre-$(TARGET)
21-
IMAGE_VERSION ?= v0.3.1
21+
IMAGE_VERSION ?= v0.4.0
2222
CLOUD ?= AzurePublicCloud
2323
# Use a custom version for E2E tests if we are in Prow
2424
ifdef CI
@@ -39,9 +39,9 @@ GINKGO_FLAGS = -ginkgo.v
3939
GO111MODULE = on
4040
GOPATH ?= $(shell go env GOPATH)
4141
GOBIN ?= $(GOPATH)/bin
42-
CGO_ENABLED ?= 0
42+
CGO_ENABLED ?= 1
4343
DOCKER_CLI_EXPERIMENTAL = enabled
44-
export GOPATH GOBIN GO111MODULE DOCKER_CLI_EXPERIMENTAL
44+
export GOPATH GOBIN GO111MODULE DOCKER_CLI_EXPERIMENTAL CGO_ENABLED
4545

4646
# The current context of image building
4747
# The architecture of the image
@@ -116,34 +116,27 @@ e2e-teardown:
116116
#
117117
.PHONY: quicklustre
118118
quicklustre:
119-
CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) go build -ldflags ${LDFLAGS} -mod vendor -o _output/azurelustreplugin ./pkg/azurelustreplugin
119+
GOOS=linux GOARCH=$(ARCH) go build -ldflags ${LDFLAGS} -mod vendor -o _output/azurelustreplugin ./pkg/azurelustreplugin
120120

121121
.PHONY: azurelustre
122122
azurelustre:
123-
CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) go build -a -ldflags ${LDFLAGS} -mod vendor -o _output/azurelustreplugin ./pkg/azurelustreplugin
123+
GOOS=linux GOARCH=$(ARCH) go build -a -ldflags ${LDFLAGS} -mod vendor -o _output/azurelustreplugin ./pkg/azurelustreplugin
124124

125125
.PHONY: azurelustre-dalec
126126
azurelustre-dalec:
127127
GOOS=linux go build -a -ldflags ${LDFLAGS} -mod vendor -o /app/azurelustreplugin ./pkg/azurelustreplugin
128128

129-
.PHONY: azurelustre-windows
130-
azurelustre-windows:
131-
CGO_ENABLED=0 GOOS=windows go build -a -ldflags ${LDFLAGS} -mod vendor -o _output/azurelustreplugin.exe ./pkg/azurelustreplugin
132-
133-
.PHONT: azurelustre-darwin
134-
azurelustre-darwin:
135-
CGO_ENABLED=0 GOOS=darwin go build -a -ldflags ${LDFLAGS} -mod vendor -o _output/azurelustreplugin ./pkg/azurelustreplugin
136-
137129
#
138130
# Azure Lustre: Docker build
139131
#
140132
.PHONY: quickcontainer
141133
quickcontainer: quicklustre
142-
docker build -t $(IMAGE_TAG) --output=type=docker -f $(dockerfile) .
143-
134+
docker build -t $(IMAGE_TAG)-jammy --build-arg srcImage=ubuntu:22.04 --output=type=docker -f $(dockerfile) .
135+
docker build -t $(IMAGE_TAG)-noble --build-arg srcImage=ubuntu:24.04 --output=type=docker -f $(dockerfile) .
144136
.PHONY: container
145137
container: $(build_lustre_source_code)
146-
docker build -t $(IMAGE_TAG) --output=type=docker -f $(dockerfile) .
138+
docker build -t $(IMAGE_TAG)-jammy --build-arg srcImage=ubuntu:22.04 --output=type=docker -f $(dockerfile) .
139+
docker build -t $(IMAGE_TAG)-noble --build-arg srcImage=ubuntu:24.04 --output=type=docker -f $(dockerfile) .
147140

148141
.PHONY: container-linux
149142
container-linux:
@@ -172,7 +165,8 @@ ifdef CI
172165
docker manifest push --purge $(IMAGE_TAG)
173166
docker manifest inspect $(IMAGE_TAG)
174167
else
175-
docker push $(IMAGE_TAG)
168+
docker push $(IMAGE_TAG)-jammy
169+
docker push $(IMAGE_TAG)-noble
176170
endif
177171

178172
.PHONY: push-latest
@@ -182,13 +176,23 @@ ifdef CI
182176
docker manifest push --purge $(IMAGE_TAG_LATEST)
183177
docker manifest inspect $(IMAGE_TAG_LATEST)
184178
else
185-
docker push $(IMAGE_TAG_LATEST)
179+
docker tag $(IMAGE_TAG)-jammy $(IMAGE_TAG_LATEST)-jammy
180+
docker tag $(IMAGE_TAG)-noble $(IMAGE_TAG_LATEST)-noble
181+
docker push $(IMAGE_TAG_LATEST)-jammy
182+
docker push $(IMAGE_TAG_LATEST)-noble
186183
endif
187184

188185
.PHONY: build-push
189-
build-push: $(build_lustre_source_code)
190-
docker tag $(IMAGE_TAG) $(IMAGE_TAG_LATEST)
191-
docker push $(IMAGE_TAG_LATEST)
186+
build-push: container push
187+
188+
.PHONY: build-push-quick
189+
build-push-quick: quickcontainer push
190+
191+
.PHONY: build-push-latest
192+
build-push-latest: container push-latest
193+
194+
.PHONY: build-push-quick-latest
195+
build-push-quick-latest: quickcontainer push-latest
192196

193197
#
194198
# IOR: docker build & publish

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ This driver allows Kubernetes to access Azure Lustre file system.
1717
| Driver version | Image | Supported k8s version | Lustre client version |
1818
|-----------------|-----------------------------------------------------------------|-----------------------|-----------------------|
1919
| main branch | mcr.microsoft.com/oss/kubernetes-csi/azurelustre-csi:latest | 1.21+ | 2.15.7 |
20+
| v0.4.0 | mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.4.0 | 1.21+ | 2.15.7 |
2021
| v0.3.1 | mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.3.1 | 1.21+ | 2.15.7 |
2122
| v0.3.0 | mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.3.0 | 1.21+ | 2.15.5 |
2223
| v0.2.0 | mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.2.0 | 1.21+ | 2.15.5 |
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Distribution-Specific Azure Lustre CSI Node Deployments
2+
3+
## Overview
4+
5+
This directory contains distribution-specific DaemonSet deployments for the Azure Lustre CSI driver. Each deployment targets a specific Ubuntu version to ensure proper Lustre client compatibility.
6+
7+
## Files
8+
9+
- `csi-azurelustre-node-jammy.yaml` - Ubuntu 22.04 (Jammy) nodes
10+
- `csi-azurelustre-node-noble.yaml` - Ubuntu 24.04 (Noble) nodes
11+
12+
## Distribution Targeting
13+
14+
Each deployment uses:
15+
16+
1. **Node Targeting**: Uses node affinity and selectors to match correct node OS flavors
17+
2. **Container Image**: Version-specific image tags like `v0.4.0-jammy`, `v0.4.0-noble`
18+
3. **Unique Names**: Each DaemonSet has a unique name (`csi-azurelustre-node-jammy`) to prevent conflicts
19+
20+
## Installation
21+
22+
The `install-driver.sh` script deploys all necessary components:
23+
24+
```bash
25+
./install-driver.sh
26+
```
27+
28+
This will:
29+
30+
- Deploy the controller (distribution-agnostic) and the OS-specific node DaemonSets
31+
- Each DaemonSet will only start pods on nodes with matching OS versions
32+
33+
## Node Pool Requirements
34+
35+
Your AKS cluster nodes must have the `kubernetes.azure.com/os-sku-effective` label set to one of:
36+
37+
- `Ubuntu2204`
38+
- `Ubuntu2404`
39+
40+
AKS automatically sets this label based on the node pool's OS configuration.
41+
42+
## Image Tags
43+
44+
Container images follow the pattern:
45+
46+
- `mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.4.0-jammy`
47+
- `mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.4.0-noble`
48+
49+
Each image contains an Ubuntu version capable of installing the Lustre client packages compiled for the target distribution.
50+
51+
## Troubleshooting
52+
53+
To check which nodes are running which versions:
54+
55+
```bash
56+
kubectl get nodes -o custom-columns=NAME:.metadata.name,OS-SKU:.metadata.labels.'kubernetes\.azure\.com/os-sku-effective'
57+
```
58+
59+
To check DaemonSet pod distribution:
60+
61+
```bash
62+
kubectl get pods -n kube-system -l app=csi-azurelustre-node -l flavor=jammy -o wide
63+
kubectl get pods -n kube-system -l app=csi-azurelustre-node -l flavor=noble -o wide
64+
```

0 commit comments

Comments
 (0)