TKG 1.3では対応不要です。
TKG ExtensionsのHarborをTKG on vSphereにインストールする場合、
環境によってはうまく動作しません。例えば
- 認証は成功する(
docker loginはできる)HarborのUIで画面遷移しない(実はBackendのRedisでfile openに失敗しているため) - TrivyがPodが起動しない
など。HarborだけでなくGrafanaも起動しません。
回避方法はTKG 1.2.1のKnown Issueに書かれている通り、vsphere-csi-controller Deploymentのcsi-provisionerコンテナのargsに--default-fstype=ext4を付ければ良いです。
既に作成されたクラスタに対しては
kubectl patch deployment -n kube-system vsphere-csi-controller --type=json -p='[{"op": "add", "path": "/spec/template/spec/containers/4/args/-", "value": "--default-fstype=ext4"}]'
kubectl delete pod -n kube-system -l app=vsphere-csi-controller
を行えば良いです。
新規作成のクラスタに関しては、~/.tkg以下のmanifestを修正すれば良いです。Know Issueのドキュメントにはcsi.lib.yamlを直接編集するように書いてありますが、
このファイルは編集しない方が良いです。~/.tkg以下のカスタマイズは ~/.tkg/providers/infrastructure-vsphere/ytt/vsphere-overlay.yamlにytt overlayのOverlayファイルを書くのがベターです。
今回の変更内容に対するoverlayは少し複雑ですが、次の内容で適用できます
#@ load("@ytt:overlay", "overlay")
#@ load("@ytt:yaml", "yaml")
#@ def csi_controller_config():
spec:
template:
spec:
containers:
#@overlay/match by="name"
- name: csi-provisioner
args:
#@overlay/match by=overlay.index(2)
#@overlay/insert after=True
- --default-fstype=ext4
#@ end
#@ csi_controller = lambda i,left,right: left["metadata"]["name"].endswith("-vsphere-csi-controller")
#@ configmap = overlay.subset({"kind": "ConfigMap"})
#@overlay/match by=overlay.and_op(configmap, csi_controller), expects="1+"
---
data:
#@overlay/replace via=lambda a,_: yaml.encode(overlay.apply(yaml.decode(a), csi_controller_config()))
data: