Giter Club home page Giter Club logo

cli's Introduction

Paralus

codeql helm go license OpenSSF Best Practices

Paralus is a free, open source tool that enables controlled, audited access to Kubernetes infrastructure for your users, user groups, and services. Ships as a GUI, API, and CLI. We are a CNCF Sandbox project

Paralus can be easily integrated with your pre-existing RBAC configuration and your SSO providers, or Identity Providers (IdP) that support OIDC (OpenID Connect). Through just-in-time service account creation and fine-grained user credential management, Paralus provides teams with an adaptable system for guaranteeing secure access to resources when necessary, along with the ability to rapidly identify and respond to threats through dynamic permission revocation and real time audit logs.

Kubernetes Goat

Features

  • Creation of custom roles, users, and groups.
  • Dynamic and immediate changing and revoking of permissions.
  • Ability to control access via pre-configured roles across clusters, namespaces, projects, and more.
  • Seamless integration with Identity Providers (IdPs) allowing the use of external authentication engines for users and group definitions, such as GitHub, Google, Azure AD, Okta, and others.
  • Automatic logging of all user actions performed for audit and compliance purposes.
  • Interact with Paralus either with a modern web GUI (default), a CLI tool called pctl, or Paralus API.

Kubernetes Goat

Getting Started

Installing and setting up Paralus takes less time than it takes to brew a (good) cup of coffee! You'll find the instructions here:

๐Ÿค— Community & Support

  • Check out the Paralus website for the complete documentation and helpful links.
  • Join our Slack workspace to get help and to discuss features.
  • Tweet @paralus_ on Twitter.
  • Create GitHub Issues to report bugs or request features.
  • Join our Paralus Community Meeting where we share the latest project news, demos, answer questions, and triage issues. Add to your calendar by importing ics file.
    • ๐Ÿ—“๏ธ 2nd and 4th Tuesday
    • โฐ 20:30 IST | 10:00 EST | 07:00 PST
    • ๐Ÿ”— Zoom
    • ๐Ÿ—’๏ธ Meeting minutes

Participation in Paralus project is governed by the CNCF Code of Conduct.

Contributing

We ๐Ÿ’– our contributors! Have a look at our contributor guidelines to get started.

If youโ€™re looking to add a new feature or functionality, create a new Issue.

You're also very welcome to look at the existing issues. If thereโ€™s something there that youโ€™d like to work on help improving, leave a quick comment and we'll go from there!

Authors

This project is maintained & supported by Rafay. Meet the maintainers of Paralus.

cli's People

Contributors

akshay196 avatar akshay196-rafay avatar dependabot[bot] avatar elenalape avatar hiteshwani29 avatar mabhi avatar meain avatar nirav-rafay avatar niravparikh05 avatar rustiever avatar techmaharaj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cli's Issues

pctl upgrade via CLI

Briefly describe the feature

Currently whenever there's a new release of pctl, the user needs to manually download and update the pctl binary in their system. Since it doesn't automatically install while installing Paralus, the user may miss out on updating pctl.

We could have a command like pctl upgrade --latest which basically downloads the latest binary for the current system and installs it.

We could also have a background check for latest version when the user types pctl. If there's a newer version, it can display a sentence like 'you're using an outdated version of pctl, please upgrade to the latest binary'

What problem does this feature solve? Please link any relevant documentation or Issues

Makes the pctl upgrade process easier and faster.

Remove dashboard dependency for pctl usage

Briefly describe the feature

In order to run the pctl tool, we need to download a configuration file from dashboard. It blocks the Paralus users who wants to only use paralus from pctl. We should remove the dashboard dependency to use pctl.

What problem does this feature solve? Please link any relevant documentation or Issues

pctl can be used independently without dashboard.

(optional) What is your current workaround?

Get the pctl configuration from back-end without dashboard.

Tasks:

  • Add a design document about how to implement this

Refactor per branding

  • change the repo name
  • changes to go.mod
  • changes to all files with Rafay
  • changes to command - pctl / paractl
  • CI / CD needs to be changed
  • readme's, contributing docs, issue, features templates
  • governance related docs - to be checked

