All Projects → cafebazaar → blacksmith

cafebazaar / blacksmith

Licence: GPL-2.0 license
Bare-Metal CoreOS Cluster Manager

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language
shell
77523 projects
HTML
75241 projects
Makefile
30231 projects
CSS
56736 projects

Projects that are alternatives of or similar to blacksmith

Kubernetes Vagrant Coreos Cluster
Kubernetes cluster (for testing purposes) made easy with Vagrant and CoreOS.
Stars: ✭ 598 (+792.54%)
Mutual labels:  cluster, coreos
Typhoon
Minimal and free Kubernetes distribution with Terraform
Stars: ✭ 1,397 (+1985.07%)
Mutual labels:  coreos, bare-metal
Terra Aws Core Kube
Terraform configuration to bootstrap a Kubernetes Cluster on top of CoreOS using AWS-EC2 instances
Stars: ✭ 10 (-85.07%)
Mutual labels:  cluster, coreos
Xcat Core
Code repo for xCAT core packages
Stars: ✭ 273 (+307.46%)
Mutual labels:  cluster, bare-metal
seedbox
Baremetal CoreOS cluster provisioner with web UI
Stars: ✭ 23 (-65.67%)
Mutual labels:  coreos, bare-metal
zig-bare-metal-microbit
Bare metal microbit program written in zig
Stars: ✭ 27 (-59.7%)
Mutual labels:  bare-metal
rsync2ipfs-cluster
No description or website provided.
Stars: ✭ 16 (-76.12%)
Mutual labels:  cluster
Genetic-Algorithm-on-K-Means-Clustering
Implementing Genetic Algorithm on K-Means and compare with K-Means++
Stars: ✭ 37 (-44.78%)
Mutual labels:  cluster
socket.io-clusterhub
socket.io storage powered by clusterhub for multi process applications.
Stars: ✭ 70 (+4.48%)
Mutual labels:  cluster
react-map-gl-cluster
Urbica React Cluster Component for Mapbox GL JS
Stars: ✭ 27 (-59.7%)
Mutual labels:  cluster
mmqtt
An Open-Source, Distributed MQTT Broker for IoT.
Stars: ✭ 58 (-13.43%)
Mutual labels:  cluster
scheduled-scaler
No description or website provided.
Stars: ✭ 68 (+1.49%)
Mutual labels:  cluster
skyring
Distributed timers as a service - for Node.js
Stars: ✭ 27 (-59.7%)
Mutual labels:  cluster
terraform-azurerm-kubernetes
Install a Kubernetes cluster the CoreOS Tectonic Way: HA, self-hosted, RBAC, etcd Operator, and more
Stars: ✭ 22 (-67.16%)
Mutual labels:  coreos
raftor
Distributed chat system built with rust
Stars: ✭ 31 (-53.73%)
Mutual labels:  cluster
aioredis-cluster
Redis Cluster support extension for aioredis
Stars: ✭ 21 (-68.66%)
Mutual labels:  cluster
docs
Documentation repo of nebula orchestration system
Stars: ✭ 16 (-76.12%)
Mutual labels:  cluster
barectf
Generator of ANSI C tracers which output CTF data streams
Stars: ✭ 50 (-25.37%)
Mutual labels:  bare-metal
lazycluster
🎛 Distributed machine learning made simple.
Stars: ✭ 43 (-35.82%)
Mutual labels:  cluster
jakob
A fault-tolerant, distributed cluster of Redis servers with built-in load-balancing and fall-backs to provide data availability
Stars: ✭ 19 (-71.64%)
Mutual labels:  cluster

Blacksmith, Bare-Metal CoreOS Cluster Manager

Travis widget wercker widget Quay widget Status

Blacksmith is a collection of DHCP, PXE, TFTP, and HTTP servers, created with the purpose of booting CoreOS on bare-metal machines, configuring them by serving generated cloud-config and ignition files, and maintaining the cluster over time. Blacksmith uses etcd to store the states, and to elect a leader. So you can run multiple instances of Blacksmith to provide a high available CoreOS over bare-metal infrastructure.

Warning: This project is under development. To be notified about the project becoming more stable, please subscribe to this issue.

Screenshot of Nodes List page - Blacksmith

Workspace and Templating

The cloud-config and ignition files, and the bootparams string which is passed to the kernel at boot time, are provided by executing templates for each machine. These templates, along with CoreOS images and other binary files, form the runtime environment of your cluster. In Blacksmith, we call this folder Workspace. For more information on the structure of a workspace, check the workspace doc.

Running in Docker

Blacksmith is available as a Docker image called cafebazaar/blacksmith.

Because Blacksmith needs to listen for DHCP traffic, it has to run with the host network stack. You can use install-as-docker.sh to run blacksmith as a docker container. The script has made some assumptions to provide some of the required arguments of the blacksmith command. To customize it according to your network layout, currently you have to edit the script.

$ sudo ./install-as-docker.sh <workspace-path> <etcd-endpoints> <network-interface>

DNS

In some IaaS environments, machine names are resolvable in the internal network. Some software (Kubernetes?) count on it. To provide similar functionality, you need to run SkyDNS on the same instances you run Blacksmith on. Blacksmith will configure them through etcd.

Documentation

Check this.

Test

For test you can use our blacksmith-kubernetes workspace.

Cluster Setup

# Get the packages (ignore the warnings):
go get -v github.com/cafebazaar/blacksmith
go get -v github.com/cafebazaar/blacksmith-kubernetes

# Download the needed binaries of kubernetes workspace of blacksmith:
cd $GOPATH/src/github.com/cafebazaar/blacksmith-kubernetes/binaries
./download-all.sh

cd $GOPATH/src/github.com/cafebazaar/blacksmith-kubernetes
# Edit config.sh there and make it to suit your needs,
#
# If you happen to need a proxy config, you should edit the following lines:
# export CONTAINER_HTTP_PROXY=http://<your http proxy ip>:<port>
# export CONTAINER_HTTPS_PROXY=http://<your https proxy ip>:<port>
# Note: Referring localhost and 127.0.0.1 won't work here, good idea
# would be to make your local proxy server to listen on 0.0.0.0 and
# use your LAN IP here.
#
# You need to edit config.sh internal/external interface names to this:
# (or a real cluster scenario, according to your machines)
# export INTERNAL_INTERFACE_NAME=enp0s8
# export EXTERNAL_INTERFACE_NAME=enp0s9

# put your ssh keys into the cluster
echo "  - $(cat ~/.ssh/id_rsa.pub)" > ssh-keys.yaml

# Build workspace:
./build.sh

# Enter blacksmith
cd $GOPATH/src/github.com/cafebazaar/blacksmith
mkdir workspaces

# Initialize the cluster using VirtualBox
./dev_run.sh

# On blacksmith-kubernetes, once machines reached "installed" state, (click
# you can terminate BoB (local instance of blacksmith that has provisioned
# master machines with blacksmith-kubernetes workspace)

# Once download of blacksmith container and its requironments finished which
# takes minutes of even hours, for poor Internet connections
# (login with IP of third interface of boostrapper1 with `ssh core@IP`
# and enter `journalctl -f` to check that) you can add 5 workers to your
# just created virtual cluster. 
./dev_run.sh worker 5

# Append this line to your /etc/hosts
# <bootstrapper1 ip address>  test.cafecluster
#
kubectl --kubeconfig $GOPATH/src/github.com/cafebazaar/blacksmith-kubernetes/Takeaways/kubeconfig get nodes
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].