All Projects → wernight → Kubernetes Che

wernight / Kubernetes Che

Licence: apache-2.0
Example deploying Eclipse Che on a Kubernetes cluster

Projects that are alternatives of or similar to Kubernetes Che

kubernetes
Kubernetes Course
Stars: ✭ 19 (+11.76%)
Mutual labels:  kubernetes-deployment
k8s-day2-ops
This repository contain scripts for Kubernetes day 2 operations
Stars: ✭ 25 (+47.06%)
Mutual labels:  kubernetes-deployment
Kubekit
A Kubernetes deployment toolkit for offline environment.
Stars: ✭ 328 (+1829.41%)
Mutual labels:  kubernetes-deployment
spring-boot-microservice-best-practices
Best practices and integrations available for Spring Boot based Microservice in a single repository.
Stars: ✭ 139 (+717.65%)
Mutual labels:  kubernetes-deployment
Learn-ServiceMesh-Workshop
Labs for Kubecon NA Workshop on Service Mesh with Cloud PKS
Stars: ✭ 13 (-23.53%)
Mutual labels:  kubernetes-deployment
K8s Kotlin Dsl
Kotlin DSL for Kubernetes configs
Stars: ✭ 259 (+1423.53%)
Mutual labels:  kubernetes-deployment
terraform-vultr-condor
Kubernetes Deployment Tool for Vultr
Stars: ✭ 60 (+252.94%)
Mutual labels:  kubernetes-deployment
Rssbox
📰 I consume the world via RSS feeds, and this is my attempt to keep it that way.
Stars: ✭ 492 (+2794.12%)
Mutual labels:  kubernetes-deployment
cd-gitops-reference-architecture
Details of the CD/GitOps architecture in use at InfluxData
Stars: ✭ 16 (-5.88%)
Mutual labels:  kubernetes-deployment
Kubernetes Workshop
⚙️ A Gentle introduction to Kubernetes with more than just the basics. 🌟 Give it a star if you like it.
Stars: ✭ 3,122 (+18264.71%)
Mutual labels:  kubernetes-deployment
ankh
Another Kubernetes Helper
Stars: ✭ 31 (+82.35%)
Mutual labels:  kubernetes-deployment
kuberbs
K8s deployment rollback system based on system observability principles of modern stacks
Stars: ✭ 61 (+258.82%)
Mutual labels:  kubernetes-deployment
Eksctl
The official CLI for Amazon EKS
Stars: ✭ 3,550 (+20782.35%)
Mutual labels:  kubernetes-deployment
aws-eks-orb
An orb to simplify deployments to Amazon Elastic Container Service for Kubernetes (Amazon EKS)
Stars: ✭ 16 (-5.88%)
Mutual labels:  kubernetes-deployment
Kubernetes
minimal and immutable Kubernetes images built with LinuxKit
Stars: ✭ 341 (+1905.88%)
Mutual labels:  kubernetes-deployment
pipeline-lib
Global shared library for Glia pipeline jobs
Stars: ✭ 68 (+300%)
Mutual labels:  kubernetes-deployment
Kubernetes Tutorial
Running Kubernetes cluster Locally tutorial
Stars: ✭ 257 (+1411.76%)
Mutual labels:  kubernetes-deployment
Kubernix
Single dependency Kubernetes clusters for local testing, experimenting and development
Stars: ✭ 545 (+3105.88%)
Mutual labels:  kubernetes-deployment
Carvel Kapp
kapp is a simple deployment tool focused on the concept of "Kubernetes application" — a set of resources with the same label
Stars: ✭ 489 (+2776.47%)
Mutual labels:  kubernetes-deployment
Kubekey
Provides a flexible, rapid and convenient way to install Kubernetes only, both Kubernetes and KubeSphere, and related cloud-native add-ons. It is also an efficient tool to scale and upgrade your cluster.
Stars: ✭ 288 (+1594.12%)
Mutual labels:  kubernetes-deployment

kubernetes-che

Example deploying Eclipse Che on a Kubernetes cluster. So what you get is a Che server running on your cluster behind SPDY Proxy to handle authencation and encryption.

Note: Currently alpha state; barely tested.

Usage

Deployment

  1. You need a running Kubernetes cluster (for example Google Container Engine).
  2. Edit kubernetes.yml and see the TODO; update with your values.
  3. Run kubectl apply -f kubernetes.yml
  4. Follow client-side set up (see below).

Client-side set up

For Chrome install SwitchyOmega. Then add a PAC Profile with the PAC Script below:

function FindProxyForURL(url, host) {
  if (dnsDomainIs(host, "che")) {
    # TODO: Replace with your host/IP pointing to SPDY Proxy.
    return "HTTPS che.example.com:44300";
  }

  return "DIRECT";
}

Click the lock to set username/password according to values you've set in kubernetes.yml.

Supposing you've set up your DNS to point to the Ingress Controller external IP (or actually to SPDY Proxy) and the SSL certificate of that host is trusted; you should now be able to connect to http://che/.

How it works

The beginning of kubernetes.yml is to get a valid TLS certificate. It sets up an Ingress Controller which, if you don't already have one, can be used for other services running on your cluster. It's not critical for the system to work, but you need a valid certificate when trying proxy through SPDY Proxy else your browser will refuse to use it.

SPDY Proxy is used to add authentication, encryption, and access che running on your cluster. The rules are set up so that it's only used when trying to access Che.

The critical part is that che resolves to the container running the Docker server used by the Che server, from withing your cluster (and thus also from outside your cluster via SPDY Proxy).

It runs the Che server and links it to a running Docker daemon (Docker-in-Docker is running also on Kubernetes).

Isn't Docker-in-Docker discouraged?

The original blog post is partially outdated. The current docker:dind is slow (because it uses --storage-driver=vfs) but should not corrupt data regardless of the underlying file system.

It's required here and desired for the following reasons:

  • CRITICAL: Kubernetes spawns on multiple machines but you need to have Docker and Che on the same host to be able to mount the same directory on both. These volume mounts are required by Che:
    • lib-copy used to bootstrap a workspace
    • storage used to access some settings like SSH keys
    • workspaces used to run docker run -v ... from within a Che workspace
  • Cleaner: Deleting the Pod or if it fails health checks it'll not block or pollute the file system of Kubernetes itself.
  • Provide a simple way to access the Docker host from within Kubernetes cluster (passed via --remote:che to Che).

What could be improved

  • Requires clients to setup and use that SPDY Proxy (at least until eclipse/che#1560 is fixed)
  • Long lived HTTP requests like the terminal, or possibly other parts, seem to disconnect after a while if there was no I/O. Not tested which part is responsible for this issue.
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].