Coder Social home page Coder Social logo

vmware-archive / cabin Goto Github PK

View Code? Open in Web Editor NEW
656.0 33.0 92.0 12.39 MB

The Mobile Dashboard for Kubernetes

Home Page: https://bitnami.com/kubernetes

License: Apache License 2.0

Python 0.37% Java 7.85% Ruby 0.46% Objective-C 5.62% C 0.15% JavaScript 85.55%
kubernetes ios dashboard android

cabin's Introduction

NOTE This project is currently not under active development.

The project is currently in a transition phase. There are known issues with Kubernetes 1.8/1.9 clusters. There is no ETA to fix those issues but we are trying to find a sustainable path. As always PR welcome. Thanks for your understanding.

Cabin, the mobile app for Kubernetes

Cabin is a Mobile application for Kubernetes. It is loaded with features as shown in the screenshots and the screencast. It is a mobile native version of the Kubernetes dashboard with intuitive finger actions to manipulate Kubernetes resources. For example you can delete pods with a single left swipe. You can also add, delete labels, scale deployments with a finger scroll, access logs of your pods, run simple exec commands in containers, trigger rolling-updates by changing the image of your deployments, etc...

Currently still in dev is support for Helm charts. You can view Charts repositories and launch charts.

GKE users will enjoy the ability to create clusters directly from their phone and also add pre-existing GKE clusters to the application to view existing resources.

Cabin is made with React Native. For development purposes you can run the application using both iOS and Android simulators.

We would love your help to make it even cooler !

Screenshots

Click on each picture to enlarge.

Add Clusters

Create Cluster on GKE

Pods View

Charts View

Deployment Scaling

Pod Logs

Edit Labels

Search by Label

YAML View

Namespace Chooser

Resource Listing Toggle

Set Image

Service Types

Open Service in Browser

Access Web Apps

Screencast

It is full of neat features, check out the screencast below by clicking on the image:

Run Locally Using Simulators

To develop and test the application you need to setup your local environment, then run the simulator. First, install react-native-cli then run the packager in one terminal. Then in another terminal launch the simulator with the react-native command. See below for more details.

First, install React Native CLI tools with:

npm install -g react-native-cli

โš ๏ธ Follow the Getting Started guide to make sure you have everything ready to run a react-native app.

Run the packager (for both iOS and Android)

Now install yarn. On OSX simply do brew install yarn.

Use yarn to install node dependencies:

yarn install

In one terminal session, run the packager:

yarn start

Now depending on your target platform, run the simulator using the appropriate react-native command:

iOS

Install the iOS dependencies:

gem install cocoapods
cd iOS/ && pod install

Note: You may have to remove an existing Podfile.lock file. See grpc/grpc#12172 for more information.

Run the app on iOS:

react-native run-ios

