Dev > CaaS > Kubernetes > TKG > Extensions > Harbor
warning
この記事は2年以上前に更新されたものです。情報が古くなっている可能性があります。

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:
Found a mistake? Update the entry.
Share this article: