All Projects → int128 → Kauthproxy

int128 / Kauthproxy

Licence: apache-2.0
Local authentication proxy for Kubernetes Dashboard (kubectl auth-proxy)

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Kauthproxy

Webkubectl
Run kubectl command in Web Browser.
Stars: ✭ 390 (+622.22%)
Mutual labels:  kubectl
Gcr.io mirror
all of the gcr.io docker image mirror
Stars: ✭ 650 (+1103.7%)
Mutual labels:  kubectl
Kube Aliases
Kubernetes Aliases and Bash Functions
Stars: ✭ 40 (-25.93%)
Mutual labels:  kubectl
Fish Kubectl Completions
kubectl completions for fish shell
Stars: ✭ 453 (+738.89%)
Mutual labels:  kubectl
Kubelogin
kubectl plugin for Kubernetes OpenID Connect authentication (kubectl oidc-login)
Stars: ✭ 495 (+816.67%)
Mutual labels:  kubectl
Rakkess
Review Access - kubectl plugin to show an access matrix for k8s server resources
Stars: ✭ 751 (+1290.74%)
Mutual labels:  kubectl
Kubecolor
colorizes kubectl output
Stars: ✭ 363 (+572.22%)
Mutual labels:  kubectl
Docker Kubectl
Containerized Kubernetes kubectl
Stars: ✭ 52 (-3.7%)
Mutual labels:  kubectl
Geodesic
🚀 Geodesic is a DevOps Linux Distro. We use it as a cloud automation shell. It's the fastest way to get up and running with a rock solid Open Source toolchain. ★ this repo! https://slack.cloudposse.com/
Stars: ✭ 629 (+1064.81%)
Mutual labels:  kubectl
K8s Utils
Kubernetes Utility / Helper Scripts
Stars: ✭ 33 (-38.89%)
Mutual labels:  kubectl
Gbt
Highly configurable prompt builder for Bash, ZSH and PowerShell written in Go.
Stars: ✭ 457 (+746.3%)
Mutual labels:  kubectl
Kubelive
kubectl tool reinvented to be more reactive and interactive 🔥
Stars: ✭ 497 (+820.37%)
Mutual labels:  kubectl
Kubectl Restart
A kubectl plugin to restart a pod
Stars: ✭ 19 (-64.81%)
Mutual labels:  kubectl
Kubectl Who Can
Show who has RBAC permissions to perform actions on different resources in Kubernetes
Stars: ✭ 432 (+700%)
Mutual labels:  kubectl
Helm Docker
☸️ helm, gcloud, kubectl, jq
Stars: ✭ 41 (-24.07%)
Mutual labels:  kubectl
Fubectl
Reduces repetitive interactions with kubectl
Stars: ✭ 370 (+585.19%)
Mutual labels:  kubectl
Kubie
A more powerful alternative to kubectx and kubens
Stars: ✭ 647 (+1098.15%)
Mutual labels:  kubectl
Kubernetes Cheatsheet
This is Kubernetes Cheatsheet based on Kubernetes API 1.19 version.
Stars: ✭ 53 (-1.85%)
Mutual labels:  kubectl
Bitnami Docker Kubectl
Bitnami Docker Image for Kubectl
Stars: ✭ 50 (-7.41%)
Mutual labels:  kubectl
Colossus
Colossus — An example microservice architecture for Kubernetes using Bazel, Go, Java, Docker, Kubernetes, Minikube, Gazelle, gRPC, Prometheus, Grafana, and more
Stars: ✭ 917 (+1598.15%)
Mutual labels:  kubectl

kauthproxy CircleCI e2e-test

This is a kubectl plugin of the authentication proxy to access Kubernetes Dashboard.

You can access Kubernetes Dashboard with your credentials instead of entering a service account token. It provides better user experience and security.

kauthproxy supports the following environments:

Note that kauthproxy does not work with client certificate authentication.

Getting Started

Install

Install the latest release from Homebrew, Krew or GitHub Releases.

# Homebrew (macOS)
brew install int128/kauthproxy/kauthproxy

