Astrobase.
Project description
Astrobase; simple multi-cloud Kubernetes cluster management.
Documentation: https://docs.astrobase.cloud
Source Code: https://github.com/astrobase/astrobase
Astrobase is for developers that want to create and manage Kubernetes clusters across cloud providers.
The key features are:
- API First: Unlike most other infrastructure management tools, Astrobase is an API-First service; meaning you can write any client code you like to create your Kubernetes clusters.
- Kubernetes First: Astrobase only supports Kubernetes so you and your team can focus on streamlining the same application deployment story across any provider envrionment you might need to run your applications on.
- Easy to use: Cluster creation definitions are short and simple, and you don't have to spend hours learning a domain specific language or think about a new resource management lifecycle. Astrobase only does what cloud providers do.
- Start simple: Astrobase's simplest example takes about 5 minutes to complete.
- Scale across clouds: If you're using Astrobase, and shipping your software to customers that use different cloud providers, you can test your deployments seamlessly and take advantage of over $300,000 in cloud provider credits while doing so.
Requirements
Python 3.7+
Alternatively, you can run Astrobase as a docker container incase you arent using python.
Installation
pip install astrobasecloud
A Quick Example
The absolute minimum
Create a file gke-cluster.yaml
that contains the following content.
---
cluster:
name: astrobase-quickstart
provider: gcp
location: us-central1-c
node_pools:
- name: default
initial_node_count: 1
autoscaling:
enabled: true
min_node_count: 1
max_node_count: 3
Create a project on Google Cloud and link a billing account to the new project.
PROJECT_ID=ab-quickstart-$(date +%s)
gcloud projects create ab-quickstart-$(date +%s)
gcloud config set project $PROJECT_ID
Deploy
Start the astrobase server in one terminal session
astrobase server
Create your first profile. A profile points your cli to a particular astrobase server.
astrobase profile create local --no-secure \
export ASTROBASE_PROFILE=local
In another session, setup your GCP project and deploy your cluster!
astrobase provider setup gcp \
--project-id $(gcloud config get-value project) \
--service-name "container.googleapis.com"
astrobase cluster gke create \
--project-id $(gcloud config get-value project) \
--file "gke-cluster.yaml"
Done!
Download your credentials and make a request to the cluster once it's in a ready state
gcloud container clusters \
get-credentials astrobase-quickstart \
--zone us-central1-c && \
kubectl get nodes
Now it's time to clean-up.
astrobase cluster gke delete \
--project-id $(gcloud config get-value project) \
--file "gke-cluster.yaml"
gcloud projects delete $PROJECT_ID
Going Multi-Cloud
Two clusters, different clouds
Let's see what it takes to deploy onto two environments using Astrobase. Let's use GCP and AWS for this example.
Create a file gke-cluster.yaml
with:
---
cluster:
name: astrobase-quickstart
provider: gcp
location: us-central1-c
node_pools:
- name: default
initial_node_count: 1
autoscaling:
enabled: true
min_node_count: 1
max_node_count: 3
Now create a file eks-cluster.yaml
with:
---
cluster:
name: astrobase-quickstart
provider: eks
region: us-east-1
nodegroups:
- nodegroupName: default
scalingConfig:
desiredSize: 1
minSize: 1
maxSize: 3
Deploy
Start the astrobase server in one terminal session
astrobase server
In another session, setup your GCP project and deploy your cluster!
astrobase provider setup gcp \
--project-id $(gcloud config get-value project) \
--service-name "container.googleapis.com"
astrobase cluster gke create \
--project-id $(gcloud config get-value project) \
--file "gke-cluster.yaml"
Then deploy your AWS EKS cluster!
astrobase cluster eks create \
--kubernetes-control-plane-arn=$(aws iam list-roles | jq -r '.Roles[] | select(.RoleName == "AstrobaseEKSRole") | .Arn') \
--cluster-subnet-id=$(aws ec2 describe-subnets --query 'Subnets[].SubnetId[]' | jq -r '.[0]') \
--cluster-subnet-id=$(aws ec2 describe-subnets --query 'Subnets[].SubnetId[]' | jq -r '.[1]') \
--cluster-security-group-id=$(aws ec2 describe-security-groups --query 'SecurityGroups[].GroupId' | jq -r '.[0]') \
--nodegroup-noderole-mapping="default=$(aws iam list-roles | jq -r '.Roles[] | select(.RoleName == "AstrobaseEKSNodegroupRole") | .Arn')" \
--file "eks-cluster.yaml"
Deploying your EKS cluster requires a little extra setup. Checkout the AWS user guide section for more details.
Now it's time to clean-up.
astrobase cluster gke delete \
--project-id $(gcloud config get-value project) \
--file "gke-cluster.yaml"
astrobase cluster eks delete \
--kubernetes-control-plane-arn=$(aws iam list-roles | jq -r '.Roles[] | select(.RoleName == "AstrobaseEKSRole") | .Arn') \
--cluster-subnet-id=$(aws ec2 describe-subnets --query 'Subnets[].SubnetId[]' | jq -r '.[0]') \
--cluster-subnet-id=$(aws ec2 describe-subnets --query 'Subnets[].SubnetId[]' | jq -r '.[1]') \
--cluster-security-group-id=$(aws ec2 describe-security-groups --query 'SecurityGroups[].GroupId' | jq -r '.[0]') \
--nodegroup-noderole-mapping="default=$(aws iam list-roles | jq -r '.Roles[] | select(.RoleName == "AstrobaseEKSNodegroupRole") | .Arn')" \
--file "eks-cluster.yaml"
Recap
In summary, Astrobase makes it incredibly simple to create multiple kubernetes environments in different cloud providers.
You don't have to learn a new language, you can extend the api if you need, deploy Astrobase into your cloud architecture, or simply run it locally.
For a more complete example including more features and detail, continue reading the user guide.
License
This project is licensed under the Apache 2.0 License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file astrobasecloud-0.2.0a1.tar.gz
.
File metadata
- Download URL: astrobasecloud-0.2.0a1.tar.gz
- Upload date:
- Size: 51.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.27.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6b6cf09d7c94dc7f1cc2e458cd340fba2a0e254721964245d9b530e92878649 |
|
MD5 | 532549e65ae3ad5705e48d488be6f26e |
|
BLAKE2b-256 | 1db191c54c1775ed136c8b4acaa04c7857a6c709964d36bd092661c677fe8a18 |
File details
Details for the file astrobasecloud-0.2.0a1-py3-none-any.whl
.
File metadata
- Download URL: astrobasecloud-0.2.0a1-py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.27.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1589a650fc42977a01f2716ae68870fb7ab8a0b785eab08cd29dc91d948ae413 |
|
MD5 | c066d3bb77d8b88d57304182a1076374 |
|
BLAKE2b-256 | 9da344f174f683a528b75e1632c46f9c9b6022208684ee9e09dfb7e928b477a5 |