All Projects → astrobase → astrobase

astrobase / astrobase

Licence: Apache-2.0 license
Simple, fast, and secure deployments anywhere.

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to astrobase

cloudrun-fastapi
FastAPI on Google Cloud Run
Stars: ✭ 112 (+138.3%)
Mutual labels:  google-cloud, fastapi
InsightFace-REST
InsightFace REST API for easy deployment of face recognition services with TensorRT in Docker.
Stars: ✭ 308 (+555.32%)
Mutual labels:  fastapi
count
Comparing serverless platforms
Stars: ✭ 27 (-42.55%)
Mutual labels:  google-cloud
shuttlepdf
📃 Smashingly simple, and scalable ("serverless") HTML to PDF conversions using Google Cloud Functions, and Puppeteer.
Stars: ✭ 15 (-68.09%)
Mutual labels:  google-cloud
fastapi-mangum-example
Deploy FastAPI as Lambda using serverless and mangum
Stars: ✭ 21 (-55.32%)
Mutual labels:  fastapi
fastapi-tortoise
The template for building scalable web APIs based on FastAPI, Tortoise ORM and other.
Stars: ✭ 95 (+102.13%)
Mutual labels:  fastapi
onix
A reactive configuration manager designed to support Infrastructure as a Code provisioning, and bi-directional configuration management providing a single source of truth across multi-cloud environments.
Stars: ✭ 89 (+89.36%)
Mutual labels:  multi-cloud
fastapi-websocket-broadcast
Websocket 'broadcast' demo using FastAPI/Starlette
Stars: ✭ 106 (+125.53%)
Mutual labels:  fastapi
datacatalog-tag-manager
Python package to manage Google Cloud Data Catalog tags, loading metadata from external sources -- currently supports the CSV file format
Stars: ✭ 17 (-63.83%)
Mutual labels:  google-cloud
GoogleCloudLogging
Swift (Darwin) library for logging application events in Google Cloud.
Stars: ✭ 24 (-48.94%)
Mutual labels:  google-cloud
gocloud
☁️ Go API for open cloud
Stars: ✭ 113 (+140.43%)
Mutual labels:  google-cloud
spanner-bench
Google Cloud Spanner Query Planner Benchmarking
Stars: ✭ 24 (-48.94%)
Mutual labels:  google-cloud
compose
Easy and fast anonymous chat!
Stars: ✭ 34 (-27.66%)
Mutual labels:  fastapi
TikTokDownloader PyWebIO
🚀「Douyin_TikTok_Download_API」是一个开箱即用的高性能异步抖音|TikTok数据爬取工具,支持API调用,在线批量解析及下载。
Stars: ✭ 919 (+1855.32%)
Mutual labels:  fastapi
starlette-opentracing
Opentracing support for Starlette and FastApi
Stars: ✭ 62 (+31.91%)
Mutual labels:  fastapi
deploy-cloudrun
This action deploys your container image to Cloud Run.
Stars: ✭ 238 (+406.38%)
Mutual labels:  google-cloud
K8s-Cluster-Provisioner-GCP-Terrafrom
This repo will seamlessly setup self managed Kubernetes cluster in GCP using Terraform and Kubespray.
Stars: ✭ 17 (-63.83%)
Mutual labels:  google-cloud
jupyverse
A Jupyter server based on FastAPI
Stars: ✭ 117 (+148.94%)
Mutual labels:  fastapi
morelia server
Server for MoreliaTalk network
Stars: ✭ 25 (-46.81%)
Mutual labels:  fastapi
HypeLinks-API
A Smart Bookmark API that can classify websites into 10 different categories built using FastAPI and Tensorflow 2.0
Stars: ✭ 23 (-51.06%)
Mutual labels:  fastapi

Astrobase

Astrobase; simple, fast, and secure deployments anywhere.

Test publish Coverage


Documentation: https://astrobase.corletti.xyz

Source Code: https://github.com/anthonycorletti/astrobase

Twitter: @astrobasecloud


Astrobase is best for developers who create and manage reproducible environments across cloud providers with Kubernetes.

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.

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].