Usage
The operator creates a Listener for each mounted CSI volume with storageClassName: listeners.stackable.tech.
A minimal exposed Pod looks like this:
---
apiVersion: v1
kind: Pod
metadata:
  name: example-public-pod
spec:
  volumes:
    - name: listener
      ephemeral: (1)
        volumeClaimTemplate:
          metadata:
            annotations:
              listeners.stackable.tech/listener-class: public (2)
          spec:
            storageClassName: listeners.stackable.tech
            accessModes:
              - ReadWriteMany
            resources:
              requests:
                storage: "1"
  containers:
    - name: nginx
      image: nginx
      ports:
        - name: http
          containerPort: 80
      volumeMounts:
        - name: listener
          mountPath: /listener (3)| 1 | Defines an ephemeral listener, meaning that it will automatically be deleted when the Podis. | 
| 2 | Defines that we want to expose this pod by automatically creating a service according to the ListenerClasspublic. | 
| 3 | Mounts metadata about the Listener(such as the port mapping and IP address) into/listener. The volume must be mounted, even if this data is never used by thePoditself. | 
The exact ListenerClass is going to depend on the Kubernetes environment, but should often look like this for public clouds:
---
apiVersion: listeners.stackable.tech/v1alpha1
kind: ListenerClass
metadata:
  name: public
spec:
  serviceType: LoadBalancerOr like this for on-premise environments:
---
apiVersion: listeners.stackable.tech/v1alpha1
kind: ListenerClass
metadata:
  name: public
spec:
  serviceType: NodePort