hcavarsan / kftray

kubectl port-forward on steroids 🦀 manage and share multiple k8s port forwards configurations- with support for UDP, proxy through the k8s cluster, and github state sync.
https://kftray.app/
MIT License
790 stars 70 forks source link

add auto import based on kube annotations #300

Closed hcavarsan closed 1 week ago

hcavarsan commented 1 week ago

This PR adds an auto-import feature to KFTray and KFTUI. import Kubernetes service configurations by selecting a context in the new "Auto Import". Services with the annotation kftray.app/enabled: true will be imported, and additional configurations can be specified using the kftray.app/configs annotation in the format alias-localPort-targetPort. This feature automates the configuration import process.

coderabbitai[bot] commented 1 week ago

Walkthrough

The changes introduced in this pull request significantly enhance the functionality of the kftray-portforward project. New asynchronous functions have been added to facilitate the interaction with Kubernetes resources, including the ability to list Kubernetes contexts, retrieve all namespaces, and get services with specific annotations. The core module has been expanded to include functionality for retrieving service configurations based on selected contexts, with added helper functions for parsing and creating configurations.

In the user interface, a new modal component, AutoImportModal, has been integrated into the application, allowing users to import Kubernetes service configurations based on selected contexts. This modal is accessible from both the footer and the main component of the application, enhancing user interaction. The application state management has been updated to accommodate context selection, and the UI has been modified to reflect these changes, including the addition of a context selection popup.

Overall, the modifications introduce new features for managing Kubernetes resources, improve user experience through enhanced UI components, and streamline the application's functionality related to service configurations and context management.

Changes

Files Change Summary
crates/kftray-portforward/src/client.rs Added functions for listing Kubernetes contexts, namespaces, and services with specific annotations.
crates/kftray-portforward/src/core.rs Introduced a function to retrieve service configurations based on context and added helper functions for parsing configurations.
crates/kftray-tauri/src/commands/kubecontext.rs Added a command for retrieving services with annotations, callable from the Tauri frontend.
crates/kftray-tauri/src/main.rs Integrated the new command into the application's command execution process.
crates/kftui/src/.gitignore Removed port forwarding functions, indicating a potential shift in functionality.
crates/kftui/src/tui/input/mod.rs Added state management for context selection and modified input handling to accommodate new functionality.
crates/kftui/src/tui/input/navigation.rs Introduced functions for handling context selection and auto-adding configurations.
crates/kftui/src/tui/ui/draw.rs Updated UI rendering logic to include context selection and modified menu items.
crates/kftui/src/tui/ui/popup.rs Added a function for rendering the context selection popup in the UI.
frontend/src/components/AutoImportModal/index.tsx Introduced a new modal component for importing Kubernetes service configurations with state management and API integration.
frontend/src/components/Footer/index.tsx Integrated the AutoImportModal into the footer with state management for modal visibility.
frontend/src/components/Main/index.tsx Added the AutoImportModal to the main component with state management for visibility.
frontend/src/types/index.ts Introduced a new interface for the AutoImportModal props, enhancing type safety.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Frontend
    participant Backend
    participant Kubernetes

    User->>Frontend: Open AutoImportModal
    Frontend->>Backend: Fetch Kubernetes contexts
    Backend->>Kubernetes: List contexts
    Kubernetes-->>Backend: Return contexts
    Backend-->>Frontend: Send contexts
    Frontend->>User: Display contexts in modal
    User->>Frontend: Select context and initiate import
    Frontend->>Backend: Retrieve service configurations
    Backend->>Kubernetes: Get services with annotations
    Kubernetes-->>Backend: Return service configurations
    Backend-->>Frontend: Send service configurations
    Frontend->>User: Display import status

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.