GoogleContainerTools / skaffold

Easy and Repeatable Kubernetes Development
https://skaffold.dev/
Apache License 2.0
15.07k stars 1.62k forks source link

Quickstart: demo app not reachable through localhost #8653

Open pdpol opened 1 year ago

pdpol commented 1 year ago

Hello!

I've just been going through the quickstart for Skaffold and had difficulty reaching my example app from my browser at http://localhost:3000 as the docs describe. However, I did have success reaching the app by using the external IP as output by kubectl get svc for the LoadBalancer service.

I tried this on two separate laptops as noted in the information section below, a macbook and a Ubuntu machine. So I'm wondering, do I have something misconfigured that would allow localhost to work as described, or would it actually be expected that you need to use the external IP for the LoadBalancer service?

Expected behavior

After following the steps outlined in the quickstart through this section:

To browse to the web page, open a new terminal and run:

minikube tunnel -p custom

Now open your browser at http://localhost:3000. This displays the content of public/index.html file.

Navigating to http://localhost:3000 displays "Hello World." In the browser.

Actual behavior

Instead, the browser is unable to connect, but navigating to an external IP as output from kubectl get svc successfully loads the page.

I.e.:

kubernetes   ClusterIP      10.96.0.1       <none>          443/TCP          2m39s
web          LoadBalancer   10.107.176.91   10.107.176.91   3000:32452/TCP   58s

means 10.107.176.91:3000 will succeed.

Information

apiVersion: skaffold/v4beta4
kind: Config
metadata:
  name: buildpacks-node-tutorial
build:
  artifacts:
    - image: skaffold-buildpacks-node
      buildpacks:
        builder: gcr.io/buildpacks/builder:v1
manifests:
  rawYaml:
    - k8s/web.yaml

Steps to reproduce the behavior

  1. git clone https://github.com/GoogleContainerTools/skaffold
  2. cd skaffold/examples/buildpacks-node-tutorial
  3. skaffold init
  4. Choose the builder to build image skaffold-buildpacks-node Buildpacks (package.json)
  5. minikube start --profile custom
  6. skaffold config set --global local-cluster true
  7. eval $(minikube -p custom docker-env)
  8. skaffold dev
  9. This output appears: Example app listening on port 3000!
  10. minikube tunnel -p custom
  11. Unable to connect to http://localhost:3000
httpete commented 3 months ago

Hitting this exact same thing, except I can't hit the url at all, either localhost or the one in the LoadBalancer.

torial]$ kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
common       ClusterIP      None            <none>          <none>           41m
kubernetes   ClusterIP      10.96.0.1       <none>          443/TCP          69m
node         LoadBalancer   10.109.53.130   10.109.53.130   3000:31504/TCP   36m
web          LoadBalancer   10.104.35.139   10.104.35.139   3000:31110/TCP   21m
httpete commented 3 months ago

AH! I got this working by adding --port-forward to skaffold dev:


skaffold dev --port-forward

Now I see http://localhost:3000

Maybe that should be in the Quickstart page?