Welcome to the Linux Foundation Forum!

Lab 4.3 Step 7

Built my lab in GCP (after wasting a lot of time on virtual box .... i'm stubborn that way!).
I cant seem to get step 7 to work. ie.e view sock shop app. I've tried adding a firewall rule to GCP but no joy.
Does anyone have any tips ?

Thanks

Comments

  • chrispokorni
    chrispokorni Posts: 2,349

    Hi, I have been using GCP as well and did not run into any issues. I agree that Vbox is quite challenging to setup and complete the labs on it.
    Did you get a complete listing of the pods in step 6? Did you get any services listed at all on step 7?
    The firewall rule I added in GCP was to enable all traffic.
    Will try to run thru the lab again, to see if any behavior has changed...
    Regards,
    -Chris

  • sdburns
    sdburns Posts: 10

    what is your all rule for ? any-any internally between the nodes which i believe may be required (never used GCP so starting at the basics) ? or all from the internet ? (in which case good luck!) An idiots guide to getting a cluster up an running on GCP is really needed as part of the course, id rather spend my time learning kube than networking !

  • sdburns
    sdburns Posts: 10

    sorry forgot to say - output from steps 6 &7 is as it should be ....

  • chrispokorni
    chrispokorni Posts: 2,349

    If both outputs are as expected, then you may just have a firewall issue.
    The GCP firewall rules documentation is quite easy to follow:
    https://cloud.google.com/vpc/docs/using-firewalls
    It gives specific instructions on how to create firewall rules from the console and from the command line thru gcloud command.
    Also, verify that the firewall on your VM instances is disabled.
    I had to perform these steps on both GCP and AWS in order to get the nodes to communicate with each other and to be able to access the cluster from my laptop.

  • sdburns
    sdburns Posts: 10

    Got it working thanks, would be good if these steps were included in the lab setup. I know its not too hard to figure out but will be slightly different depending on cloud platform or virtual box (routes?) etc. Will paste my notes below, a bit more detail may help others ....

  • sdburns
    sdburns Posts: 10

    If building on GCP you will need a couple of firewall rules when testing external conectivity.

    The easiest was to do this is to tag all of your cluster nodes with the same tag. E.g. "k8s" Compute Engine > VM instances > VM Node > Network tags.

    GCP has a "default-allow-internal" rule which is based on an IP range, this IP range does not match the calico pod network range, hence the cluster will not work as expected.

    To fix this create a new rule "internal-all" as below:

    internal-all
    Network: default
    Priority: 65534
    Direction: Ingress
    Action on match: Allow
    Targets
    Target tags: k8s
    Source filters
    Tags: k8s
    Protocols and ports: all
    Enforcement: Enabled

    This will allow unrestricted pod to pod and pod to node traffic. You will also need a firewall rule to allow traffic from the external world.
    E.g.

    letmein
    Network: default
    Priority: 65534
    Direction: Ingress
    Action on match: Allow
    Targets
    Target tags: k8s
    Source filters
    IP ranges: 0.0.0.0/0
    Protocols and ports: tcp:30001 (Check what node port you want to allow)
    Enforcement: Enabled

    The second rule could be deleted / disabled when not needed for labs.

  • sdburns
    sdburns Posts: 10

    don't think i'm quite right on the IP range bit as its tunnelled but there is something in the default GCP rule thats k8s doesn't like. (disable the new rule and you have to hit the node running the pod but with rule in place you can hit any node as i'd expect.

    Worth a watch :
    https://www.youtube.com/watch?v=WwQ62OyCNz4

  • chrispokorni
    chrispokorni Posts: 2,349

    An informative video, thanks for sharing.
    I looked back at my notes and I only found 1 fw rule I created for my Kubernetes related project. I did not create a VPC or any subnets, so I created the rule for the default network at the project level. The custom rule was very simple: Ingress, Apply to all targets, Range 0.0.0.0/0, All protocols, Allow, 1000. Since all instances in the project were Kubernetes nodes, I figured I'd create one rule to apply to all.
    Regards,
    -Chris

Categories

Upcoming Training