Prepare Cluster for Rok CSI

Rok uses the Container Storage Interface (CSI) v1alpha1. However, GKE forces a different, incompatible version by default. In this guide you will prepare your cluster to install the CSI version that Rok needs.

See also

Procedure

Prepare your cluster to install the CSI version that Rok needs with the following commands:

  1. Go to your GitOps repository, inside your rok-tools management environment:

    root@rok-tools:~# cd ~/ops/deployments
    
  2. Install Kyverno:

    root@rok-tools:~/ops/deployments# rok-deploy --apply rok/kyverno/overlays/deploy
    
  3. Apply a Kyverno policy to disable the original GKE-provided CSI version:

    root@rok-tools:~/ops/deployments# rok-deploy --apply rok/csi-disable-v1beta1/overlays/deploy
    
  4. Verify that Kyverno is up-and-running:

    root@rok-tools:~/ops/deployments# kubectl get deploy -n kyverno
    
  5. Delete the original GKE-provided VolumeSnapshot Custom Resource Definition (CRD):

    root@rok-tools:~/ops/deployments# kubectl delete customresourcedefinitions.apiextensions.k8s.io volumesnapshots.snapshot.storage.k8s.io
    
  6. Delete the original GKE-provided VolumeSnapshotClass CRD:

    root@rok-tools:~/ops/deployments# kubectl delete customresourcedefinitions.apiextensions.k8s.io volumesnapshotclasses.snapshot.storage.k8s.io
    
  7. Delete the original GKE-provided VolumeSnapshotContents CRD:

    root@rok-tools:~/ops/deployments# kubectl delete customresourcedefinitions.apiextensions.k8s.io volumesnapshotcontents.snapshot.storage.k8s.io
    

Verify

  1. Verify your cluster does not have any snapshot-related CRDs left. Ensure that the following command produces no output:

    root@rok-tools:~/ops/deployments# kubectl get customresourcedefinitions.apiextensions.k8s.io | grep volumesnapshot
    

Summary

You have successfully prepared your cluster to install the CSI version that Rok needs.

What's Next

The next step is to deploy Rok.