Scenario - woveon/wovtools GitHub Wiki

< Home

Woveon Logo

There once was a developer named Dave. He's heard really good things about Kubernetes and after reading about it, decides he's going to push his current project, composed of microservice A and microservice B, to Kubernetes on his AWS account. He's in high hopes.

Cluster Creation

Without WovTools - Dave ties AWS EKS to create a cluster. It's really detailed. He gets all the way to the end, then realizes he skipped a step and has to start over again. After it's all set up, he doesn't really remember all the values he typed in, but he's pretty sure he's going to need them in the future.

With WovTools - WovTools has a command to create a cluster. It uses kops so it is continuously improving. Dave types a command, and it uses his configuration from WovTools to fire up the cluster. It takes about 10 minutes of waiting, during which Dave does some email.

Create an New Cluster

Without WovTools - Oh crap. How did I do this last time?

With WovTools - Copy/paste JSON of existing cluster's settings, changing values as needed. Wait 10 minutes for the command to run. Maybe get some coffee.

Local Development

No change.

Development In Cluster - (NOTE: Dev in Cluster IS CHANGING)

Without WovTools - You don't.

With WovTools - Dave pushes his local code to a node in the cluster (via wov-vh-pushgit) and routes the cluster's service to this node (via wov-vh --route SERVICE). He then logs in to the node (wov-vh -l) and checks his development and makes changes. When all is good, he pulls the code from the node locally (wov-vh-pulldir).

Deployment

Without WovTools - Think of your last deployment. Do you measure the time in minutes, hours or days?

With WovTools - Seconds to Minutes. Dave uses wov-build to build Docker containers and Kubernetes configurations, placing them into a versioned Local Archive. It checks for database changes too. Then, Dave deploys a development version wov-deploy --dev, which packages up the local environment and runs it on the cluster. He tests it, and since it uses the configuration from the node, which was in the cluster, he knows it runs nearly every time. If that works, Dave creates a versioned deployment with wov-deploy --stage. He can view log files of pods with wov-log.

Continuous Development/Deployment

Without WovTools - Think of your own process. Is it possible?

With WovTools - Dave develops and tests code on his own Kubernetes namespace on the cluster. This cluster can be the same or different from the production or even development cluster. When it works for Dave, he pushes his code to 'dev', where Dave and all his co-workers merge their code. Dave then runs tests on that system. If it works, he or the Senior Engineer can push it do production, just by changing the target of wov-deploy.

Updating/Patching a Running Deployment

Without WovTools - Think of your last update. It was the same as a full deployment wasn't it.

With WovTools - Seconds. Dave wants to push a patch. He runs wov-deploy again. If something doesn't work, Dave use wov-deploy to select the previous version of his system to return to. To change code, he simply checks out code from his git repository.