GitHub - txn2/kubefwd: Bulk port forwarding Kubernetes services for local develo...
source link: https://github.com/txn2/kubefwd
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Contributions welcome!
kubefwd (Kube Forward)
Read Kubernetes Port Forwarding for Local Development for background and a detailed guide to kubefwd.
kubefwd is a command line utility built to port forward some or all pods within a Kubernetes namespace. kubefwd uses the same port exposed by the service and forwards it from a loopback IP address on your local workstation. kubefwd temporally adds domain entries to your /etc/hosts
file with the service names it forwards.
When working on our local workstation, my team and I often build applications that access services through their service names and ports within a Kubernetes namespace. kubefwd allows us to develop locally with services available as they would be in the cluster.
OS
Tested directly on macOS and Linux based docker containers.
MacOs Install / Update
kubefwd assumes you have kubectl installed and configured with access to a Kubernetes cluster. kubefwd uses the kubectl current context. The kubectl configuration is not used. However, it's configuration is needed to access a Kubernetes cluster.
Ensure you have a context by running:
kubectl config current-context
If you are running MacOS and use homebrew you can install kubefwd directly from the txn2 tap:
brew install txn2/tap/kubefwd
To upgrade:
brew upgrade kubefwd
Docker
Forward all services from the namespace the-project to a Docker container named the-project.
docker run -it --rm --privileged --name the-project \
-v "$(echo $HOME)/.kube/":/root/.kube/ \
txn2/kubefwd services -n the-project
Execute a curl call to an Elasticsearch service in your Kubernetes cluster.
docker exec the-project curl -s elasticsearch:9200
Alternative Installs (tar.gz, RPM, deb, snap)
Check out the releases section on Github for alternative binaries.
Contribute
Fork kubefwd and build a custom version. We welcome any useful pull requests.
Usage
Forward all services for the namespace the-project
sudo kubefwd services -n the-project
Forward all services for the namespace the-project
where labeled system: wx
:
sudo kubefwd services -l system=wx -n the-project
Help
$ kubefwd services --help _ _ __ _ | | ___ _| |__ ___ / _|_ ____| | | |/ / | | | '_ \ / _ \ |_\ \ /\ / / _ | | <| |_| | |_) | __/ _|\ V V / (_| | |_|\_\\__,_|_.__/ \___|_| \_/\_/ \__,_| Forward all Kubernetes services. Usage: kubefwd services [flags] Aliases: services, svcs, svc Flags: -h, --help help for services -c, --kubeconfig string absolute path to the kubeconfig file (default "/Users/cjimti/.kube/config") -n, --namespace string Specify a namespace. -l, --selector string Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2)
Development
Build and Run
Local
go run ./cmd/kubefwd/kubefwd.go
Build Run in Docker
Run in the golang:1.10.3 docker container.
docker run -it --rm --privileged \ -v "$(pwd)":/go/src/github.com/txn2/kubefwd \ -v "$(echo $HOME)/.kube/":/root/.kube/ \ -w /go/src/github.com/txn2/kubefwd golang:1.10.3 bash
go run ./cmd/kubefwd/kubefwd.go
Build Release
Build test release:
goreleaser --skip-publish --rm-dist --skip-validate
Build and release:
GITHUB_TOKEN=$GITHUB_TOKEN goreleaser --rm-dist
License
Apache License 2.0
Sponsor
Opens source utility proudly sponsored by Deasil Works Inc
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK