Auto-portforward是一种自动设置代理的工具,这些代理将远程容器的端口公开回本地计算机就像kubectl port-forward一样,但它会自动发现并更新要动态转发的端口主要用于 docker、podman 和 kubernetes 的双向端口转发
以下来自官方说明:
自动前移端口 (apf)
一个方便的工具,用于自动设置代理,将远程容器的侦听端口公开回本地计算机。就像 或 一样,但会自动发现并更新要动态转发的端口。 可以在容器中创建侦听端口,并将它们转发回去。kubectl portforwarddocker run -p LOCAL:REMOTEapf
我经常发现自己在测试 docker 映像时忘记添加选项,或者缺少公开一些其他端口。现在我不需要担心,我只需运行以下命令:-p
$ docker run -d --name redis redis
$ apf redis
- ==> : Forwarding local listening ports to (==>) remote ports
- <== : Forwarding to local ports from (<==) remote listening ports (use -r option)
Forwarding: [6379 ==> 6379]
apf将动态更新端口列表。因此,如果您登录到容器并启动其他服务器侦听不同的端口,它将动态更新本地侦听器。
对于 Kubernetes:
$ kubectl run --image redis redis
$ apf -k default/redis
Forwarding: [6379 ==> 6379]
对于波德曼:
$ podman run --name redis docker.io/library/redis:latest
$ apf -p redis
Forwarding: [6379 ==> 6379]
安装
首先,需要一个工作/客户端设置,客户端可以连接到本地docker守护进程/ k8s集群或远程。apfdockerkubectl
您可以从发布项目下载二进制文件,也可以自己构建。
MacOS (Intel)
curl -L -O https://github.com/ruoshan/autoportforward/releases/latest/download/apf-mac
chmod +x apf-mac
mv apf-mac /usr/local/bin/apf
MacOS (ARM)
curl -L -O https://github.com/ruoshan/autoportforward/releases/latest/download/apf-mac-arm64
chmod +x apf-mac-arm64
mv apf-mac-arm64 /usr/local/bin/apf
Linux
curl -L -O https://github.com/ruoshan/autoportforward/releases/latest/download/apf-linux-x64
chmod +x apf-linux-x64
mv apf-linux-x64 /usr/local/bin/apf
若要手动生成它,请克隆存储库并运行脚本。build.sh
用法
将容器中的所有侦听端口公开回本地计算机
Docker
apf {container ID / name}
Kubernetes
apf -k {namespace}/{pod name}
Podman
apf -p {podman container ID / name}
同时向容器公开本地端口 (8080,9090)
Docker
apf -r 8080,9090 {container ID / name}
Kubernetes
apf -r 8080,9090 -k {namespace}/{pod name}
Podman
apf -r 8080,9090 -p {podman container ID / name}
局限性
目前,仅支持主机相同 CPU 架构的容器。对于其他 arch,您可以通过调整脚本来执行自定义构建。apfbuild.sh
对于 Kubernetes,容器必须已安装。tar
如果容器使用只读 rootfs 运行,则 apf 将不起作用。(apf 需要将访客代理复制到容器中)
技巧
apf 没有附带 shell 完成功能,但以下是我为使其更方便而执行的操作:
brew install fzf
alias ap='docker ps | grep -v "CONTAINER ID" | fzf | awk "{print \$1}" | xargs -n 1 apf'
获得:地址