mirror of
https://github.com/wahyd4/kt-connect.git
synced 2026-08-09 05:16:02 +10:00
247 lines
7.6 KiB
Markdown
247 lines
7.6 KiB
Markdown
KT Connect
|
|
===========
|
|
|
|
[](https://travis-ci.org/alibaba/kt-connect)
|
|
[](https://goreportcard.com/report/github.com/alibaba/kt-connect)
|
|
[](https://codeclimate.com/github/alibaba/kt-connect/test_coverage)
|
|
[](https://codeclimate.com/github/alibaba/kt-connect/maintainability)
|
|

|
|
|
|
Manage and integrate with your Kubernetes dev environment more efficiently.
|
|
|
|

|
|
|
|
## Features
|
|
|
|
* Connect: Directly Access a remote Kubernetes cluster. KT Connect use `sshuttle` as the vpn tool to access remote Kubernetes cluster networks.
|
|
* Exchange: Developer can exchange the workload to redirect the requests to a local app.
|
|
* Mesh: You can create a mesh version in local host and redirect to your local
|
|
* Dashboard: A dashboard view can help you know how the environment is been used.
|
|
|
|
## QuickStart
|
|
|
|
You can download and install the `ktctl` from [Downloads And Install](https://rdc-incubator.github.io/kt-docs/#/downloads)
|
|
|
|
### Deploy a service in Kubernetes
|
|
|
|
```
|
|
$ kubectl run tomcat --image=registry.cn-hangzhou.aliyuncs.com/rdc-product/kt-connect-tomcat9:1.0 --expose --port=8080
|
|
service "tomcat" created
|
|
deployment.apps "tomcat" created
|
|
|
|
# Deployment info
|
|
$ kubectl get deployments -o wide --selector run=tomcat
|
|
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
|
|
tomcat 1 1 1 1 18s tomcat registry.cn-hangzhou.aliyuncs.com/rdc-product/kt-connect-tomcat9:1.0 run=tomcat
|
|
|
|
# Pods info
|
|
$ kubectl get pods -o wide --selector run=tomcat
|
|
NAME READY STATUS RESTARTS AGE IP NODE
|
|
tomcat-54d87b848c-2mc9b 1/1 Running 0 1m 172.23.2.234 cn-beijing.192.168.0.8
|
|
|
|
# Service info
|
|
$ kubectl get svc tomcat
|
|
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
|
tomcat ClusterIP 172.21.6.39 <none> 8080/TCP 1m
|
|
```
|
|
|
|
### Connect: Access Kubernetes resource from local
|
|
|
|
```
|
|
$ sudo ktctl connect --method=vpn
|
|
10:44PM INF Connect Start At 80073
|
|
10:44PM INF Client address 192.168.3.120
|
|
10:44PM INF Deploying shadow deployment kt-connect-daemon-rarba in namespace default
|
|
|
|
10:44PM INF Shadow Pod status is Pending
|
|
10:44PM INF Shadow Pod status is Running
|
|
10:44PM INF Shadow is ready.
|
|
10:44PM INF Success deploy proxy deployment kt-connect-daemon-rarba in namespace default
|
|
|
|
Forwarding from 127.0.0.1:2222 -> 22
|
|
Forwarding from [::1]:2222 -> 22
|
|
Handling connection for 2222
|
|
Warning: Permanently added '[127.0.0.1]:2222' (ECDSA) to the list of known hosts.
|
|
client: Connected.
|
|
10:44PM INF KT proxy start successful
|
|
```
|
|
|
|
Access PodIP:
|
|
|
|
```
|
|
curl http://172.23.2.234:8080 #Access PodIP from local
|
|
kt-connect demo from tomcat9
|
|
```
|
|
|
|
Access ClusterIP:
|
|
|
|
```
|
|
$ curl http://172.21.6.39:8080 #Access ClusterIP
|
|
kt-connect demo from tomcat9
|
|
```
|
|
|
|
Access Server internal DNS address
|
|
|
|
```
|
|
$ curl http://tomcat:8080 #Access Server internal DNS address
|
|
kt-connect demo from tomcat9
|
|
```
|
|
|
|
### Exchange: Access local from cluster
|
|
|
|
Create Tomcat 8 in local and expose 8080 port
|
|
|
|
```
|
|
docker run -itd -p 8080:8080 tomcat:8
|
|
```
|
|
|
|
```
|
|
$ sudo ktctl exchange tomcat --expose 8080
|
|
2019/06/19 11:19:10 * tomcat (0 replicas)
|
|
2019/06/19 11:19:10 Scale deployment tomcat to zero
|
|
2019/06/19 11:19:10 Deploying proxy deployment tomcat-kt-oxpjf in namespace default
|
|
2019/06/19 11:19:10 Pod status is Pending
|
|
2019/06/19 11:19:12 Pod status is Running
|
|
2019/06/19 11:19:12 Success deploy proxy deployment tomcat-kt-oxpjf in namespace default
|
|
SSH Remote port-forward for POD starting
|
|
2019/06/19 11:19:14 ssh remote port-forward start at pid: 3567
|
|
```
|
|
|
|
```
|
|
tips:
|
|
if your remote port diffrent local port, you can user ${remotePort}:{localPort} set expose parameter
|
|
```
|
|
|
|
Access the local tomcat by internal service DNS address:
|
|
|
|
> Note: if `kubectl connect` not running, you can only access from cluster
|
|
|
|
```
|
|
$ curl http://tomcat:8080 | grep '<h1>'
|
|
<h1>Apache Tomcat/8.5.37</h1> #
|
|
```
|
|
|
|
### Mesh: Build large test environemnt with ServiceMesh
|
|
|
|
> You can know more from [Mesh Best Practices](https://rdc-incubator.github.io/kt-docs/#/guide/mesh)
|
|
|
|
The biggest difference from mesh and exchange is exchange will scale the origin workload replicas down to zero, and mesh will keep it and create a pod instance with an random version. After this, user can modify the `Istio` route rule to let the specific request redirect to your local, and the environment can keep working as normal:
|
|
|
|
```
|
|
$ sudo ktctl mesh tomcat --expose 8080
|
|
2019/06/19 22:10:23 'KT Connect' not runing, you can only access local app from cluster
|
|
2019/06/19 22:10:24 Deploying proxy deployment tomcat-kt-ybocr in namespace default
|
|
2019/06/19 22:10:24 Pod status is Pending
|
|
2019/06/19 22:10:26 Pod status is Pending
|
|
2019/06/19 22:10:28 Pod status is Running
|
|
2019/06/19 22:10:28 Success deploy proxy deployment tomcat-kt-ybocr in namespace default
|
|
2019/06/19 22:10:28 -----------------------------------------------------------
|
|
2019/06/19 22:10:28 | Mesh Version 'ybocr' You can update Istio rule |
|
|
2019/06/19 22:10:28 -----------------------------------------------------------
|
|
2019/06/19 22:10:30 exchange port forward to local start at pid: 53173
|
|
SSH Remote port-forward POD 172.16.0.217 22 to 127.0.0.1:2217 starting
|
|
2019/06/19 22:10:30 ssh remote port-forward exited
|
|
2019/06/19 22:10:32 ssh remote port-forward start at pid: 53174
|
|
```
|
|
|
|
### Dashboard
|
|
|
|
The dashboard can help your know how your dev environment is been used.
|
|
|
|

|
|
|
|
You can install KT Connect Dashboard by following [Install Dashboard](https://rdc-incubator.github.io/kt-docs/#/guide/dashboard)
|
|
|
|
## Ask For Help
|
|
|
|
Please contact us with DingTalk:
|
|
|
|

|
|
|
|
## Release Notes
|
|
|
|
### 0.0.12
|
|
|
|
> Release At 2020-03-08
|
|
|
|
* add `run` command to support expose local service
|
|
* add mesh/exchange port mapping usage
|
|
* fixed, random local ssh port cal issue
|
|
|
|
### 0.0.11
|
|
|
|
> Release At 2020-02-27
|
|
|
|
* fixed command not exit issue.
|
|
* add `check` command to help check local denpendencies
|
|
* add `dashboard` command to to install and open dashboard in local
|
|
* add support to access service with <servicename>.<namespace>
|
|
|
|
### 0.0.10
|
|
|
|
> Release At 2020-02-02
|
|
|
|
* Options adaptor windows system
|
|
* Add `--dump2hosts` options to support socks5 use
|
|
|
|
### 0.0.9
|
|
|
|
> Release At 2020-01-16
|
|
|
|
* Support Service Name as dns address
|
|
* Make sure shadow is clean up after command exit
|
|
|
|
### 0.0.8
|
|
|
|
> Release At 2019-12-13
|
|
|
|
* Add windows native support
|
|
* Add idea support
|
|
|
|
### 0.0.7
|
|
|
|
> Release At 2019-12-05
|
|
|
|
* Add oidc plugin to support TKE
|
|
* Add socks5 method to support WSL
|
|
* Fixed issue when node.Spec.PodCIRD dynamic cal CIRD
|
|
|
|
### 0.0.6
|
|
|
|
> Release At 2019-10-01
|
|
|
|
* Fixed clusterIP cidr missing.
|
|
* Rename docker images address.
|
|
|
|
### 0.0.5
|
|
|
|
> Release At 2019-10-09
|
|
|
|
* Add dashboard and api server source code
|
|
|
|
### 0.0.4
|
|
|
|
> Release At 2019-06-26
|
|
|
|
* Support KT Connect Dashboard
|
|
|
|
### 0.0.3
|
|
|
|
> Release At 2019-06-19
|
|
|
|
* Add `mesh` command to support istio network rule
|
|
|
|
### 0.0.2
|
|
|
|
> Release At 2019-06-19
|
|
|
|
* Fixed issue if istio inject is enable in namespace, and the request can't redirect to local
|
|
* Support exchange run standalone.
|
|
|
|
### 0.0.1
|
|
|
|
> Release At 2019-06-18
|
|
|
|
* split command to `connect` and `exchange`.
|
|
* support mutil exchange.
|