I am attempting to create a service for creating training datasets using the Prodigy UI tool. I would like to do this using a Kubernetes cluster which is running in Azure cloud. My Prodigy UI should be reachable on 0.0.0.0:8880 (on the container).
As such, I created a deployment as follows:
kind: Deployment
  apiVersion: apps/v1beta2
  metadata:
    name: prodigy-dply
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: prodigy_pod
    template:
      metadata:
        labels:
          app: prodigy_pod
      spec:
        containers:
        - name: prodigy-sentiment
          image: bdsdev.azurecr.io/prodigy
          imagePullPolicy: IfNotPresent
          command: ["/bin/bash"]
          args: ["-c", "prodigy spacy textapi -F training_recipe.py"]
          ports:
          - name: prodigyport
            containerPort: 8880
This should (should being the operative word here) expose that 8880 port at the pod level aliased as prodigyport
Following that, I have created a Service as below:
kind: Service
apiVersion: v1
metadata:
  name: prodigy-service
spec:
  type: LoadBalancer
  selector:
    app: prodigy_pod
  ports:
    - protocol: TCP
      port: 8000
      targetPort: prodigyport
At this point, when I run the associated kubectl create -f <deployment>.yaml and kubectl create -f <service>.yaml, I get an ExternalIP and associated Port: 10.*.*.*:34672.
This is not reachable by browser, and I'm assuming I have a misunderstanding of how my browser would interact with this Service, Pod, and the underlying Container. What am I missing here?
Note: I am willing to accept that kubernetes may not be the tool for the job here, it seems enticing because of the ease of scalability and updating images to reflect more recent configurations
 
                        
You can find public IP address(LoadBalancer Ingress) with this command:
Result like this:
Then you can browse it with external IP and port, like this:
Also you can find the Load Balaner rules via Azure portal:
Hope this helps.