Tanzu Kubernetes Grid on vSphereのWorkload Clusterに設定されるStorageClassをyttでカスタマイズするメモ
TKG 1.3では対応不要です。
TKG on vSphereでWorkload Clusterを作成すると次のようなStorageClassが設定されます。
$ kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
default (default) csi.vsphere.vmware.com Delete Immediate false 8d
$ kubectl get storageclass default -o yaml | kubectl neat
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.kubernetes.io/is-default-class: "true"
name: default
parameters:
storagepolicyname: ssd
provisioner: csi.vsphere.vmware.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
tkg create clusterのタイミングでこのStorageClassをカスタマイズされた状態で設定されていて欲しい場合は、~/.tkg/providers/infrastructure-vsphere/ytt/vsphere-overlay.yamlにytt overlayのOverlayファイルを書きます。
例えば、allowVolumeExpansion: trueを設定しておきたい場合は次のようなoverlayになります。
#@ load("@ytt:overlay", "overlay")
#@ load("@ytt:yaml", "yaml")
#@ def sc_config():
#@overlay/match missing_ok=True
allowVolumeExpansion: true
#@ end
#@ default_sc = lambda i,left,right: left["metadata"]["name"].endswith("-default-storage-class")
#@ secrets = overlay.subset({"kind": "Secret"})
#@overlay/match by=overlay.and_op(default_sc, secrets), expects="1+"
---
stringData:
#@overlay/replace via=lambda a,_: yaml.encode(overlay.apply(yaml.decode(a), sc_config()))
value:
この設定がある状態でtkg create clusterを行うと次のような設定がされた状態でクラスタが作成されます。
$ kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
default (default) csi.vsphere.vmware.com Delete Immediate true 8d
$ kubectl get storageclass default -o yaml | kubectl neat
allowVolumeExpansion: true # <----------
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.kubernetes.io/is-default-class: "true"
name: default
parameters:
storagepolicyname: ssd
provisioner: csi.vsphere.vmware.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
2020-03-01 追記
allowVolumeExpansion: trueを設定しても、TKG 1.2.1ではPersistent Volumeのリサイズが出来ないようです...csi-resizerがいない...
2020-04-04 追記
TKG 1.3でresizeする方法を追加しました。