If the command above fails (See #84), you can compile the iOS project directly from Xcode by opening the iOS/cabin.xcworkspace.

You may run into Xcode setup issues like xcrun: error: unable to find utility "instruments", not a developer

Android

Due to having to use a feature that was removed from React Native, we have to use a fork and thus compile it from source (See #88). Follow the steps at Build React Native from source to correctly set up your environment.

Run the app on Android:

react-native run-android

Get Cabin

Install Cabin for iOS or Android on the application stores:

Contributing

Check our contributing guidelines and send your pull requests.

Issues

If you face any issues with Cabin, please create an issue

Note that to preserve as much history as possible we imported a good number of issues from our private repo and the cabin-issues repository.

Code of Conduct

Cabin abides by the Kubernetes Code of Conduct

Sponsor

Cabin is brought to you thanks to Bitnami. Cabin was developed by Skippbox and joined the Bitnami portfolio of Kubernetes products after Skippbox's acquisition.

cabin's People

Contributors

arapulido avatar beltran-rubo avatar bhullnatik avatar dependabot[bot] avatar remstos avatar sebgoa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cabin's Issues

Ability to scale replication controller

From @sebgoa on July 10, 2016 11:3

We should be able to scale replicas of an RC.

For instance, a swipe to a "scale" section, opens a rolling menu where we can select the number of replicas.

Range of rolling menu is configurable in Settings of the app.

Copied from original issue: skippbox/cabin-sw#7

Investigate the use of CA/certs for auth

From @sebgoa on October 11, 2016 14:35

some folks don't use basic auth and/or use their own certs for auth to k8s.

we should check if there is a way to put a certificate and certificate key to make TLS =true in the https requests.

Copied from original issue: skippbox/cabin-sw#92

Ability to configure which objects get displayed

From @sebgoa on July 10, 2016 11:11

Current default is pod,rc and services.

In settings (for example), we should have a list of all objects that the app can display. And we should be able to activate the ones we care.

If someone wants to display rc and services, they select them and that's all they see.

That way we can add configmaps, secrets, volumes and the user can activate them.

Copied from original issue: skippbox/cabin-sw#10

Error deploying guestbook through tiller in kube cluster

From @jsloyer on March 29, 2017 19:39

I am using Cabin to install Tiller to install guestbook on my Kube cluster and getting the following error in the Tiller pod. Any idea? The pod is crashing on startup.

2017-03-29T19:33:59.998918841Z Tiller is listening on :44134
2017-03-29T19:33:59.998968225Z Probes server is listening on :44135
2017-03-29T19:33:59.998975223Z Storage driver is ConfigMap
2017-03-29T19:38:03.432730790Z 2017-03-29 19:38:03.432394 I | storage.go:37: Getting release "wrinkled-frog" (v1) from storage
2017-03-29T19:38:03.463554523Z 2017-03-29 19:38:03.463405 I | storage.go:37: Getting release "dull-hamster" (v1) from storage
2017-03-29T19:38:03.558786092Z 2017-03-29 19:38:03.558530 I | release_server.go:862: Executing pre-install hooks for wrinkled-frog
2017-03-29T19:38:03.558816053Z 2017-03-29 19:38:03.558688 I | release_server.go:889: Hooks complete for pre-install wrinkled-frog
2017-03-29T19:38:03.558822348Z 2017-03-29 19:38:03.558726 I | storage.go:133: Getting release history for ''
2017-03-29T19:38:03.567862778Z 2017-03-29 19:38:03.567758 I | release_server.go:862: Executing pre-install hooks for dull-hamster
2017-03-29T19:38:03.567881358Z 2017-03-29 19:38:03.567824 I | release_server.go:889: Hooks complete for pre-install dull-hamster
2017-03-29T19:38:03.568018080Z 2017-03-29 19:38:03.567912 I | storage.go:133: Getting release history for ''
2017-03-29T19:38:03.590593696Z error: group map[certificates.k8s.io:0xc42041c380 componentconfig:0xc42041c3f0 federation:0xc42041c770 :0xc420391ea0 apps:0xc420391f10 authorization.k8s.io:0xc42041c0e0 autoscaling:0xc42041c150 rbac.authorization.k8s.io:0xc42041c5b0 storage.k8s.io:0xc42041c620 authentication.k8s.io:0xc420391f80 batch:0xc42041c310 extensions:0xc42041c4d0 policy:0xc42041c540] is already registered

Copied from original issue: skippbox/cabin-issues#24

Is cabin open source?

From @mdshuai on November 14, 2016 6:8

cabin for ios is a open source project?
thanks

Copied from original issue: skippbox/cabin-issues#15

Add license headers to all files

From @sebgoa on July 5, 2016 15:48

Based on the ASL v2 ๐Ÿ‘

Add this header as comment in all files.

Copyright 2016 Skippbox, Ltd

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

Copied from original issue: skippbox/cabin-sw#2

GKE lists projects with read only access

From @sebgoa on November 19, 2016 15:4

It looks like the GKE plugin lists projects on which we have read only access.

We should only list the projects in which we can write..

Copied from original issue: skippbox/cabin-sw#117

Add cluster provisioning on Google Cloud

From @sebgoa on August 13, 2016 10:23

Google has a great kubernetes service. We can add simple k8s cluster provisioning by talking to the google cloud API and requesting a cluster.

on the CLI it is:

gcloud container clusters create foobar

for iOS we should be able to use the google cloud SDK in objective C:

https://cloud.google.com/appengine/docs/java/endpoints/calling-from-ios

This will require sign-in into a google cloud account.

Copied from original issue: skippbox/cabin-sw#69

Certificate Auth

From @ccatlett2000 on December 12, 2016 14:51

Hello, I have a Kubernetes cluster that I can't access because cabin doesn't support cert auth. Could this be added?

Copied from original issue: skippbox/cabin-issues#19

Delete action for Charts

From @sebgoa on July 12, 2016 10:43

We should be able to delete a deployed chart

Copied from original issue: skippbox/cabin-sw#23

Edit ports in services

From @sebgoa on July 12, 2016 12:40

we should be able to edit the ports in a service.

targetport, containerport, port...

Copied from original issue: skippbox/cabin-sw#38

Self-Signed CA

From @Bregor on September 6, 2016 18:13

At first, thank you for the wonderful app!

It will be perfect if you add a possibility to use self-signed CAs which will grant access to test and development clusters.

Thanks in advance.

Copied from original issue: skippbox/cabin-issues#13

Add Google Logout button

From @kemcake on March 17, 2017 18:6

We need a way to logout from google, to be able to switch account for example.

Copied from original issue: skippbox/cabin-sw#128

Swipe left/right

From @sebgoa on July 10, 2016 11:1

Just like browsing email, we should have swipe functionalities.

First, implemented delete of objects by swiping left.
Then maybe another swipe section to create new labels.

Copied from original issue: skippbox/cabin-sw#5

Helm complexe templating

From @kemcake on December 13, 2016 10:3

Ok there are issues with some values in templates, when it's defined on _helpers.tpl or in dependencies. Need to figure it out

Copied from original issue: skippbox/cabin-sw#125

Ability to copy objects between cluster

From @sebgoa on July 10, 2016 11:2

We should be able to copy an object to another cluster that is configured in the app.

i.e get the json/yaml defining that object and creating said object on another cluster.

Copied from original issue: skippbox/cabin-sw#6

Display charts repository

From @sebgoa on July 12, 2016 10:44

We should be able to see a list of charts available from a repository.

There should be a default repository configured.
We fetched the index.yaml from the repo and construct a grid of sorts to display a catalog of applications.

Copied from original issue: skippbox/cabin-sw#24

Enable Browser open with LoadBalancer type service

From @sebgoa on August 11, 2016 10:12

on k8s clusters where you can set service type to LoadBalancer, we should be able to open the browser on the LB IP.

flow:

  • set LB service type
  • After some time (not immediate), the Service gets a public IP in status.loadBalancer.ingress
status:
  loadBalancer:
    ingress:
    - ip: 130.211.61.16

we should be able to open the service on that IP like we do with NodePort.

Copied from original issue: skippbox/cabin-sw#63

Support namespaces

From @sebgoa on July 10, 2016 11:23

Currently, we only display default namespace objects.

We need to support multiple namespaces...

Copied from original issue: skippbox/cabin-sw#12

Support Cluster Federation

From @sebgoa on October 19, 2016 16:40

When we have more than one cluster in Cabin, we should be able to select a master and use the others in a federation.

To get started, we should just implement a two cluster federation.

I envision a new action in the cluster view. 'federate', the first one is going to be the master, and then a picker allows you to select the second cluster in the federation.

This involves creating a few resources (deployments, services, secrets) and generating kubeconfig files (yaml).

The result of a federation is a new "cluster" endpoint in Cabin (maybe with a special color background...). this federated cluster only supports replica sets, services, namespaces and secrets for now. But when you create those resources, they get replicated on the two clusters in the federation.

I have a bash script that does it. Should not be too painful to do.

Let's discuss (and that will be the last feature before kubecon).

Copied from original issue: skippbox/cabin-sw#101

Deploy action for charts

From @sebgoa on July 12, 2016 10:47

once we know how to use gRPC, we should be able to deploy an application.

From the catalog view (application lists coming from the repository).

A single click on the app should trigger a deploy.

Copied from original issue: skippbox/cabin-sw#26

Perform rolling update

From @sebgoa on July 12, 2016 12:14

Every replication controller or deployment can be subject to rolling update

For example we should be able to change the image version being used.

$ kubectl rolling-update
$ kubectl apply

This might require being able to edit the entire yaml describing an rc or deployment.
Or picking a few parameters that we can update (i.e image, resource limits)

Copied from original issue: skippbox/cabin-sw#27

Ability to get exec in a pod

From @sebgoa on July 10, 2016 11:5

similar to kubectl exec we should be able to get into a pod with a shell.

The interface may not be optimal for this....TBD

Copied from original issue: skippbox/cabin-sw#9

Unable to add cluster running in Google Container Engine

From @Jacobh2 on March 4, 2017 7:7

I've tried to reinstall the app, cleared the cache and data and I still run into this problem.

When I choose to add a GKE cluster, it asks me to select correct Google account, and then it shows me the cluster and that it is up and running. A green notification shows that it has added the cluster successfully, but when I return to the home screen it shows my cluster as "down" when it most certainly is not.

Selecting the cluster takes me to the page of pods, ns, svc etc but nothing is there.

What am I missing?

Copied from original issue: skippbox/cabin-issues#23

Investigate how to tie the app to iOS notifications

From @sebgoa on August 13, 2016 10:18

Some folks have been asking me about using iOS notifications.

Not sure we can use it at this time since the app does not run in the background...

The idea being that when for example a Pod restarts, you get an iOS notification.

Copied from original issue: skippbox/cabin-sw#68

More compact list display?

From @mboersma on August 10, 2016 20:0

The default list view fits only 3.5 items vertically, at least on my iPhone 6. I have exactly 8 clusters (currently) that I'd like to keep an eye on, so a more compact view that only shows only name and running status could be a more useful default.

Copied from original issue: skippbox/cabin-issues#8

Mark node as schedulable

From @sebgoa on July 12, 2016 16:42

in the node action list we should be able to mark the node as schedulable

$ kubectl uncordon <nodename>

Copied from original issue: skippbox/cabin-sw#42

Add a "About section"

From @sebgoa on July 10, 2016 10:59

at the bottom with deploy,settings etc, a one screen About section that points to skippbox.
Put the logo, twitter account, [email protected] contact...

Copied from original issue: skippbox/cabin-sw#4

Dynamic Fonts

From @GEverding on August 22, 2016 22:37

Hi, love the app. I use dynamic fonts on iOS (Accessibility Option) and the headers and labels aren't scaling appropriately.
slack for ios upload png

Copied from original issue: skippbox/cabin-issues#10

Store/Open deployment files

From @CelsoSantos on June 9, 2017 11:10

I would like to have Cabin be able to work with yams deployment files, namely storing them in the app, allow editing of deployment files, etc.
This would greatly ease work on Kubernetes with Cabin.

Also, consider adding a kubectl capable shell.

Copied from original issue: skippbox/cabin-issues#25

Edit a service to switch its type

From @sebgoa on July 12, 2016 12:35

A service can be of three types:

ClusterIP
NodePort
LoadBalancer

We need to be able to edit a service to change the type.

Copied from original issue: skippbox/cabin-sw#34

Add charts repo in settings

From @sebgoa on July 22, 2016 10:38

In settings we should be able to add chart repositories,

more than one.

By default add this one:

http://storage.googleapis.com/kubernetes-charts/

call it kubernetes-charts

and add second one to verify the functionality of being able to have multiple repo:

http://storage.googleapis.com/kubernetes-charts-testing/

call it kubernetes-charts-testing

Copied from original issue: skippbox/cabin-sw#53

Check if requests are authorized

From @sebgoa on July 12, 2016 16:47

It could be that a user cannot perform an operation.

We need to catch the failure and notify the user in the app that the action was not authorized.

Copied from original issue: skippbox/cabin-sw#43

Cannot view anything without permission to list namespaces.

From @bharris47 on December 31, 2016 20:22

My company's cluster currently does not provide access the namespace resource. As a result, I can't select the namespace that I have access to and cannot view anything. It would be nice if a cluster could be configured with a default namespace (akin to kubectl contexts).

Copied from original issue: skippbox/cabin-issues#20

Get fixtures data for tests

From @sebgoa on July 5, 2016 9:42

When running the simulator we should be able to have a fake endpoint with minimum data points to tests functionalities.

Copied from original issue: skippbox/cabin-sw#1

Cluster cannot be edited mir deleted

From @lowsky on December 5, 2016 19:11

Hi, promising app!
Cabin version 0.3.0:
After entering the url and credentials of a new cluster, it is marked as "down".
Trying to verify, edit or even delete does not work, it seems that there is no such functional (in the UI) ?
Stop.
After adding another cluster, the edit, delete and report is visible.

Copied from original issue: skippbox/cabin-issues#18

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.