# Krew (macOS, Linux and Windows)
kubectl krew install auth-proxy

You can deploy the manifest of Kubernetes Dashboard from here.

Run

To access Kubernetes Dashboard in your cluster:

% kubectl auth-proxy -n kubernetes-dashboard https://kubernetes-dashboard.svc
Starting an authentication proxy for pod/kubernetes-dashboard-57fc4fcb74-jjg77:8443
Open http://127.0.0.1:18000
Forwarding from 127.0.0.1:57866 -> 8443
Forwarding from [::1]:57866 -> 8443

It will automatically open the browser. You can see Kubernetes Dashboard logged in as you.

screenshot

How it works

Authentication

Kubernetes Dashboard supports header based authentication. kauthproxy forwards HTTP requests from the browser to Kubernetes Dashboard.

Take a look at the diagram:

diagram

When you access Kubernetes Dashboard, kauthproxy forwards HTTP requests by the following process:

  1. Acquire your token from the credential plugin or authentication provider.
  2. Set authorization: bearer TOKEN header to a request and forward the request to the pod.

Authorization

kauthproxy requires the following privileges:

  • Get the Service of Kubernetes Dashboard.
  • List the Pods of Kubernetes Dashboard.
  • Port-forward to the Pod of Kubernetes Dashboard.

If you need to assign the least privilege for production, see an example of Role.

Usage

Usage:
  kubectl auth-proxy POD_OR_SERVICE_URL [flags]

Flags:
      --add_dir_header                   If true, adds the file directory to the header
      --address stringArray              The address on which to run the proxy. If set multiple times, it will try binding the address in order (default [127.0.0.1:18000,127.0.0.1:28000])
      --alsologtostderr                  log to standard error as well as files
      --as string                        Username to impersonate for the operation
      --as-group stringArray             Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
      --cache-dir string                 Default HTTP cache directory (default "~/.kube/http-cache")
      --certificate-authority string     Path to a cert file for the certificate authority
      --client-certificate string        Path to a client certificate file for TLS
      --client-key string                Path to a client key file for TLS
      --cluster string                   The name of the kubeconfig cluster to use
      --context string                   The name of the kubeconfig context to use
  -h, --help                             help for kubectl
      --insecure-skip-tls-verify         If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
      --kubeconfig string                Path to the kubeconfig file to use for CLI requests.
      --log_backtrace_at traceLocation   when logging hits line file:N, emit a stack trace (default :0)
      --log_dir string                   If non-empty, write log files in this directory
      --log_file string                  If non-empty, use this log file
      --log_file_max_size uint           Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800)
      --logtostderr                      log to standard error instead of files (default true)
  -n, --namespace string                 If present, the namespace scope for this CLI request
      --request-timeout string           The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
  -s, --server string                    The address and port of the Kubernetes API server
      --skip-open-browser                If set, skip opening the browser
      --skip_headers                     If true, avoid header prefixes in the log messages
      --skip_log_headers                 If true, avoid headers when opening log files
      --stderrthreshold severity         logs at or above this threshold go to stderr (default 2)
      --token string                     Bearer token for authentication to the API server
      --user string                      The name of the kubeconfig user to use
  -v, --v Level                          number for the log level verbosity
      --version                          version for kubectl
      --vmodule moduleSpec               comma-separated list of pattern=N settings for file-filtered logging

Contributions

This is an open source software. Feel free to open issues and pull requests.

End-to-end test

To provision a cluster:

# requires Docker, Kind and Chrome
brew cask install docker google-chrome
brew install kind

# provision a cluster and deploy Kubernetes Dashboard
make -C e2e_test deploy

You can access the cluster as follows:

export KUBECONFIG=e2e_test/output/kubeconfig.yaml

# show all pods
kubectl get pods -A

# open Kubernetes Dashboard
./kauthproxy -n kubernetes-dashboard --user=tester https://kubernetes-dashboard.svc

To run the automated test:

make -C e2e_test test

To delete the cluster.

make -C e2e_test delete-cluster
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].