Kftray - kubernetes port forward no menu bar!
Tags: devops, kubernetes, opensource, cloud
Published: 2024-02-16 01:51:17

## Introdução ao Kftray
uma aplicação no menu bar desenvolvida com Rust e React usando o framework Tauri, o app tem um proposito simples: simplificar a forma como executamos e gerenciamos multiplos kubectl port-forward no dia a dia, e também o kftray adiciona novos recursos em comparação com o tradicional kubectl port-forward. (mais detalhes nos proximos topicos)


![gif demo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/soq99qwzgrk4sc7wvpyf.gif)

## KFtray 
A principal missão do [KFtray](https://github.com/hcavarsan/kftray) é simplificar o processo de gerenciamento de multipos kubectl port forward de clusters Kubernetes. Projetado com simplicidade e produtividade em mente, o app permite aos usuários iniciar e parar múltiplas configurações de redirecionamento de portas por meio de uma interface elegante e amigável. O app se destaca pela sua resiliência, operações com um clique e independência do kubectl, pois se conecta diretamente com a API do Kubernetes.

## Mão na massa!
Configurar o KFtray é muito simples:

1.  **Configurando configurações de port-forward:**  
    A UI intuitiva permite adicionar e gerenciar facilmente as configurações port forward com campos para workload (Proxy ou Serviço), alias único, contexto do Kubernetes, namespace, service, remote address (para Proxy), protocolo (TCP/UDP) e portas locais/remotas.

![create new configuration](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/219kcrvq32g6pyax9m1o.png)

1.  **Ativando os port forwards:**  
   Você pode iniciar um unico port forward com um simples clique ou lançar multipos forwards simultaneamente, tornando muito fácil gerenciar configurações complexas.

![multiple configurations](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zj58q4p2ny6nhb05it73.png)

1.  **Gerenciando Configurações:**  
    O KFtray fornece opções para exportar/importar configurações como arquivos JSON, garantindo que você possa compartilhar ou fazer backup de suas configurações. Ele também salva as configurações de forma segura localmente em “$HOME/.kftray/configs.db”. Aqui está um exemplo do formato JSON esperado pelo KFtray:

```json
[  
  {  
    "alias": "consul-ui",  
    "context": "kind-7",  
    "local_port": 8500,  
    "namespace": "consul",  
    "protocol": "tcp",  
    "remote_port": 8500,  
    "service": "consul-ui",  
    "workload_type": "service"  
  },  
  {  
    "alias": "redis-gcp",  
    "context": "kind-6",  
    "local_port": 26379,  
    "namespace": "default",  
    "protocol": "udp",  
    "remote_address": "redis-prod.gcp.internal",  
    "remote_port": 6379,  
    "workload_type": "proxy"  
  }  
]
```

**Conexão de Redirecionamento de Porta Resiliente:**
*   **Resilient Port Forwarding Connection:** O KFtray garante que seus serviços permaneçam acessíveis ao reconectar automaticamente a pods alternativos em execução, caso algum falhe..
*   **Vários port forwards com Um Clique:** Configure rapidamente múltiplas instâncias de port forward com um único clique 
*   **Independente do Kubectl:** A interface direta do KFtray com a API do Kubernetes elimina a dependência do kubectl, proporcionando uma experiência mais suave e atendendo àqueles que preferem interfaces gráficas ao invés da linha de comando.
*   **Suporte a Múltiplos Protocolos:**: Expandindo além do TCP, o suporte do KFtray a múltiplos protocolos, incluindo UDP, permite acesso a uma variedade de serviços, tanto internos quanto externos aos seus clusters Kubernetes.

## Conclusão

O KFtray visa melhorar a experiência de gerenciar multipos port forward de uma vez, oferecendo uma solução simples, eficiente e confiável. Seja para depuração de serviços ou acesso a recursos internos, o KFtray oferece a flexibilidade e confiabilidade necessárias em ambientes de desenvolvimento de ritmo acelerado.

Se você achou o KFtray util, considere nos dar uma estrela no GitHub em https://github.com/hcavarsan/kftray.

Se você encontrar algum problema ou tiver dúvidas sobre o KFtray, crie uma issue em nosso repositório !