title: Why does it complain about `volume claim templates can only have their storage requests increased`?
body: <p>I am deploying Elasticsearch cluster on Kubernetes in AWS EKS. The spec I have is:</p>
  <pre class="lang-yaml prettyprint-override"><code>apiVersion: elasticsearch.k8s.elastic.co/v1
  kind: Elasticsearch
  metadata:
    name: es
  spec:
    version: 7.14.0
    nodeSets:
    - name: node
      count: 2
      config:
        node.store.allow_mmap: false
      volumeClaimTemplates:
      - metadata:
          name: elasticsearch-data
        spec:
          accessModes:
            - ReadWriteOnce
          storageClassName: ebs-sc
          resources:
            requests:
              storage: 1024Gi
  </code></pre>
  <p>When I deploy I got this error:</p>
  <p><code>for: &quot;es.yml&quot;: admission webhook &quot;elastic-es-validation-v1.k8s.elastic.co&quot; denied the request: Elasticsearch.elasticsearch.k8s.elastic.co &quot;es&quot; is invalid: spec.nodeSet[0].volumeClaimTemplates: Invalid value: []v1.PersistentVolumeClaim{v1.PersistentVolumeClaim{TypeMeta:v1.TypeMeta{Kind:&quot;&quot;, APIVersion:&quot;&quot;}, ObjectMeta:v1.ObjectMeta{Name:&quot;elasticsearch-data&quot;, GenerateName:&quot;&quot;, Namespace:&quot;&quot;, SelfLink:&quot;&quot;, UID:&quot;&quot;, ResourceVersion:&quot;&quot;, Generation:0, CreationTimestamp:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletionTimestamp:&lt;nil&gt;, DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string(nil), Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers:[]string(nil), ClusterName:&quot;&quot;, ManagedFields:[]v1.ManagedFieldsEntry(nil)}, Spec:v1.PersistentVolumeClaimSpec{AccessModes:[]v1.PersistentVolumeAccessMode{&quot;ReadWriteOnce&quot;}, Selector:(*v1.LabelSelector)(nil), Resources:v1.ResourceRequirements{Limits:v1.ResourceList(nil), Requests:v1.ResourceList{&quot;storage&quot;:resource.Quantity{i:resource.int64Amount{value:1099511627776, scale:0}, d:resource.infDecAmount{Dec:(*inf.Dec)(nil)}, s:&quot;&quot;, Format:&quot;BinarySI&quot;}}}, VolumeName:&quot;&quot;, StorageClassName:(*string)(0xc000cd2600), VolumeMode:(*v1.PersistentVolumeMode)(nil), DataSource:(*v1.TypedLocalObjectReference)(nil)}, Status:v1.PersistentVolumeClaimStatus{Phase:&quot;&quot;, AccessModes:[]v1.PersistentVolumeAccessMode(nil), Capacity:v1.ResourceList(nil), Conditions:[]v1.PersistentVolumeClaimCondition(nil)}}}: volume claim templates can only have their storage requests increased, if the storage class allows volume expansion. Any other change is forbidden</code></p>
  <p>The spec includes <code>volumeClaimTemplates</code> which is used to claim the persistent storage. I don't understand why it says <code>volume claim templates can only have their storage requests increased, if the storage class allows volume expansion</code>.</p>
  <p>I have checked PVC is empty:</p>
  <pre><code>$ kubectl get pvc
  No resources found in default namespace.
  </code></pre>
  <p>And I have below spec for storage class:</p>
  <pre><code>kind: StorageClass
  apiVersion: storage.k8s.io/v1
  metadata:
    name: ebs-sc
  provisioner: ebs.csi.aws.com
  allowVolumeExpansion: true
  volumeBindingMode: WaitForFirstConsumer
  </code></pre>