> For the complete documentation index, see [llms.txt](https://metalbear.com/mirrord/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://metalbear.com/mirrord/docs/faq/limitations.md). # Limitations Which languages, Kubernetes versions, and cluster setups mirrord supports, and where it does not work yet. ## What frameworks/languages does mirrord support? mirrord works by [hooking libc](https://metalbear.com/blog/mirrord-internals-hooking-libc-functions-in-rust-and-fixing-bugs/), so it should work with any language/framework that uses libc (vast majority). This includes: Rust, Node, Python, Java, Kotlin, Ruby, and others (most languages use libc). mirrord also supports [Go](https://metalbear.com/blog/hooking-go-from-rust-hitchhikers-guide-to-the-go-laxy/), which doesn't use libc ## Which Kubernetes versions does mirrord support? Basic mirrord setups can support Kubernetes versions as old as `1.22`, but some features require newer versions. See [Cluster Requirements](/mirrord/docs/getting-started/installing-mirrord.md#cluster-requirements). ## Does mirrord support clusters with a service mesh like Istio or Linkerd? Yes, mirrord works exactly the same way with and without a service mesh installed. ## Does mirrord support OpenShift? Yes, mirrord works with OpenShift. However, OpenShift usually ships with a default security policy that doesn't let mirrord create pods. To fix this, you would need to tweak your `scc` settings - more information [here](https://docs.openshift.com/container-platform/3.11/admin_guide/manage_scc.html). If you'd rather keep the default security policies, we recommend trying out [mirrord for Teams](/mirrord/docs/getting-started/installing-mirrord/operator.md). ## Does mirrord support Teleport, Tailscale, or other secure cluster access tools? Yes, and there's nothing to configure. mirrord reaches your cluster entirely through the Kubernetes API, using the same kubeconfig `kubectl` uses. That covers everything it does: the [mirrord Operator](/mirrord/docs/getting-started/installing-mirrord/operator.md) is exposed as a Kubernetes APIService, and the connection to the [mirrord agent](/mirrord/docs/reference/architecture.md#mirrord-agent) runs over Kubernetes port forwarding. mirrord never opens a network path of its own. If `kubectl` works through your access provider, mirrord works through it too. Customers run mirrord behind Teleport and Tailscale today. ## Does mirrord support binaries that are statically compiled? (Linux) No, mirrord needs to be able to leverage dynamic linking in order to work. This means static binaries are not supported. To check a binary, you can use the `file ` command - dynamically linked binaries will look like this: ```bash marvin@heart-of-gold:~$ file /usr/bin/ls /usr/bin/ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=36b86f957a1be53733633d184c3a3354f3fc7b12, for GNU/Linux 3.2.0, stripped ``` And static binaries will look like this: ```bash marvin@heart-of-gold:~/MetalBear$ file some_static_binary some_static_binary: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=2e1eda62d5f755377435c009e856cd7b9836734e, for GNU/Linux 3.2.0, not stripped ``` Sometimes, Go is statically compiled by default, so it's important to check and compile dynamically if necessary. See [this section in Common Issues](/mirrord/docs/faq/troubleshooting/common-issues.md#ive-run-my-program-with-mirrord-but-it-seems-to-have-no-effect) for more info. --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation by asking a question. Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters: ``` GET https://metalbear.com/mirrord/docs/faq/limitations.md?ask=&goal= ``` `ask` is the immediate question: it should be specific, self-contained, and written in natural language. `goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.