MCPcopy Index your code
hub / github.com/appvia/tako

github.com/appvia/tako @v0.7.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.7.0 ↗ · + Follow
504 symbols 1,680 edges 77 files 382 documented · 76%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Tako :octopus:

Develop Kubernetes apps iteratively with Docker-Compose

Stability:Beta CircleCI GitHub tag (latest SemVer) License: Apache-2.0

Tako helps developers port and iterate Docker Compose apps onto Kubernetes. It understands the Docker Compose application topology and prepares it for deployment in (multiple) target environments, with minimal user input.

We leverage the Docker Compose specification and allow for target-specific configurations to be applied to each component of the application stack, simply.

Tako is opinionated in its choice of Kubernetes elements you should be able to control. It automatically infers key config parameters by analysing and reconciling changes in the project source compose file(s). The configuration parameters can be manually overridden to allow for better control of a cloud application deployment on Kubernetes.

Tako reduces the need for Kubernetes expertise in the team. The generated Kubernetes deployment configuration follows best industry practices, with a thin layer of config options to enable further control. See tako reference documentation for a list of available options.

Features

  • Simplicity - Based on the familiar Docker Compose specification. There is no new framework to learn, no new specification to embrace, and vastness of Kubernetes reduced to a limited set of easy to follow configuration parameters. You focus on the app development. Tako will prepare it for deployment in Kubernetes.

  • Multi-environment support - Parameterisation enabled with the same configuration primitives you're already familiar with. Each defined environment gets its own docker-compose override file, which is there to control the behaviour of your application in Kubernetes in a simple and consistent way.

  • Best practice out of the box - Best practice is codified and embedded in the translation layer, so you don't have to think about what's required to run your project application on Kubernetes.

  • Secure - Tako is opinionated about the secret management. At this stage of its relatively short life it delegates that responsibility to the user, to remove the risk of potential uncontrolled secrets leak. No secrets == No leaks!

  • No vendor lock-in - Because you already use docker-compose, you can keep using it, even if Tako turns out to be not your cup of tea.

  • Easy integrations - You may use generated Kubernetes manifests with any tool / framework of your choice. Check out our Skaffold Integration.

Contents

Installation

All you need to get started quickly is the tako binary added to your PATH, and one or more docker compose files.

Tutorials and guides

Configuration

As mentioned in the Quickstart, the environment specific configuration lives in a set of docker-compose override files. Each environment override file holds simplified Kubernetes configuration parameters for each of the application components.

Project components (aka services) are configured via a set of labels attached to them, and optionally environment variables section which allows for localised adjustments - the same exact way you'd control those in a regular docker-compose file.

Volumes come with their own set of labels to control Kubernetes storage specific parameters.

See the configuration reference for details.

Similar tools

Tako is inspired by the simple, easy to use and well adopted Docker Compose specification, as well as several other tools in the Kubernetes manifests generation and templating space such as Kompose, Ksonnet and Kustomize, to name a few.

See how Tako differs from Kompose.

Each of the solutions above, however, come with their own set of challenges and are lacking in various areas. Some have been discontinued, some see very few contributions or updates, others require a great deal of prior Kubernetes expertise to find them useful.

Tako bridges the gaps in the existing tooling, helping developers familiar with Docker & Compose to easily get up and running with Kubernetes.

Contributing to Tako

We welcome any contributions from the community! Have a look at our contribution guide for more information on how to get started. If you use Tako, find it useful, or are generally interested in improving Developer Experience on Kubernetes then please let us know by Starring and Watching this repo. Thanks!

Get Involved

Join discussion on our Community channel.

Tako is a community project and we welcome your contributions. To report a bug, suggest an improvement, or request a new feature please open a Github issue. Refer to our contributing guide for more information on how you can help.

Roadmap

See our Roadmap for details about our plans for the project.

License

Copyright (c) 2020-2021 Appvia Ltd

This project is distributed under the Apache License, Version 2.0.

Extension points exported contracts — how you extend this code

Converter (Interface)
Converter is an interface implemented by each converter kind [2 implementers]
pkg/tako/converter/converter.go
Runner (Interface)
Runner an interface used by the EventHandler [1 implementers]
pkg/tako/types.go
Options (FuncType)
Options helps configure running project commands
pkg/tako/types.go
EventHandler (FuncType)
EventHandler is a callback function that handles a runner event
pkg/tako/types.go
K8sExtensionOption (FuncType)
K8sExtensionOption will modify parsing behaviour of the k8s extension.
pkg/tako/config/extopts.go

Core symbols most depended-on inside this repo

String
called by 46
pkg/tako/config/probes.go
newEventError
called by 33
pkg/tako/events.go
NewProjectService
called by 33
pkg/tako/converter/kubernetes/project_service.go
configLabels
called by 31
pkg/tako/converter/kubernetes/utils.go
GetService
called by 28
pkg/tako/envs.go
Error
called by 28
pkg/tako/log/log.go
Map
called by 26
pkg/tako/config/volext.go
DefaultSvcK8sConfig
called by 25
pkg/tako/config/svcext.go

Shape

Function 235
Method 202
Struct 44
TypeAlias 15
FuncType 6
Interface 2

Languages

Go97%
TypeScript3%

Modules by API surface

pkg/tako/converter/kubernetes/utils.go45 symbols
pkg/tako/converter/kubernetes/transform.go44 symbols
pkg/tako/converter/kubernetes/project_service.go34 symbols
pkg/tako/log/log.go31 symbols
pkg/tako/project.go30 symbols
pkg/tako/types.go29 symbols
pkg/tako/config/svcext.go27 symbols
pkg/tako/skaffold.go23 symbols
pkg/tako/manifest.go19 symbols
pkg/tako/envs.go19 symbols
pkg/tako/override.go12 symbols
pkg/tako/config/probes.go12 symbols

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add tako \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact