Skip to content

Application deployer - Watch repository release and deploy binary using canary or blue green deployment.

License

Notifications You must be signed in to change notification settings

anddimario/interstellar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Interstellar

Application deployer

Features

  • monitor and get release from github
  • run executable
  • blue green and canary deploy
  • rollback
  • recovery from crash
  • cli
  • horizontal scaling

Install and requirements

  • Deps: gh (github cli)

CLI

interstellar -h

Dev

go run main.go -h

Diagrams

New release Check

stateDiagram-v2
  check_ignore: Check if ignore
  check: Check release
  download: Download new release
  choose_port: Choose a port
  add_backend: Add new process as backend
  create_vm: Run the process
  canary: Canary
  blue_green: Blue green
  state new_release <<choice>>
  state deploy_type <<fork>>
  state done_deploy <<join>>
  check --> new_release
  new_release --> check : No new release
  new_release --> check_ignore
  check_ignore --> download
  download --> choose_port
  choose_port --> add_backend 
  add_backend --> create_vm
  create_vm --> deploy_type
  deploy_type --> canary
  deploy_type --> blue_green
  canary --> done_deploy
  blue_green --> done_deploy
  done_deploy --> [*]
Loading

Canary deploy

stateDiagram-v2
  wait: Wait canary window
  check: Check if healthy
  add: Add the new version
  not_healthy: Remove new version
  remove_old: Remove old version
  post_deploy: Post deploy actions
  state is_healthy <<choice>>
  check --> is_healthy
  is_healthy --> add : is healthy
  is_healthy --> not_healthy
  add --> wait
  wait --> remove_old
  not_healthy --> [*]
  remove_old --> post_deploy
  post_deploy --> [*]
Loading

Blue green deploy

stateDiagram-v2
  wait: Wait positive healthchecks
  check: Check if healthy
  replace: Replace old with new
  not_healthy: Remove new version
  post_deploy: Post deploy actions
  state is_healthy <<choice>>
  wait --> check
  check --> is_healthy
  is_healthy --> replace : is healthy
  is_healthy --> not_healthy
  not_healthy --> [*]
  replace --> post_deploy
  post_deploy --> [*]
Loading

Rollback

stateDiagram-v2
  check: Check if deploy in progress, or version exists
  state if_check_ok <<choice>>
  get_release: Get Release
  decompress: Decompress Release
  start: Start the rollback version
  remove: Remove the actual version
  update_config: Update config
  check --> if_check_ok
  if_check_ok --> get_release : Check ok
  if_check_ok --> [*]
  get_release --> decompress
  decompress --> start
  start --> remove
  remove --> update_config
  update_config --> [*]
Loading

Recovery from crash

stateDiagram-v2
  start: Startup
  check_deploy: Check if deploy in progress
  state if_check_ok <<choice>>
  kill: Kill other version processes
  start --> check_deploy
  check_deploy --> if_check_ok
  if_check_ok --> kill : Zombie deploy
  kill --> [*]
  if_check_ok --> [*]
Loading

NOTE The healthcheck will remove the backend from the backends list

Gossip

stateDiagram-v2
  broadcast: Notify the peer to another one
  gossip: Start gossip
  random: Get random peers
  notify_list: Notify peer list
  update_list: Update peer list
  auth: Auth
  broadcast --> gossip
  gossip --> random
  random --> notify_list
  notify_list --> auth
  auth --> update_list
  update_list --> gossip
Loading

Horizontal scaling

Needed in config:

[ha]
secret = 'yoursecrethere'

Horizontal scaling isn't enabled by default, you must run:

  • Start the first node: interstellar serve -e ADDRESS:PORT
  • Start another node: interstellar serve -e ADDRESS:PORT -b ADDRESS:PORT
  • Commands info: interstellar serve -h

IMP Communication isn't encrypted and it assumes that the nodes are in a vpc or another isolated environment, the secret is only use as simple auth.

LICENSE

License

About

Application deployer - Watch repository release and deploy binary using canary or blue green deployment.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published