LoginSignup
3
0

More than 3 years have passed since last update.

VMware vSphere上のRancherにstorage classを割り当ててDynamicにPVを作ってもらう

Last updated at Posted at 2020-07-27

前回記事で、Proxy下にあるVMware vSphere上にRancherを入れて、Harborを構築する検証をしました。
構築することはできたのですが、しばらくしてからアクセスするとProjectにimageのリストはあるのにPullできない状態になっていました。
Persisitent Volume(永続ボリューム?)なしで立ち上げたので、その後何度かPodが再作成され、image本体が失われてしまったのだとわかりました。

そこで、検証の一環としてRancherにstorage classを設定して、動的なPVC/PV払い出しを行いました。

Cluster への設定 :tools:

vSphere上でRancherに動的PVを作成させるためには、Clusterへの設定が必要になります。
Cluster作成時に、Edit as YAML をクリックして rancher_kubernetes_engine_config: 下に下記のような設定を追記します。

cloud_provider:
  name: vsphere
  vsphereCloudProvider:
    global:
      insecure-flag: true       # 今回の検証環境ではオレオレ証明書を使用しているので有効に
    virtual_center:
      vc.example.com:           # vCenter URL
        user: provisioner       # vCenter へのアクセスユーザ
        password: secret        # パスワード
        port: 443
        datacenters: /eu-west-1 # 使用するdatacenterのパス
    workspace:
      server: vc.example.com                       # vCenter URL 上記と異なるパターンは試してません
      folder: /eu-west-1/folder/myvmfolder         # dummy vm が作成されるディレクトリ
      default-datastore: /eu-west-1/datastore/ds-1 # storage classで指定しなかった場合に使用されるdatastore
      datacenter: /eu-west-1                       # 使用するdatacenterのパス 上記と異なるパターンは試してません
      resourcepool-path: /eu-west-1/host/hn1/resources/myresourcepool # リソースプールを使用したい場合(今回は使用せず)

Clusterを作成し、Provisioningが完了するのを待ちます :relaxed:

各種設定については :point_down: を参照ください。
vSphere Configuration Reference

Storage Classの作成 :floppy_disk:

Cluster作成が完了したら、Rancher の Storage -> Storage Classes から作成します。
名前だけ設定して、他パラメータはデフォでOKでした。
上記で設定したdefault-datastoreを使用しないのであれば、ここのDatastoreで設定するものと思います(実施はしていません)。

image1.png

アプリのデプロイ :muscle:

アプリカタログからアプリをデプロイします。
この時、Rancherに登録されているカタログであればGUIから、自前で追加したのカタログであればYAMLをEditして、上記で作成したstorage classを選択してデプロイします。

デプロイしてPVが作成されると、Cluster作成時に指定したdefault-datastoreもしくは、Storage Classを作成した時のDatastoreで指定したストレージに、kubevolsというディレクトリが作成されます。
そして、そこにデータが格納されることがvSphere上から確認できます。

HarborのPV

というわけで、Harborのマニフェストを修正して

persistence:
  enabled: true
  persistentVolumeClaim: 
    registry: 
      storageClass: "vsphere-volume"
      size: "5Gi"
    jobservice: 
      storageClass: "vsphere-volume"
      size: "1Gi"
    database: 
      storageClass: "vsphere-volume"
      size: "5Gi"
    redis: 
      storageClass: "vsphere-volume"
      size: "5Gi"

無事にPV付きでデプロイされたのでした。

image.png

お し ま い :innocent:

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0