From 9ac08a9ed3e8d96ca1c18e0ee1aa99d13095cddf Mon Sep 17 00:00:00 2001 From: Michael Irwin Date: Fri, 27 Sep 2024 12:30:58 -0400 Subject: [PATCH] Add use case guide for HTTP routing with Traefik Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- _vale/config/vocabularies/Docker/accept.txt | 4 + .../guides/images/traefik-in-development.webp | Bin 0 -> 16118 bytes ...n-containerized-workload-architecture.webp | Bin 0 -> 21766 bytes content/guides/traefik.md | 233 ++++++++++++++++++ content/subjects/networking/_index.md | 3 + 5 files changed, 240 insertions(+) create mode 100644 content/guides/images/traefik-in-development.webp create mode 100644 content/guides/images/traefik-non-containerized-workload-architecture.webp create mode 100644 content/guides/traefik.md create mode 100644 content/subjects/networking/_index.md diff --git a/_vale/config/vocabularies/Docker/accept.txt b/_vale/config/vocabularies/Docker/accept.txt index b26aee0352..036c9e8334 100644 --- a/_vale/config/vocabularies/Docker/accept.txt +++ b/_vale/config/vocabularies/Docker/accept.txt @@ -16,6 +16,7 @@ BuildKit BusyBox CISA CNCF +CORS CVEs? CentOS Ceph @@ -126,6 +127,7 @@ TCP TLS TXT Testcontainers +Traefik UDP URLs? UUID @@ -137,6 +139,7 @@ VMware WSL Wasm Windows +WireMock Zsh [Bb]uildx [Cc]odenames? @@ -188,6 +191,7 @@ namespace npm osquery osxfs +pgAdmin runc snapshotters? stdin diff --git a/content/guides/images/traefik-in-development.webp b/content/guides/images/traefik-in-development.webp new file mode 100644 index 0000000000000000000000000000000000000000..53ca2ea24ff31656040f5b899dbf0a7a69cbe16d GIT binary patch literal 16118 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 Bg9!it literal 0 HcmV?d00001 diff --git a/content/guides/images/traefik-non-containerized-workload-architecture.webp b/content/guides/images/traefik-non-containerized-workload-architecture.webp new file mode 100644 index 0000000000000000000000000000000000000000..ece82a543d7f5c43ff102980c6576345619f68b3 GIT binary patch literal 21766 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.rule` - used to indicate the routing rule ([view all of the available rules here](https://doc.traefik.io/traefik/routing/routers/#rule)) +- `traefik.http.services..loadbalancer.server.port` - indicates the port Traefik should forward the request to. Note that this container port does not need to be exposed on your host machine ([read about port detection here](https://doc.traefik.io/traefik/providers/docker/#port-detection)) + +Let’s do a quick demo of starting Traefik and then configuring two additional containers to be accessible using different hostnames. + +1. In order for two containers to be able to communicate with each other, they need to be on the same network. Create a network named `traefik-demo` using the `docker network create` command: + + ```console + $ docker network create traefik-demo + ``` + +2. Start a Traefik container using the following command. The command exposes Traefik on port 80, mounts the Docker socket (which is used to monitor containers to update configuration), and passes the `--providers.docker` argument to configure Traefik to use the Docker provider. + + ```console + $ docker run -d --network=traefik-demo -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock traefik:v3.1.2 --providers.docker + ``` + +3. Now, start a simple Nginx container and define the labels Traefik is watching for to configure the HTTP routing. Note that the Nginx container is not exposing any ports. + + ```console + $ docker run -d --network=traefik-demo --label 'traefik.http.routers.nginx.rule=Host(`nginx.localhost`)' nginx + ``` + + Once the container starts, open your browser to [http://nginx.localhost](http://nginx.localhost) to see the app (all Chromium-based browsers route \*.localhost requests locally with no additional setup). + +4. Start a second application that will use a different hostname. + + ```console + $ docker run -d --network=traefik-demo --label 'traefik.http.routers.welcome.rule=Host(`welcome.localhost`)' docker/welcome-to-docker + ``` + + Once the container starts, open your browser to http://welcome.localhost. You should see a “Welcome to Docker” website. + +## Using Traefik in development + +Now that you’ve experienced Traefik, it’s time to try using it in a development environment. In this example, you will use a sample application that has a split frontend and backend. This app stack has the following configuration: + +1. All requests to /api to go to the API service +2. All other requests to localhost go to the frontend client +3. Since the app uses MySQL, db.localhost should provide phpMyAdmin to make it easy to access the database during development + +![Architecture diagram showing Traefik routing requests to other containers based on the path of the request](./images/traefik-in-development.webp) + +The application can be accessed on GitHub at [dockersamples/easy-http-routing-with-traefik](https://github.com/dockersamples/easy-http-routing-with-traefik). + +1. In the `compose.yaml` file, Traefik is using the following configuration: + + ```yaml + services: + proxy: + image: traefik:v3.1.2 + command: --providers.docker + ports: + - 80:80 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + ``` + + Note that this is essentially the same configuration as used earlier, but now in a Compose syntax. + +2. The client service has the following configuration, which will start the container and provide it with the labels to receive requests at localhost. + + ```yaml {hl_lines=[7,8]} + services: + # … + client: + image: nginx:alpine + volumes: + - "./client:/usr/share/nginx/html" + labels: + traefik.http.routers.client.rule: "Host(`localhost`)" + ``` + +3. The api service has a similar configuration, but you’ll notice the routing rule has two conditions - the host must be “localhost” and the URL path must have a prefix of “/api”. Since this rule is more specific, Traefik will evaluate it first compared to the client rule. + + ```yaml {hl_lines=[7,8]} + services: + # … + api: + build: ./dev/api + volumes: + - "./api:/var/www/html/api" + labels: + traefik.http.routers.api.rule: "Host(`localhost`) && PathPrefix(`/api`)" + ``` + +4. And finally, the `phpmyadmin` service is configured to receive requests for the hostname “db.localhost”. The service also has environment variables defined to automatically log in, making it a little easier to get into the app. + + ```yaml {hl_lines=[5,6]} + services: + # … + phpmyadmin: + image: phpmyadmin:5.2.1 + labels: + traefik.http.routers.db.rule: "Host(`db.localhost`)" + environment: + PMA_USER: root + PMA_PASSWORD: password + ``` + +5. Before starting the stack, stop the Nginx container if it is still running. + +And that’s it. Now, you only need to spin up the Compose stack with a `docker compose up` and all of the services and applications will be ready for development. + +## Sending traffic to non-containerized workloads + +In some situations, you may want to forward requests to applications not running in containers. In the following architecture diagram, the same application from before is used, but the API and React apps are now running natively on the host machine. + +![An architecture diagram showing several components and the routing between them. Traefik is able to send requests to both non-containerized and containerized workloads](images/traefik-non-containerized-workload-architecture.webp) + +To accomplish this, Traefik will need to use another method to configure itself. The [File provider](https://doc.traefik.io/traefik/providers/file/) lets you define the routing rules in a YAML document. Here is an example file: + +```yaml +http: + routers: + native-api: + rule: "Host(`localhost`) && PathPrefix(`/api`)" + service: native-api + native-client: + rule: "Host(`localhost`)" + service: native-client + + services: + native-api: + loadBalancer: + servers: + - url: "http://host.docker.internal:3000/" + native-client: + loadBalancer: + servers: + - url: "http://host.docker.internal:5173/" +``` + +This configuration indicates that requests that for `localhost/api` will be forwarded to a service named `native-api`, which then forwards the request to http://host.docker.internal:3000. The hostname `host.docker.internal` is a name that Docker Desktop provides to send requests to the host machine. + +With this file, the only change is to the Compose configuration for Traefik. There are specifically two things that have changed: + +1. The configuration file is mounted into the Traefik container (the exact destination path is up to you) +2. The `command` is updated to add the file provider and point to the location of the configuration file + +```yaml +services: + proxy: + image: traefik:v3.1.2 + command: --providers.docker --providers.file.filename=/config/traefik-config.yaml --api.insecure + ports: + - 80:80 + - 8080:8080 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./dev/traefik-config.yaml:/config/traefik-config.yaml +``` + +### Starting the example app + +To run the example app that forwards requests from Traefik to native-running apps, use the following steps: + +1. If you have the Compose stack still running, stop it with the following command: + + ```console + $ docker compose down + ``` + +2. Start the application using the provided `compose-native.yaml` file: + + ```console + $ docker compose -f compose-native.yaml up + ``` + + Opening [http://localhost](http://localhost) will return a 502 Bad Gateway because the other apps aren’t running yet. + +3. Start the API by running the following steps: + + ```console + cd api + yarn install + yarn dev + ``` + +4. Start the frontend by running the following steps in a new terminal (starting from the root of the project): + + ```console + cd client + yarn install + yarn dev + ``` + +5. Open the app at [http://localhost](http://localhost). You should see an app that fetches a message from [http://localhost/api/messages](http://localhost/api/messages). You can also open [http://db.localhost](http://db.localhost) to view or adjust the available messages directly from the Mongo database. Traefik will ensure the requests are properly routed to the correct container or application. + +6. When you’re done, run `docker compose down` to stop the containers and stop the Yarn apps by hitting `ctrl+c`. + +## Recap + +Running multiple services doesn’t have to require tricky port configuration and a good memory. With tools like Traefik, it’s easy to launch the services you need and easily access them - whether they’re for the app itself (such as the frontend and backend) or for additional development tooling (such as phpMyAdmin). diff --git a/content/subjects/networking/_index.md b/content/subjects/networking/_index.md new file mode 100644 index 0000000000..e5573002b6 --- /dev/null +++ b/content/subjects/networking/_index.md @@ -0,0 +1,3 @@ +--- +title: Networking +---