<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Networking on Layer5 Documentation</title><link>/tags/networking/</link><description>Recent content in Networking on Layer5 Documentation</description><generator>Hugo</generator><language>en</language><atom:link href="/tags/networking/index.xml" rel="self" type="application/rss+xml"/><item><title>Networking</title><link>/cloud/guides/self-hosted/planning/peer-to-peer-communication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/cloud/guides/self-hosted/planning/peer-to-peer-communication/</guid><description>&lt;p&gt;Plan these network paths before you deploy. Most are ordinary HTTPS traffic through your ingress. Real-time co-editing is the exception: it connects browsers directly to each other, and the deployment only introduces them.&lt;/p&gt;

&lt;h2 id="required-network-paths" class="heading-link"&gt;
 Required network paths
 &lt;a href="#required-network-paths" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;From&lt;/th&gt;
 &lt;th&gt;To&lt;/th&gt;
 &lt;th&gt;Protocol&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Browsers, Meshery Servers, API clients&lt;/td&gt;
 &lt;td&gt;Ingress, public hostname&lt;/td&gt;
 &lt;td&gt;HTTPS&lt;/td&gt;
 &lt;td&gt;UI, API, sign-in (&lt;code&gt;/kratos&lt;/code&gt;), and OAuth2 (&lt;code&gt;/hydra&lt;/code&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Browsers&lt;/td&gt;
 &lt;td&gt;Ingress, &lt;code&gt;/collaboration&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;WebSocket over HTTPS&lt;/td&gt;
 &lt;td&gt;Co-editing signaling&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer5 Cloud server&lt;/td&gt;
 &lt;td&gt;Kratos and Hydra services&lt;/td&gt;
 &lt;td&gt;HTTP, in cluster&lt;/td&gt;
 &lt;td&gt;Account and token operations. Default ports: Kratos public 9010 and admin 9011, Hydra public 4444 and admin 4445&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Kratos&lt;/td&gt;
 &lt;td&gt;Layer5 Cloud server&lt;/td&gt;
 &lt;td&gt;HTTP, in cluster&lt;/td&gt;
 &lt;td&gt;Registration hooks, and identity mail when the HTTP courier is selected&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer5 Cloud server, Kratos, Hydra&lt;/td&gt;
 &lt;td&gt;PostgreSQL&lt;/td&gt;
 &lt;td&gt;TCP 5432&lt;/td&gt;
 &lt;td&gt;Databases &lt;code&gt;meshery&lt;/code&gt;, &lt;code&gt;kratos&lt;/code&gt;, &lt;code&gt;hydra&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer5 Cloud server&lt;/td&gt;
 &lt;td&gt;SMTP relay&lt;/td&gt;
 &lt;td&gt;SMTP on 25, 465, 587, or 2525&lt;/td&gt;
 &lt;td&gt;Mail. The relay must resolve to a public address&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer5 Cloud server&lt;/td&gt;
 &lt;td&gt;Webhook receivers&lt;/td&gt;
 &lt;td&gt;HTTPS&lt;/td&gt;
 &lt;td&gt;Optional webhooks&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Layer5 Cloud server&lt;/td&gt;
 &lt;td&gt;OpenTelemetry collector&lt;/td&gt;
 &lt;td&gt;OTLP gRPC&lt;/td&gt;
 &lt;td&gt;Optional traces&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Browsers&lt;/td&gt;
 &lt;td&gt;Public STUN and TURN hosts&lt;/td&gt;
 &lt;td&gt;UDP and TCP&lt;/td&gt;
 &lt;td&gt;Direct connections between co-editing browsers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The ingress must support WebSocket upgrades. A controller or load balancer that closes idle connections shorter than the signaling keep-alive (below) disconnects users from their co-editing session.&lt;/p&gt;</description></item><item><title>Explore Services</title><link>/kanvas/tutorials/kubernetes/kubernetes-services/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/kanvas/tutorials/kubernetes/kubernetes-services/</guid><description>&lt;p&gt;In this tutorial you put three Services in front of running workloads: a ClusterIP Service in front of a Deployment, a NodePort Service in front of one Pod, and a LoadBalancer Service in front of another. Pods come and go and change IP addresses every time they are replaced. A Service gives a changing set of Pods one stable address and finds them by label, and its type decides who can reach that address. Building all three side by side makes the difference between the types concrete.&lt;/p&gt;</description></item><item><title>Kubernetes Request Flow</title><link>/kanvas/concepts/kubernetes-request-flow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/kanvas/concepts/kubernetes-request-flow/</guid><description>&lt;p&gt;A request to an application in Kubernetes passes through several objects before it reaches a process in a container, and none of those objects is wired to the next by a fixed address. Each layer finds the next one by name or by label at the moment the request arrives. Knowing that path, and what each layer is responsible for, turns &amp;ldquo;why am I not getting a response?&amp;rdquo; into a short list of places to look. This page walks the path from the client to the container, explains why labels and selectors are what hold it together, and shows how the same path appears in a Kanvas design.&lt;/p&gt;</description></item></channel></rss>