Skip to main content

H Y P E R K U B E - A secure Serverless API and kubectl plugin that stores and retrieve Kubernetes cluster credentials. Hyperkube leverages AWS Secrets Manager for storing credential information.

Project description

hyper-kube-config

Build Status

PyPI version

hyper-kube-config - Provides a secure Serverless API to store and retrieve Kubernetes cluster config credentials. hyper-kube-config leverages AWS Secrets Manager for storing credential information. Included is a kubectl plugin to interface with hyperkube API.

It requires a configuration file. See hyperkube-config.yaml.example for layout.

hyper-kube-config

Install hyperkube kubectl plugin

pip3 install hyper-kube-config 

Setup ~/.hyperkube-config.yaml file

The default locations for the config file is ~/.hyperkube-config.yaml. You can also place the config file at a different location and pass the location as a command line option -c <hyper-kube-config-location> or --config <hyper-kube-config-location>

Post cluster and creds to hyperkube store

# with config file in default location ~/.hyperkube-config.yaml
kubectl hyperkube add --k8s-config ~/.kube/config
# with config file in default location ~/location2/.hyperkube-config.yaml
# kubectl hyperkube -c ~/location2/.hyperkube-config.yaml add --k8s-config ~/.kube/config
# kubectl hyperkube --config ~/location2/.hyperkube-config.yaml add --k8s-config ~/.kube/config

Remove cluster and creds

kubectl hyperkube remove --cluster-to-remove 'k8s-cluster-example.cloud' 

Get user creds

# for single cluster
kubectl hyperkube get --cluster cloud-infra.cloud > ~/.kube/config

Get user creds multiple clusters into one Kube config

kubectl hyperkube get \
  --cluster cloud-infra.cloud \
  --cluster bar-cluster.cloud \
  --cluster baz-cluster.com  > ~/.kube/config

Get creds for all clusters into one Kube config

kubectl hyperkube get-all > ~/.kube/config

List clusters

kubectl hyperkube list

Store and Associate SSH PEM and CA private key with Cluster

Store SSH Pem

kubectl hyperkube add-pem --pem ~/.ssh/my-cluster.pem 

Get Stored SSH Pem

kubectl hyperkube get-pem --cluster my-cluster.net

Store Add CA Private Key

kubectl hyperkube add-ca-key --ca-key ca-key-file.key --cluser my-cluster.net

Set Cluster Status and/or Environment References

# Set arbitrary status string and environment reference for given cluster
kubectl hyperkube set-cluster-status --cluster my-cluster.net --status active --environment stage

Get Cluster Status for Environment

# Returns list of clusters that are active for prod environment
kubectl hyperkube get-cluster-status --status active --environment prod

Requirements

  • Serverless - Serverless Framework
  • Docker - For serverless deploy
  • HTTPie - recommended for API client
  • serverless-python-requirements plugin. Uses Docker and Pip to package a newer vesion of Boto3 for AWS Lambda function use. AWS Lambda boto3 version by default doesn't have AWS Secrets Manager support for tags.
  • click - for hyperkube kubectl plugin
  • kubectl - version 1.12 or higher recommended for stable plugin support.

Deploying Serverless API

sls deploy \
  --stage dev \
  --product k8s \
  --owner myteam@foo.cloud \
  --team myteam \
  --environment dev

This will launch your hyperkube API. Capture the API URL, api key and stage for your hyperkube.yaml configuration. The kubectl hyperkube commands will leverage the config to interact with your stored k8s configs.

Serverless will launch an AWS API Gateway to handle API requests forwardered to AWS Lambda functions. A Dynamodb table is configured to store non-senstative cluster config details, while sensative information in uploaded configs (passwords and certs) is stored in AWS Secrets Manager.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hyper-kube-config-0.1.4.tar.gz (5.7 kB view details)

Uploaded Source

File details

Details for the file hyper-kube-config-0.1.4.tar.gz.

File metadata

  • Download URL: hyper-kube-config-0.1.4.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.3

File hashes

Hashes for hyper-kube-config-0.1.4.tar.gz
Algorithm Hash digest
SHA256 08546fb9c291dfbbdba5cb52a306d50d08f1f69ff6e65ad57252cc59d565951e
MD5 66908c92f8bcc771125d105c0e471dae
BLAKE2b-256 d30c66fb8084fca56987ade875ee1fca23812f831308fe171153d06f6f794874

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page