Add NFS and iSCSI backed StorageClasses

This commit is contained in:
Daniel Cosme
2026-05-01 15:19:46 -04:00
parent 9273ba6c78
commit e967fe72aa
16 changed files with 91 additions and 48 deletions

View File

@@ -4,6 +4,6 @@ metadata:
name: immich
namespace: immich
resources:
- deployment.yaml
- namespace.yaml
- uploads-pvc.yaml
- deployment.yaml

View File

@@ -4,20 +4,20 @@ metadata:
name: immich
namespace: cnpg-cluster
stringData:
password: ENC[AES256_GCM,data:+zTZydXQhJNoPd5i7DDkmzp6C6lxyLx7abyDj4E1tdFUlWGqtFbQUQ==,iv:z5JM00MiNu1U3dWMbYy1DS7++D+ezdRCudufhDqWXNo=,tag:WWfLEPix+6eguUIVNMav/Q==,type:str]
username: ENC[AES256_GCM,data:aSkTrfeJ,iv:QqUrhzGvT7qbwCggZwpugdD2eRgig+fA3812x2oX54U=,tag:5sNY9+OoEDDhtYMe8w1ubQ==,type:str]
password: ENC[AES256_GCM,data:VkxA0bLvUCrZ0diI43jX3UH6ct1+WQPr6C5VWV3UB84yI9ykcpSI1w==,iv:NqMCPOZQK2mjlAZgo9YSg+Pd5ttg86XyDMWVtYdBI/w=,tag:harDScxSeaHuG5kQ6/zdAQ==,type:str]
username: ENC[AES256_GCM,data:8SzMn5od,iv:Ms+En29rrpyYQFKx28RoS5QDouimOz/ouYaK+sOg1J4=,tag:clKYTXHC/BMJcaEbyCvw2Q==,type:str]
sops:
age:
- recipient: age1lelpkv7u2xh5wezuwp09fmf9gsa8gp4rzy92jz0t203au82a7u5sutsjwa
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvekNFdXNDV3Zzdllockw5
aFAyYm9zYUZzVFNZUENDODFLc1phWW5RSWtVCjRFSDdlaDBDRnIwMlp4RDN1YXZu
a0cyVHNNdVNDUW43UytOVGVyRGZ2aVUKLS0tIFFEeGtuVVRkUDNmaC9IRDBmOTVV
amJ6OTJvc0EyaXZTcHhHeXA5QTF6RDQKL8UiivxcPu2dKMpJRiFw58SZpX0Qc+WQ
P99bAZq/d1EwlYdjta9MRd4Ie04D+EcZtA8+F7t+XCby4gvkS6xxRg==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyeUxaVng1aUlDRVo1cEMz
L0hweXdKaUdJUzZkVGdRaDhFdTJlaWJTOGk0Ci9DeEtxU1VnRDFNMDIzSmpUU0Fn
RXVXQ2FVYmI0eVhUei8rNUV2TldTc00KLS0tIEdZVDJvY1pZYUZZNTdBYWZvQlBZ
UUFzME1oZGZwVmNqRTE5dlY1aG81TjQKgKecbQunB5ggN663XBf74isxG3goUzQG
DH0bfj95E0+xZ5STPrgWiu33NHJHATT/2W1A9OYWCn02gz6uJPhadw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-01T19:01:27Z"
mac: ENC[AES256_GCM,data:jyfmrXB3nYTxGCog4i1kUZjY6xMhfLppkZDY+Bv6cevrXmLR1bDFkvt8suaOl0MAFkoBpvSkVNLC2riRnbHTf7GwRgY6AYTAKQAoRtuENe4sXL7ph9Brf3MkGsxguf93JKmL6QkokC/EEVW18/14iLTDuLb8+UhS3r3dYlUCHHU=,iv:bQFMtgCgeR0b6VLyS3v1Fn6WGh2qqga8EMBkPYNS4h8=,tag:Ji3UgaUVWFp2iwhZKYLDbw==,type:str]
lastmodified: "2026-05-01T19:19:44Z"
mac: ENC[AES256_GCM,data:2i2L+lRbzfQ+v252fB1oKgAmZr+cv0ozaYCz3Mhbq8vpSu5JteWbzM+abhBqP9cdvuiwJdEcXe2MOpxE/swlRBBHGGKDxLkIkpeCQWN98bghnyNZp5nhkDAnQzXnoV/XpwJRIQo3DM6v+2xWqxU1ira1asmhixFaMDfHQMI99bk=,iv:ihTqtmNk7nkgVGAkyhpcobuEEoZa++fzkBnqyFcEZyA=,tag:i0NP/vWVvl7uqjU1xUSAzg==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.12.2

View File

@@ -4,23 +4,23 @@ metadata:
name: immich
namespace: immich
stringData:
db_host: ENC[AES256_GCM,data:2MV9dErTC4Di9qFUZtWVAc2ad6/ElQX5uDKflHjO/phm8aoDDE12w2ty12z08w==,iv:+P1yYKMheueCmcwUzYNoYOccoqLXlvbimIF8+k0u51M=,tag:ApnYW9n+qMGiQ6oRoVI58g==,type:str]
db_name: ENC[AES256_GCM,data:KcPMIVfj,iv:FtgrUX82DHNP6GjCt/Gs2P6dvc2JhmwqADlKAhneCgg=,tag:ifUR93N/OcO/DqRXwccRuw==,type:str]
db_password: ENC[AES256_GCM,data:amJjSCHVwdtg84H2u8waUUcs7PqBJc6vcjwUFI4oBjGG6ZOJuEZirw==,iv:CmXl4Del1DytyK0oj/6XjuY12wJT2NB/Ewwaa6bje6E=,tag:a+5BFIvhmC+CqhkXbOrvYw==,type:str]
db_port: ENC[AES256_GCM,data:ZCrUVA==,iv:VcBzsDkRKOBCApIfDgO9D52Z3CBRvW+THaViTe1sIy0=,tag:OTrZiW+1KJ7rQob3jzwO6A==,type:str]
db_username: ENC[AES256_GCM,data:6yv3/Naz,iv:CgoU6FWdaBGqOC+B0lLAJSCvOmd3Lm4jNTP8hAAiCwo=,tag:UNYZj4aUTL+t2oKzobVE6g==,type:str]
db_host: ENC[AES256_GCM,data:L0HLVyTp9Jp9DYghtHx1TB5NsEv+fBOnixqszjUvoF/uWXGb/xnZZGbxs3VOxQ==,iv:Nv9O1GqAIz0hQZ3rTE+lL2Rr6HSMu8MwHjtTpxzRWz4=,tag:Kg4oIa1PBfuscym7bZJ6XQ==,type:str]
db_name: ENC[AES256_GCM,data:uXAmysLn,iv:WH0CSa/MgqAeoPiY+iiG20qsal+nqalRx5D21DF7fJ4=,tag:YH4Vy7NCIj20CBHJb4ELKw==,type:str]
db_password: ENC[AES256_GCM,data:oP8mRF5f1YHdnLHDBGh58WUVoh3H7uBtarKnKgsnR35C4cQsHNud9g==,iv:MekInE4P4mNI3dbdkg8ltOQ7Cu6YGbrmbWL8zntpqjY=,tag:DKvZvg9pH/k0w7PIVRCZfw==,type:str]
db_port: ENC[AES256_GCM,data:jYe7NQ==,iv:joakjKW/1F2ls/TqBcJHlOoVFJzocGieKurU0Pj8amg=,tag:Z6UoVh3FfIQ8U+WYO8D95w==,type:str]
db_username: ENC[AES256_GCM,data:0ffOSkgC,iv:0XyDqJ89hm9Ej4QVg8qBOZzNlIKYX0fEceyY1IaTNzo=,tag:nl6jddgYlzwZ5P8oHqI57A==,type:str]
sops:
age:
- recipient: age1lelpkv7u2xh5wezuwp09fmf9gsa8gp4rzy92jz0t203au82a7u5sutsjwa
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5Q3hBV2dQTzhEMDBvbTl2
eEFBQndkR0lOcGpxSDZwNzlMa1IrbDlmYmdFCnVJMGo5cThqRng4VnRjS2x5aWVS
d3JnOGlQZTJ0aDFFSUlwRTFjNTNUNFkKLS0tIDdmNmpRSi9hYno4SmYxZ0dkZWNG
UWtOZFJuK1M0anQ2VWpNd29hQzBlNUkKBG0OgcOgBDm1m5a5ZksMXrhpXitA4X+E
gX0CiMjFZ88jpbgAmp+i8McoXB3Pgs5otO+qX9gccWe3SEQet+CFWg==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpaUh1YTVyM0g0Tmpsei9O
ZUdrMkxLaU5ydy90aTJaZkNFbjBkaU02MFZvCmc3T05zS3EvTXVSZjFZMHBNMSts
MXhYb21aY2ZSeFMvR1lUc1h1cnRhbjQKLS0tIDhWOWs1MC9nYm40RGNuOWJpTTVo
MnpIdWdBSFAvM2ozZmlDc1lxR3JhTkEKsmQgoKGOslYoFq18RcTY13R0HJilfaD/
aidHdBslKYU+QyRYAwNTr47cnuZ34OBYnWpfASyhTHexTkpH7Aqkjg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-01T19:01:27Z"
mac: ENC[AES256_GCM,data:siCjV+Z5YLlwzfcdjO1+FoXfWW0LLA4VwxQrqaAAE6Q6BZFkXZD83l9mDyXKkya93oOwwVNPmcZyqoJpRwpddA8Lhh/zh6LkWtAhK9gCk4/B33w9iq/TbWS9AJsePrgSjXuSO8KNUl6SOIp6xAMZ7maUj4CIGic+8Z+g149Bwxs=,iv:4HlnGoesdg1Ui8SPI4mNq1FfART9+h8qsVdMw2rgKns=,tag:i4XyPWRZrc2emJsT9Tjnlw==,type:str]
lastmodified: "2026-05-01T19:19:44Z"
mac: ENC[AES256_GCM,data:VsetkkENkQ7JQsRX3ihytBUbXTOMwnlhsPs9FmQQTe6uO3lidYIOiqNsRObhg9Vs0To68aca4cZo132wFu/2nVMiK5+fItWfnJRKyf5TaN/1hILunAVdmZlD673XbogaazDHNGbX7qUMaUDB4O4vGtjbx+WXx2ez84vcP7Yswsw=,iv:MF7nccEGrxXcBPJmI2c4rtnKKBPlgQepT5HdntuGfaw=,tag:v9o78sJNOgYZsBJHBBqp6w==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.12.2

View File

@@ -3,7 +3,7 @@ kind: Kustomization
metadata:
name: secrets
resources:
- linking.yaml
- truenas-csi.yaml
- immich-db.yaml
- immich-secret.yaml
- immich-db.yaml
- immich-secret.yaml
- linking.yaml
- truenas-csi.yaml

View File

@@ -4,20 +4,20 @@ metadata:
name: linking
namespace: linkding
stringData:
supe_user_name: ENC[AES256_GCM,data:u67lwRTU4J5IxQazkFhtY6M=,iv:V7SgzZdRzYbt0Xiprgz4eR5tSR3PMFmArJ/1QN7JFOc=,tag:4hTpjlEyoNoOwNkr/pCEFQ==,type:str]
supe_user_password: ENC[AES256_GCM,data:bO8IYw8pPB4HrAow9iJXF+mTQqYnWawMh21I/ivgIDVVD+zn7TpLGJgbWIg=,iv:fybrYsAIsdGUqQzcLmutlsR+K+kJ4FVZydaU2f+j6yg=,tag:4VfnVxMswCh8poqrV3vdvw==,type:str]
supe_user_name: ENC[AES256_GCM,data:Xeuhs3+gKI+Thtxu7CXgMq0=,iv:GaVEyHGWTWnqU2WQtzi0EsgPHHflenwBv7WVvBev7ys=,tag:7r1ES+DyJwBCjJJJxr3LkQ==,type:str]
supe_user_password: ENC[AES256_GCM,data:N369fIANeiNkCezoaxEKYXb6AwRkQEbW3ADZ399Ex2NFBLGigL0O2W6m4Kg=,iv:TroN+3lwyZSEPwgPTdEsgis9FIxMBuP9rX/lrYH6woI=,tag:jo54+pzv40szqCTC43VtrA==,type:str]
sops:
age:
- recipient: age1lelpkv7u2xh5wezuwp09fmf9gsa8gp4rzy92jz0t203au82a7u5sutsjwa
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAweU9jN3Jpd1RSaFkreVM4
TkY3WFdUUmhQY21rcWNvQ1dIT29iNG5SL0VJCm1xeDJ1QnpJMkJLUUtrU0FyN2kr
bzR5U2pxM0JiNDN0T0ZNcXZVT1NOUXcKLS0tIFU3bGtCNG8wQUJjTWlwUTNCSVpl
OG9NWTRHUWxpM2VEN2s1VHZuRm5OUXMKwKC/dAJIwHNM8aCdjhLn6teFRMQLfHx5
jK6RLcMmplqYzLCStt6dlLjwIwbDbCpMpY5v9vrwHXin8lN2DPgygQ==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1OXBMOVZqb2pMNHdSTkpO
TFRpVDRGOFk4WEFhNjV2SXVIMlU1U20ydG1ZCkFGbGsvSDIxMEU0V3VWemx2RWYv
Q0F3MFFKVTVOUnJndXl5RU5DQkFsS3MKLS0tIEY4K3BTM01FWnovcm13S1lZQnN2
QmI0QnhDWk5vdGI2RjN0RnZ6aGgxdFkKjg7vUteJoIyj+zEGRJHIvEuCCkNnB2+B
9so1cDdgUiiMTk1WFkzC4gA0kYcXZktmuHYd3Y9dO0NXD2cgDuGLEQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-01T19:01:27Z"
mac: ENC[AES256_GCM,data:W3XJB7kXMPZgFGL7OJ4/9iNpPujvbtjfVglN/WfQ3FpuMcnH088DHg7UKN9D0XdtG5UnSLGhF/OxuumQq2tKUs3Zvnr2YjBiAGf2XGbqEEpiW75dZMSVp/OcdR9kjGOkSxucuPN8NlyV2799wQmBoAOq+C6zejNNCWMuZAGRQnM=,iv:rAiyCWR9LOPtMVUckWMfxXWd2e8eSl/CG/nyWFGUFQ4=,tag:SEtc82xE4SU7jfYTJOEoYA==,type:str]
lastmodified: "2026-05-01T19:19:44Z"
mac: ENC[AES256_GCM,data:/50P+rSY54NK+bD7X7VlSx/NvQXiQpCEj7QK8ua6cs/oIro/ESGWjNekfaBBVUXL6hmF6fmXYdIw5svUJiszXyv3QIIwVmTxxITsigDKpCJZllCuswTs2QfyrEqTS2c974oxx2RdAZ+765urW7oIglHAhvvAjCBv4x44Dg/f+fE=,iv:L4I+kGd7uGZqFwv2DVNFxfRwKFsSpgN6kgeDfDQlhUI=,tag:Q0hfOYYkTRO+9JS6edLJzQ==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.12.2

View File

@@ -4,19 +4,19 @@ metadata:
name: truenas-api-credentials
namespace: truenas-csi
stringData:
api-key: ENC[AES256_GCM,data:vIufuqaIdNQH53pLCPfdi7cYIJlqwuHRbzUshgVJDw6Ayw9fPcVj2Ctp0bY34toHgmMjghYs4GdEtiQJz8BithRf,iv:J1woXagNbwqkjNTerrYjvCDQn/+FpvI25ow/szOCxN0=,tag:mRMKq2Nrs8qnyoQRYkIBtQ==,type:str]
api-key: ENC[AES256_GCM,data:qjm3UeKS2MPTNCg4GhcR+vq74Hza8P10FFDrAbmzoPE3PS8VyIxucFSIvIk7IkDtG6YHlW91KXPqExIzquNM2fFd,iv:JyoL1jOFNH1NotpHrqxVq4+HREeaYgE3bkeEO5uTs7c=,tag:5llAWqj7/Ml5/sSqplbl6g==,type:str]
sops:
age:
- recipient: age1lelpkv7u2xh5wezuwp09fmf9gsa8gp4rzy92jz0t203au82a7u5sutsjwa
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCbDhQMmMyNGlUTW9ZSVla
MHF3Sm1lS2prVGlFMnVlSWFYaENhUGlBa1I4Ckw0N0RJUTBnTk53eVFFZXZyQmEy
Sk1rLysxMnRYNVJEZzdoS0xTVXF4eTgKLS0tIFZZZ3lJRmNSOEVocG54TWd2bzM4
cDVMM3JoTzMzckhpSVA3eFRwR2dnZ0EKD9PygzmR3aAhVIqKQXkmu4acE7Vq5QPj
alS3B/qmLWKIt2jaRlB5hpCK8DXKT4321dRQ0qE113sIPeL3IKxbEg==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArcC9sZ1FhbjU1Y2U2Z2hz
WkEzZFZiNk56My9tRDJXTnhLaXJ1V3lBeEVnCndUcjFvTlh6aFFWbnM1N3BsaTgv
WHkxeDVZdEh5Uno2bkF5QnlSeEl3NGMKLS0tIEJnRDFRZmJpaGhhcFIvVVNyRU80
M3FiRWFpa29hdGlTMG5aa0lNajRHSHcKFzeMQ82WD85tmnBmUy16BzCmqIEcad7B
atNXtrNCW8RFiFiu+zDUd628DiQIsvPXCx5ugCoiJlc3jxSNMOHtIA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-01T19:01:27Z"
mac: ENC[AES256_GCM,data:m4dQ2as1gWh/C29r4oP7Gdoz1a+E+nSeT5qqA2hjegdMb/RQDh0qt69Cb3cVPXtguM0gi9D7toajHUAWwxCwrYGECtKtuA7VA38aRKheUHUJ+qNo6THzBcZRru3vFNgWwoi4r4fQbX97z92vTehblANm+YPIjK/orwfaXPsQA0Y=,iv:BOVDv+zreFJdbfrCySfip7BXe6FCKoEdGXccBoJ4SV0=,tag:soco0NPvlLKh6DtZQ4Gcfw==,type:str]
lastmodified: "2026-05-01T19:19:44Z"
mac: ENC[AES256_GCM,data:wwI5KlD+917zgLKqSDTlLnd90DQo7mNcK0oHnd+8ou2KI3UM4xg4zVKZSitOelgmbP4G12K3uBHpya60GP30mFVetqgghs/gSoUakyUG3C8LJuOUS8iYemESx5J/02hfDRFVLripiumtQGIGMahVbskLt2F5vo65djdu5JJqFMo=,iv:0J+AUZ5GfNc3E4NtSXw4DZrWt6fNhj40Vl4+pwlm45Q=,tag:WVuXRkO583xQ7j06m2FBeQ==,type:str]
encrypted_regex: ^(data|stringData)$
version: 3.12.2

View File

@@ -1,3 +1,19 @@
---
# ServiceAccount for the CSI driver
apiVersion: v1
kind: ServiceAccount
metadata:
name: truenas-csi-controller-sa
namespace: truenas-csi
---
# ServiceAccount for node plugin
apiVersion: v1
kind: ServiceAccount
metadata:
name: truenas-csi-node-sa
namespace: truenas-csi
---
# ClusterRole for CSI controller
kind: ClusterRole
@@ -300,6 +316,7 @@ spec:
app: truenas-csi-node
spec:
serviceAccountName: truenas-csi-node-sa
dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true
hostPID: true
hostIPC: true

View File

@@ -0,0 +1,13 @@
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: truenas-iscsi
parameters:
compression: LZ4
iscsi.blocksize: "4096"
protocol: iscsi
volblocksize: 16K
provisioner: csi.truenas.io
reclaimPolicy: Delete
volumeBindingMode: Immediate

View File

@@ -4,5 +4,7 @@ metadata:
name: truenas-csi
namespace: truenas-csi
resources:
- iscsi-storage-class.yaml
- namespace.yaml
- config.yaml
- nfs-storage-class.yaml

View File

@@ -0,0 +1,11 @@
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: truenas-nfs
parameters:
compression: LZ4
protocol: nfs
provisioner: csi.truenas.io
reclaimPolicy: Retain
volumeBindingMode: Immediate

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -52,7 +52,7 @@ var (
var (
TrueNAS_CSI = "truenas-csi"
TrueNASURL = "apex-truenas.orca-uaru.ts.net"
TrueNASProvisioner = "cis.truenas.io"
TrueNASProvisioner = "csi.truenas.io"
TrueNASSTorageClassNFS = "truenas-nfs"
TrueNASSTorageClass_iSCSI = "truenas-iscsi"
)

View File

@@ -81,11 +81,11 @@ func Stack() stack.Stack {
// "node-service-account": nodeSA,
// "node-cluster-role": nodeRole,
// "node-binding": kube.ClusterRoleBinding(nodeRole.Name+"-binding", nodeSA, nodeRole),
// "node-deamonset": nodeCSI(),
// "node-deamonset": nodeCSI(),
// "CSIDriver": CSIDriver(root.TrueNASProvisioner),
"config": config,
// "nfs-storage-class": NFSStorageClass,
// "iscsi-storage-class": iSCSIStorageClass,
"config": config,
"nfs-storage-class": NFSStorageClass,
"iscsi-storage-class": iSCSIStorageClass,
},
)
return kz.Stack(root.TrueNAS_CSI)