All Projects → fenixsoft → fenix-cli

fenixsoft / fenix-cli

Licence: Apache-2.0 license
Interactive Cloud-Native Environment Client

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
HTML
75241 projects
python
139335 projects - #7 most used programming language
Makefile
30231 projects
Dockerfile
14818 projects
CSS
56736 projects

Projects that are alternatives of or similar to fenix-cli

Spring Cloud Azure
Spring Cloud integration with Azure services
Stars: ✭ 197 (+107.37%)
Mutual labels:  cloud-native
Almond Cloud
Almond As A Service and Thingpedia
Stars: ✭ 215 (+126.32%)
Mutual labels:  cloud-native
Netcorekit
💗 A crafted toolkit for building cloud-native apps on the .NET platform
Stars: ✭ 248 (+161.05%)
Mutual labels:  cloud-native
Mojo
✨ Mojolicious - Perl real-time web framework
Stars: ✭ 2,298 (+2318.95%)
Mutual labels:  cloud-native
Spring Cloud Vault
Configuration Integration with HashiCorp Vault
Stars: ✭ 210 (+121.05%)
Mutual labels:  cloud-native
Akka Management
Akka Management is a suite of tools for operating Akka Clusters.
Stars: ✭ 218 (+129.47%)
Mutual labels:  cloud-native
Product Microgateway
A cloud native, developer centric and decentralized API gateway for microservices
Stars: ✭ 194 (+104.21%)
Mutual labels:  cloud-native
slidefiles
[WIP] 整理过去的分享,从零开始的Kubernetes攻防 🧐
Stars: ✭ 2,033 (+2040%)
Mutual labels:  cloud-native
Academy
云原生学院
Stars: ✭ 212 (+123.16%)
Mutual labels:  cloud-native
Rainbond
Cloud-native and easy-to-use application management platform | 云原生且易用的应用管理平台
Stars: ✭ 2,871 (+2922.11%)
Mutual labels:  cloud-native
Migrating To Cloud Native Application Architectures
《迁移到云原生应用架构》中文版 https://jimmysong.io/migrating-to-cloud-native-application-architectures/
Stars: ✭ 203 (+113.68%)
Mutual labels:  cloud-native
Postgres
🐘 Run PostgreSQL in Kubernetes
Stars: ✭ 205 (+115.79%)
Mutual labels:  cloud-native
Jina
Cloud-native neural search framework for 𝙖𝙣𝙮 kind of data
Stars: ✭ 12,618 (+13182.11%)
Mutual labels:  cloud-native
Escape
Release engineering, life-cycle management and Continuous Delivery of software platforms and artefacts
Stars: ✭ 199 (+109.47%)
Mutual labels:  cloud-native
Krakend Ce
KrakenD Community Edition. Make your binary of KrakenD API Gateway
Stars: ✭ 245 (+157.89%)
Mutual labels:  cloud-native
Wascc Host
Library for hosting actors and capability providers in a host process
Stars: ✭ 197 (+107.37%)
Mutual labels:  cloud-native
Metalk8s
An opinionated Kubernetes distribution with a focus on long-term on-prem deployments
Stars: ✭ 217 (+128.42%)
Mutual labels:  cloud-native
anchore-image-validator
Anchore Image Validator lets you automatically detect or block security issues just before a Kubernetes pod starts.
Stars: ✭ 44 (-53.68%)
Mutual labels:  cloud-native
Awesome Kubernetes Notes
awesome-kubernetes-notes 🎉
Stars: ✭ 249 (+162.11%)
Mutual labels:  cloud-native
Spring Cloud Kubernetes
Kubernetes integration with Spring Cloud Discovery Client, Configuration, etc...
Stars: ✭ 2,894 (+2946.32%)
Mutual labels:  cloud-native

Fenix-CLI:Interactive Cloud-Native Environment Client

Travis-CI About Author License License

English | 简体中文

Fenix-CLI is an interactive cloud-native operating environment client. The goal is to replace Docker's docker cli, Kuberneteskubectl, Istio's istioctl command-line tools, providing consistent operation and interactive terminal interface with enhanced instructions and intelligent completions.

Feature

