From 0f636a9d2760555309b5bc26bd94a29497a2e21f Mon Sep 17 00:00:00 2001 From: Patrick Kerwood Date: Thu, 30 Nov 2023 22:14:38 +0100 Subject: [PATCH] Added mirrord post --- src/posts/mirrord/README.md | 97 +++++++++++++++++++++++++++++ src/posts/mirrord/how-it-works.png | Bin 0 -> 55617 bytes 2 files changed, 97 insertions(+) create mode 100644 src/posts/mirrord/README.md create mode 100644 src/posts/mirrord/how-it-works.png diff --git a/src/posts/mirrord/README.md b/src/posts/mirrord/README.md new file mode 100644 index 0000000..7b3f4a9 --- /dev/null +++ b/src/posts/mirrord/README.md @@ -0,0 +1,97 @@ +--- +title: Local Development With Mirrord +date: 2023-11-30 15:06:08 +author: Patrick Kerwood +excerpt: With Mirrord you can intercept traffic for your pods in your Kubernetes cluster, which allows you to develop your application locally as if it was deployed in your cluster. Utilizing the pods network, environment or even the filesystem. In this post I will be writing some examples that I personally use. +type: post +blog: true +tags: [kubernetes, tool] +meta: +- name: description + content: Mirrord - Develop Locally with Your Kubernetes Environment +--- +{{ $frontmatter.excerpt }} + +From the Mirrord docs: + > Mirrord is an open-source tool that lets developers run local processes in the context of their cloud environment. It makes it incredibly easy to test your code on a cloud environment (e.g. staging) without actually going through the hassle of Dockerization, CI, or deployment, and without disrupting the environment by deploying untested code. + +![](./how-it-works.png) + +I have used [Telepresence](https://www.telepresence.io/) from Ambassador before for local development, but it is not nearly as feature rich as Mirrord. +Mirrord is not only for development, I regularly use it to debug general issues in Kubernetes. + +You can find the configuration docs here. + +## Using Mirrord with Cargo Watch +Below example I use when developing Rust applications with `cargo watch`. The only downside to this approach is that if you save your project and it does not compile the `mirrord` process will stop. + +```json +{ + "skip_processes": ["ld", "cc", "cargo-watch", "rustc"], + "target": { + "path": "deployment/my-application", + "namespace": "default" + }, + "feature": { + "env": { + "override": { + "RUST_LOG": "my_application=debug" + } + }, + "network": { + "incoming": { + "mode": "steal", + "port_mapping": [[8080, 8080]] + } + } + } +} +``` + +```sh +mirrord exec -f ./mirrord.json -- cargo watch -x run -w src +``` + +## Using Mirrord to connect to Redis instance +If you are using Google Cloud Memorystore, aka. Redis for your application, there really isn't a smart way to connect to the instance with `redis-cli`, +because obviously you don't have a shell in your image, but with `mirrord` you can. + +Below configuration includes the variables from the pod storing the Redis auth string and the IP address of the instance. + +By default `mirrord` will read from the remote filesystem. That means that `mirrord` is able to read files in the pod and since my Redis CA certificate +is a configmap mounted inside the pod on `/certificates/redis/ca.crt`, `redis-cli` can access it and use it in the `--cacert` parameter. + +Also incoming traffic is turned of, since we do not want to intercept any traffic from the running application. + +```json +{ + "target": "deployment/my-application", + "feature": { + "env": { + "include": "REDIS_AUTH_STRING;REDIS_IP" + }, + "network": { + "incoming": { + "mode": "off" + } + } + } +} +``` + +```sh +mirrord exec -f mirrord-config.json -- \ + redis-cli -h $REDIS_IP -a $REDIS_AUTH_STRING -p 6378 --tls --cacert /certificates/redis/ca.crt +``` + +If you, like me, do not store your Kubernetes secrets as environment variables, but mount them as files, the approach is a little different. +Since `redis-cli` doesn't have an option to read the auth-string from file, you'll have to `cat` the mounted secret, but to do that you'll have +to run the `redis-cli` inside a `bash` session. + +Bash does not need to be available in the container, the session will run locally. + +```sh +mirrord exec -f mirrord-config.json -- \ + bash -c 'REDISCLI_AUTH=$(cat /secrets/redis/auth-string) redis-cli -h $REDIS_IP -p 6378 --tls --cacert /certificates/redis/ca.crt' +``` + diff --git a/src/posts/mirrord/how-it-works.png b/src/posts/mirrord/how-it-works.png new file mode 100644 index 0000000000000000000000000000000000000000..b969cda1111e8b41ffbbd9608a0074912bedc5d3 GIT binary patch literal 55617 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