Location is mandatory for creating cluster

Expected vs actual behavior

Expected: Location should be optional for cluster creation.
Actual: Cluster creation is failing because of location.

Steps to reproduce the bug

$ pctl create cluster imported sample-imported-cluster --config ./[email protected]
Error: resource sanjose-us of type location not found

Are you using the latest version of the project?

Yes

What is your environment setup? Please tell us your cloud provider, operating system, and include the output of kubectl version --output=yaml and helm version. Any other information that you have, eg. logs and custom values, is highly appreciated!

./pctl version
VERSION: 0.1.0
BUILD: 0.1.0
BUILD-TIME: 1656329967
ARCH: linux/amd64

(optional) If you have ideas on why the bug happens or how it can be solved, please provide it here

  • I've described the bug, included steps to reproduce it, and included my environment setup with all customizations.
  • I'm using the latest version of the project.

X-API-KEYID specified in auth and in request call leading to a concatenated string that fails paralus API call

Expected vs actual behavior

Any PCTL call fails due to having that X-API-KEYID header twice, which went calling paralus API leads to a concatenated API Key and a failure:

https://github.com/paralus/cli/blob/b87e7047311b8e13b7e06c1500ed1e515adfb5fe/pkg/authprofile/key_profile.go#L72C17-L72C28

Steps to reproduce the bug

  1. Generate the config json
  2. Use it as a config input parameter into a PCTL call
  3. Call will fail as unable to find key, since the key will be in the format API_KEY, APIKEY
  • I've described the bug, included steps to reproduce it, and included my environment setup with all customizations.
  • I'm using the latest version of the project.

Support for namespaces

  • changes for namespaced scope role creation
  • update role association to users
  • update role association to groups
  • verify kubectl download and commands execution for namespaced roles

Don't Swallow Error Returns from Paralus

Briefly describe the feature

Before, when Paralus returned an error like "sql: no rows return", it got returned through the CLI. Now, you get a generic error like: could not complete operation create on resource clustertest of type cluster. The real error should be returned

What problem does this feature solve? Please link any relevant documentation or Issues

This prevents a user from knowing why a request failed, which impacts my provider management

(optional) What is your current workaround?

The current workaround is to check the API call directly through postman or debugging inside the library.

Rename repository to pctl

Describe the issue you're facing

The repo name cli is generic name and doesn't clarify what exactly it is. Instead of cli we should rename it to pctl (Go binary name is pctl anyway).

digitally signing the pctl CLI for macOS

Expected vs actual behavior

  • digitally signing the pctl CLI for macOS, currently it shows an error saying it is not trust worthy.

Steps to reproduce the bug

  1. Download pctl and true to execute any command like pctl get clusters after configuring it.

Are you using the latest version of the project?

You can check your version by running helm ls|grep '^<deployment-name>' or using pctl, pctl version, and provide the output.

  • Yes

What is your environment setup? Please tell us your cloud provider, operating system, and include the output of kubectl version --output=yaml and helm version. Any other information that you have, eg. logs and custom values, is highly appreciated!

  • Applicable to all

  • I've described the bug, included steps to reproduce it, and included my environment setup with all customizations.

  • I'm using the latest version of the project.

Go tests are failing

Checkout this Action job for failing tests.
It is expected to fix all test to run both GitHub workflows without error.

Print version info with `rctl version`

As of now even though we have version info available, looks like we are not providing an option for the user to fetch it. This would be useful when debugging/filing an issue.

Slashes In Project Name Allowed

Expected vs actual behavior

If while running the command line call to create a project you give it a bad name like "/this/is/mine", it will actually allow the project to be created

Steps to reproduce the bug

  1. Run commandline to create a project
  2. Give it a bad project name
  3. Check the paralus UI

Are you using the latest version of the project?

You can check your version by running helm ls|grep '^<deployment-name>' or using pctl, pctl version, and provide the output.

VERSION: 0.1.0
BUILD: 0.1.0
BUILD-TIME: 1656329967
ARCH: darwin/amd64

