Interactive Cloud-Native Environment Client

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.
Owner
IcyFenix
Ph.D, Programmer, Computer Book Writer, Technical Evangelist, Cloud Native Architect, HLLVM/PLDI Enthusiast
IcyFenix
Similar Resources

Polaris is a cloud-native service discovery and governance center

It can be used to solve the problem of service connection, fault tolerance, traffic control and secure in distributed and microservice architecture.

Dec 26, 2022

Cloud Native Configurations for Kubernetes

CNCK CNCK = Cloud Native Configurations for Kubernetes Make your Kubernetes applications more cloud native by injecting runtime cluster information in

Nov 4, 2021

cloud native application deploy flow

cloud native application deploy flow

Triton-io/Triton English | 简体中文 Introduction Triton provides a cloud-native DeployFlow, which is safe, controllable, and policy-rich. For more introdu

May 28, 2022

This is a cloud-native application that focuses on the DevOps area.

KubeSphere DevOps integrates popular CI/CD tools, provides CI/CD Pipelines based on Jenkins, offers automation toolkits including Binary-to-Image (B2I

Jan 5, 2023

Enables a FaaS experience for Knative / Cloud Native Runtimes.

Function Buildpacks for Knative Enables a FaaS experience for Knative / Cloud Native Runtimes. Will soon extend func to create deployable functions vi

Nov 2, 2022

Cloud Native Electronic Trading System built on Kubernetes and Knative Eventing

Ingenium -- Still heavily in prototyping stage -- Ingenium is a cloud native electronic trading system built on top of Kubernetes and Knative Eventing

Aug 29, 2022

A cloud-native application simulator for golang

Build and upload Docker images Build docker images for main application and work

Aug 10, 2022

🔥 🔥 Open source cloud native security observability platform. Linux, K8s, AWS Fargate and more. 🔥 🔥

🔥 🔥   Open source cloud native security observability platform. Linux, K8s, AWS Fargate and more. 🔥 🔥

CVE-2021-44228 Log4J Vulnerability can be detected at runtime and attack paths can be visualized by ThreatMapper. Live demo of Log4J Vulnerability her

Jan 1, 2023

Planet Scale Robotics - Offload computation-heavy robotic operations to GPU powered world's first cloud-native robotics platform.

robolaunch 🚀 Planet Scale Robotics - Offload computation-heavy robotic operations to GPU powered world's first cloud-native robotics platform. robola

Jan 1, 2023
Comments
  • User interruptd

    User interruptd

    在远程 VM (Ubuntu 18.04) 里面安装完后,运行 fenix-cli 后直接就退出了:

    $ fenix-cli
    
     ________  ________  ____  _____  _____  ____  ____        ______  _____     _____
    |_   __  ||_   __  ||_   \|_   _||_   _||_  _||_  _|      .' ___  ||_   _|   |_   _|
      | |_ \_|  | |_ \_|  |   \ | |    | |    \ \  / /______ / .'   \_|  | |       | |
      |  _|     |  _| _   | |\ \| |    | |     > `' <|______|| |         | |   _   | |
     _| |_     _| |__/ | _| |_\   |_  _| |_  _/ /'`\ \_      \ `.___.'\ _| |__/ | _| |_
    |_____|   |________||_____|\____||_____||____||____|      `.____ .'|________||_____|
                                                                           v1.1.20210707
                                                  https://github.com/fenixsoft/fenix-cli
                                                  Press key <F1> to get help information
    
    
    ? Multiple environments are detected. You want to operate  [Use arrows to move, type to filter]
    > Docker
      Kubernetes
    User interruptd, bye!
    
  • 一个包含 GUI和Cli 的云原生管理器(超级缝合怪),通过插件支持各种 云原生 应用(手动狗头)

    一个包含 GUI和Cli 的云原生管理器(超级缝合怪),通过插件支持各种 云原生 应用(手动狗头)

    个人想peach,请勿当真

    加强安全和授权方面的能力,可作为一个云原生管理器。类似Rancher 2.5 的集群 Dashboard,可以展示和操作集群的统计信息,以及在线的kubectl客户端(目前只支持k8s)。

    成为一个包含 GUI和Cli 的云原生管理器(超级缝合怪),通过插件支持各种 云原生 应用。

provide api for cloud service like aliyun, aws, google cloud, tencent cloud, huawei cloud and so on

cloud-fitter 云适配 Communicate with public and private clouds conveniently by a set of apis. 用一套接口,便捷地访问各类公有云和私有云 对接计划 内部筹备中,后续开放,有需求欢迎联系。 开发者社区 开发者社区文档

Dec 20, 2022
The OCI Service Operator for Kubernetes (OSOK) makes it easy to connect and manage OCI services from a cloud native application running in a Kubernetes environment.

OCI Service Operator for Kubernetes Introduction The OCI Service Operator for Kubernetes (OSOK) makes it easy to create, manage, and connect to Oracle

Sep 27, 2022
Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers.

Cloud-Z Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers. Cloud type, instance id, and type CPU infor

Jun 8, 2022
Docker-NodeJS - Creating a CI/CD Environment for Serverless Containers on Google Cloud Run
Docker-NodeJS - Creating a CI/CD Environment for Serverless Containers on Google Cloud Run

Creating a CI/CD Environment for Serverless Containers on Google Cloud Run Archi

Jan 8, 2022
The Cloud Native Application Proxy
The Cloud Native Application Proxy

Traefik (pronounced traffic) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your ex

Jan 9, 2023
Kubernetes Operator for a Cloud-Native OpenVPN Deployment.

Meerkat is a Kubernetes Operator that facilitates the deployment of OpenVPN in a Kubernetes cluster. By leveraging Hashicorp Vault, Meerkat securely manages the underlying PKI.

Jan 4, 2023
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

Open Service Mesh (OSM) Open Service Mesh (OSM) is a lightweight, extensible, Cloud Native service mesh that allows users to uniformly manage, secure,

Jan 2, 2023
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? Ho

Jan 8, 2023
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use?

May 12, 2021
This is a cloud-native application that focuses on the DevOps area.

Get started Install KubeSphere via kk (or other ways). This is an optional step, basically we need a Kubernetes Cluster and the front-end of DevOps. I

Jan 5, 2023