Compared with the official original clients of Docker, Kubernetes, and Istio, Fenix-CLI has the following features:

  1. Multiple operating environment support
    Fenix-CLI currently supports three operating environments: Docker, Kubernetes, and Istio, and plans to expand to other commonly used cloud native environments such as OpenShift, Rancher, Podman, and Containerd. It will automatically detect at startup, list the installed environment for users to choose, and you can also use the shortcut key F2 to switch at any time during runtime.

  1. Auto-completions for static commands
    Fenix-CLI supports all the commands and parameters of the official original client, and provides auto-completions and descriptions for them. Most of the command descriptions are from the following official reference documents:

  1. Intelligent completions for dynamic context
    In addition to static command auto-completions, Fenix-CLI can also perceive dynamic data in the context, and support intelligent completions for these resources. For example, the names and statuses of containers and images in Docker; the names and statuses of various resources such as pod, deployment, service in Kubernetes; expose ports and file \ directory information of the containers \ pod \ services. Currently supported dynamic data includes:
    • Docker:
      • Image name and status
      • Container name and status
      • Internal information, such as: the port number exposed by the container, file path, etc.
    • Kubernetes / Istio:
      • The name and status of various resources: Pod, ComponentStatus, ConfigMap, Context, DeamonSet, Deployment, Endpoint, Ingress, Job, LimitRange, Node, Namespace, PersistentVolume, PodSecurityPolicy, PodTemplete, ReplicataSet, ReplicationController, ResourceQuota, ServiceAccount, Container, Events
      • Global information, such as cluster context and namespace, etc.
      • Internal information, such as: the port number exposed by the service, file path, etc.

  1. Interactive batch operation
    In order to facilitate the management of multiple resources at the same time, Fenix-CLI provides interactive CUI operations, supporting single / multiple selection, and filtering to meet the requirements of performing similar operations on multiple resources at one time.

  1. X-Commands
    In addition to supporting all standard commands of the original client, Fenix-CLI has also extended a series of proprietary commands beginning with x-. These X-Commands are the main value of Fenix-CLI, which can be viewed through shortcut key F1 or x-help.
    Many X-Commands in Fenix-CLI are base on some krew plugins. To simplify plug-in installation, Fenix-CLI has been integrated with [Kubernetes Krew](https://github.com/kubernetes-sigs/ krew) plug-in framework, so you can use all krew plug-ins without any additional operations. The following is a list of some of the X-Commands:
    • Switch kubernetes cluster context and namespace
      x-context is used to switch the cluster managed by the current kubernetes client, which is suitable for the situation where one client manages multiple clusters.
      x-namespace is used to switch the namespace of kubernetes client to simplify the tedious operation of having the --namespace <ns> parameter in each command. The current namespace will also be listed before the prompt.
    • Batch management of resources
      x-batch is used to manage resources in batches. It can be used for containers and images in docker, as well as more than 10 resources such as pod, deployment, and service in kubernetes. The use of the x-batch command has been demonstrated in the previous introduction to the interactive CUI.
    • Network traffic tracking
      x-sniff is used to record pod network traffic. For the traffic of gateway services, we can usually check it easily on the browser, but the network access to the internal nodes of the microservice cluster is more inconvenient and usually requires special tracking systems. x-sniff automatically injects tcpdump without installing any tracking system to send traffic information to TShark or Wireshark for analysis (so you still need to install TShark or Wireshark on your worksation). At the same time, in order to simplify the complex parameters of TShark, two display formats are provided by default, summary (display only the call request summary) and detail (display the full text of HTTP Header and Body). This command is implemented based on the sniff plug-in: https://github.com/eldadru/ksniff
    • Check the relationship between resources
      x-lens is used to check and display the owner relationship between related resources through pods. This command is implemented based on the pod-lens plug-in: https://github.com/sunny0826/kubectl-pod-lens
    • Quick access to services
      x-open is used to automatically establish port forwarding according to the port exposed by the service, and open a browser in the client to directly access the service. This command is implemented based on the open-svc plug-in: https://github.com/superbrothers/kubectl-open-svc-plugin
    • Check cluster service status
      x-status is used to check which resources in the current Kubernetes cluster are operational and which have problems. x-status simplifies the trouble of repeatedly kubectl get. This command is implemented based on the status plug-in: https://github.com/bergerx/kubectl-status
    • ……

Installation & Usage

  • Installation: install the latest version of Fenix-CLI through the following script:

    curl -sL https://icyfenix.cn/fenix-cli/dl.sh | sh -
  • Manual installation: if you need other versions, you can get the executable file of Fenix-CLI on the GitHub Release page.

  • Usage: after installation, enter fenix-cli to use

    fenix-cli
  • Fenix-CLI only supports Linux operating system

Roadmap

The main features of the subsequent versions of Fenix-CLI are planned as follows:

  • Plan to refactor the auto-completions architecture. At present, auto-completions for static commands / parameters are directly built in the program code, based on Docker v20.10.7 (June 2021), Kubernetes v1.21 (April 2021), Istio v1.10 (May 2021). With the continuous development and expansion of official client functions, depend on program to follow is bound to be unsustainable. Fortunately, the current mainstream cloud-native clients all use spf13/cobra as the CLI framework. Therefore, the next major version plans to refactor the Fenix-CLI auto-completions architecture to support driving through external DSL. And achieve the real-time acquisition of command and parameter information directly from docker / kubernetes environment on the workstation, and automatically generate DSL, so as to achieve the purpose of automatically following the upgrade of the official client.
  • Plan to support more cloud-native operating environments, such as OpenShift, Rancher, Podman, Containerd, etc.
  • Plan to support more X-Commands, such as:
    • x-log: Automatically aggregate the log output of multiple pods. Currently kubectl logs can only monitor a single pod. It is planned to provide a command to aggregate multiple pod logs related to microservices into one screen for scrolling tracking.
    • x-debug: Advanced debugging capabilities of the container. Starting from Kubernetes 1.18, the kubectl debug command is provided to inject the debugging container for Pod (1.15-1.17 is Ephemeral Feature). It is planned to find or make a Swiss army knife-style debugging image with common network tools and simplification enough to let Fenix-CLI The image can be called to quickly enter the Pod for problem diagnosis.
    • ……
  • Plan to support the automatic installation of the cloud-native environment. Due to the limitations of GFW, cloud-native environments such as Kubernetes need to access the Google`s repository, which is inconvenient to install. Therefore, consider the ability to provide one-click deployment of the cloud-native environment in Fenix-CLI. This feature does not require much work on the client, but it is more cumbersome for the server to make a robot that automatically pulls mirror images from abroad.
  • Plan to support multiple languages, at least Chinese language support will be provided, and there will be a certain translation workload.
  • Plan to complete unit-test and E2E test.
  • Plan to provide some specific cases of using Fenix-CLI to operate and maintain, diagnose, and make errors in a real scene.

Community

  • Bug reports:
    • If you have a problem with the Fenix-CLI itself, please file an issue in this repository.
    • If you're having an issue with a krew plugin, file an issue for the repository the plugin's source code is hosted at.
  • Contributing:
    • Welcome pull request, feature request, and any form of collaboration.
  • Special thanks:

License

  • This software is licensed under the Apache 2.0 license, see LICENSE for more information.

Contact

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].