Archon
Archon is an open source tool for cluster creation and daily operations.
It is primarily targeted for Kubernetes clusters but extending to other
distributed clusters should be easy due to its declarative nature.
Archon is designed following the principles of Kubernetes and it works as
an extension of Kubernetes using ThirdPartyResource. You can define your
cluster with yaml files then use kubectl
to create and scale it.
WARNING: Archon is currently in alpha status.
Why Archon
We already have tools like kubeadm and kops. Why do we need another tool
for a similar job? Here are bunch of reasons:
- Tools exist today are mainly imperative. Declarative tools will help
users share their experience by publish their own cluster definitions.
Also users could easily make small customization based on existing template
using declarative tools.
- Self-hosted Kubernetes sounds like a promising idea and we need cluster
management tools which could be easily integrated into current Kubernetes
architecture.
- There're many different environment to launch a Kubernetes cluster in,
an unified experience and easy to extend codebase will help developers to
collaborate by adding more cloud provider and os support.
How it works
Archon use Kubernetes as its base. Just like the way you use Kubernetes,
define resources in your cluster by creating yaml files using our customized
resource types. Then manage its lifecycle using kubectl
. Until now, we
support these resources:
- User
- Network
- InstanceGroup
- Instance
The archon-controller
which you should launch beforehand in the cluster will
create and manage its status based on your definition.
You might find the idea that bootstrapping a new Kubernetes cluster with an existing
one too complex. But after your cluster got initialized, you can move all the
definitions and controllers into the new cluster and let it manage itself. It will
be very convenient that you can manage both applications running in your cluster
and the cluster itself with just the kubectl
cli tool.
Supported cloud providers:
Supported operating system:
At the moment, we only support limited cloud providers and oses. More cloud providers
and operating systems support will be added when the core is stable.
Installation
You could launch Archon locally or install it into your cluster.
Download
Download the latest release from Github.
wget https://github.com/kubeup/archon/releases/download/v0.0.1/archon-controller-v0.0.1-linux-amd64.gz
gunzip archon-controller-v0.0.1-linux-amd64.gz
chmod +x archon-controller-v0.0.1-linux-amd64
mv archon-controller-v0.0.1-linux-amd64 /usr/local/bin/archon-controller
On OSX, just change linux
to darwin
:
wget https://github.com/kubeup/archon/releases/download/v0.0.1/archon-controller-v0.0.1-darwin-amd64.gz
gunzip archon-controller-v0.0.1-darwin-amd64.gz
chmod +x archon-controller-v0.0.1-darwin-amd64
mv archon-controller-v0.0.1-darwin-amd64 /usr/local/bin/archon-controller
Launch locally
Then config AWS credentials and start running the embeded Kubernetes server along with archon-controller
:
export AWS_ACCESS_KEY_ID=YOUR_AWS_KEY_ID
export AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET
export AWS_ZONE=YOUR_CLUSTER_ZONE
archon-controller --local --cloud-provider aws
You can also use Aliyun:
export ALIYUN_ACCESS_KEY=YOUR_ALIYUN_KEY_ID
export ALIYUN_ACCESS_KEY_SECRET=YOUR_ALIYUN_SECRET
archon-controller --local --cloud-provider aliyun
The server will listen on localhost:8080
and server data will be saved to ./.localkube
folder.
Create cluster resource with kubectl
By default, kubectl
will talk with the server on localhost:8080
, you can create an example cluster with:
kubectl create -f examples/k8s-simple
After a while, you could get the ip address for the server:
kubectl get instance -o yaml
And ssh into the server with the default password archon
:
ssh core@SERVER_IP
In cluster deployment
Please follow these instructions if you plan to deploy Archon into your cluster:
Example