What is your environment setup? Please tell us your cloud provider, operating system, and include the output of kubectl version --output=yaml and helm version. Any other information that you have, eg. logs and custom values, is highly appreciated!

kubectl

clientVersion:
  buildDate: "2022-08-23T17:44:59Z"
  compiler: gc
  gitCommit: a866cbe2e5bbaa01cfd5e969aa3e033f3282a8a2
  gitTreeState: clean
  gitVersion: v1.25.0
  goVersion: go1.19
  major: "1"
  minor: "25"
  platform: darwin/amd64
kustomizeVersion: v4.5.7
serverVersion:
  buildDate: "2022-11-29T18:41:42Z"
  compiler: gc
  gitCommit: 52e500d139bdef42fbc4540c357f0565c7867a81
  gitTreeState: clean
  gitVersion: v1.22.16-eks-ffeb93d
  goVersion: go1.16.15
  major: "1"
  minor: 22+
  platform: linux/amd64

helm

version.BuildInfo{Version:"v3.10.3", GitCommit:"835b7334cfe2e5e27870ab3ed4135f136eecc704", GitTreeState:"clean", GoVersion:"go1.19.4"}

(optional) If you have ideas on why the bug happens or how it can be solved, please provide it here

CLI should have a guard against names with slashes.

  • I've described the bug, included steps to reproduce it, and included my environment setup with all customizations.
  • I'm using the latest version of the project.

Creating project scoped role failed

Expected vs actual behavior

Actual:

$ ./pctl create role test-role --scope project --permissions project.read,cluster.read,partner.read,organization.read --config ./[email protected] 
Error: invalid permissions, error: invalid permission partner.read  
$ ./pctl create role test-role --scope project --permissions project.read,cluster.read,organization.read --config ./[email protected] 
Error: invalid permissions, error: invalid permission organization.read

Should be able to create role with "partner.read" permission.
We are able to create "project" scoped role with "partner.read" permission from the Paralus console.

Steps to reproduce the bug

Run above steps.

Are you using the latest version of the project?

You can check your version by running helm ls|grep '^<deployment-name>' or using pctl, pctl version, and provide the output.

What is your environment setup? Please tell us your cloud provider, operating system, and include the output of kubectl version --output=yaml and helm version. Any other information that you have, eg. logs and custom values, is highly appreciated!

VERSION: 0.1.0
BUILD: 0.1.0
BUILD-TIME: 1656329967
ARCH: linux/amd64

(optional) If you have ideas on why the bug happens or how it can be solved, please provide it here

  • I've described the bug, included steps to reproduce it, and included my environment setup with all customizations.
  • I'm using the latest version of the project.

get cluster command with output type yaml has non-text cluster status making it difficult to comprehend

Expected vs actual behavior

Expected:
{type: "ClusterApprove", lastUpdated: {seconds: 1665989454, nanos: 819601552}, reason: "pending"}

Actual:
{type: 1, status: 0, lastUpdated: {seconds: 1665989454, nanos: 819601552}, reason: pending}

Steps to reproduce the bug

  1. execute pctl get cluster <cluster_name> -oyaml

Are you using the latest version of the project?

You can check your version by running helm ls|grep '^<deployment-name>' or using pctl, pctl version, and provide the output.

  • Yes

What is your environment setup? Please tell us your cloud provider, operating system, and include the output of kubectl version --output=yaml and helm version. Any other information that you have, eg. logs and custom values, is highly appreciated!

  • v0.1.6
  • I've described the bug, included steps to reproduce it, and included my environment setup with all customizations.
  • I'm using the latest version of the project.

add `pctl` cli as package to Homebrew package manager

Briefly describe the feature

  • add this CLI tool in Homebrew package manager which is widely used by Mac users. Adding to their repo will give more visibility to the wide userbase. brew.sh

What problem does this feature solve? Please link any relevant documentation or Issues

  • having tool in package manager like brew will make installation process easy

(optional) What is your current workaround?

  • NONE

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.