Convox Community

Are volumes still supported on v3?

Hello,

I’m trying to migrate a rack from v2 to v3, using DigitalOcean as the underlying provider. The rack install went fine, but then one of my apps uses volumes shared between the services, and it doesn’t seem to work anymore. As I can’t see any reference in the documentation regarding volumes, is it still supported?

Looking at the underlying kubernetes infrastructure it seems like persistent storage claims are still being made for my volumes, but they stay in the PENDING state indefinitely. Indeed, the persistent storage tab doesn’t show any volume being created to fulfil the claims. Do I somehow have to create them beforehand?

Thanks,
Cyril

For reference my convox.yml looks like this:

services:
  web:
    build: .
    command: /app/docker/web
    domain: "${HOST}"
    port: 3000
    volumes:
      - "/home/data"
      - "/home/public"
      - "/home/lib"
  worker:
    build: .
    command: /app/docker/worker
    volumes:
      - "/home/data"
      - "/home/public"
      - "/home/lib"

Got in touch with DO support, and it seems their storage class does not support the selector field in the Persistent Volume Claim definition.

This is what’s generated by Convox:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: paas-my-app-23f50e7a8f20234a0f92f486674d92e6fb9deb4e
  namespace: paas-my-app
  selfLink: >-
    /api/v1/namespaces/paas-my-app/persistentvolumeclaims/paas-my-app-23f50e7a8f20234a0f92f486674d92e6fb9deb4e
  uid: c3c3a749-4633-4bb6-b6a6-e3db504bcfb2
  resourceVersion: '338589'
  creationTimestamp: '2020-07-29T08:06:06Z'
  labels:
    app: my-app
    atom: e0460e5e50595bdcd62d4d5a4269546bc0c493271dac645aed65ab3e822b
    provider: k8s
    rack: paas
    release: RMZACPEEGVM
    system: convox
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"labels":{"app":"my-app","atom":"e0460e5e50595bdcd62d4d5a4269546bc0c493271dac645aed65ab3e822b","provider":"k8s","rack":"paas","release":"RMZACPEEGVM","system":"convox"},"name":"paas-my-app-23f50e7a8f20234a0f92f486674d92e6fb9deb4e","namespace":"paas-my-app"},"spec":{"accessModes":["ReadWriteMany"],"resources":{"requests":{"storage":"10Gi"}},"selector":{"matchLabels":{"app":"my-app","rack":"paas","system":"convox","volume":"paas-my-app-23f50e7a8f20234a0f92f486674d92e6fb9deb4e"}}}}
    volume.beta.kubernetes.io/storage-provisioner: dobs.csi.digitalocean.com
  finalizers:
    - kubernetes.io/pvc-protection
spec:
  accessModes:
    - ReadWriteMany
  selector:
    matchLabels:
      app: my-app
      rack: paas
      system: convox
      volume: paas-my-app-23f50e7a8f20234a0f92f486674d92e6fb9deb4e
  resources:
    requests:
      storage: 10Gi
  storageClassName: do-block-storage
  volumeMode: Filesystem
status:
  phase: Pending

This is what they see in their backend:

paas-my-app   48m         Warning   ProvisioningFailed             persistentvolumeclaim/paas-my-app-23f50e7a8f20234a0f92f486674d92e6fb9deb4e   failed to provision volume with StorageClass "do-block-storage": claim Selector is not supported

I must say my first attempts with v3 racks are a bit underwhelming. It looks like there are many (undocumented/unsupported) variations in terms of supported features between the various k8s providers, and I’m afraid Convox will have to use the lowest common set of features to be truly inter-operable, or risk having subpar/broken experiences with some of the providers (in which case, why bother with them in the first place).

1 Like

I’m also having this issue.

Can the convox team give some indication about where the problem lies with DO + volumes, and what a resolution depends on?

Thanks!