Application template that satisfies the Kubernetes requirements (Golang)
MIT License
A sample application that meets the requirements for successful execution in Kubernetes.
dep
Kubernetes application must have two health checks for successful execution of the application. Integrated methods help correctly responding to Kubernetes queries.
The twelve-factor app stores config in environment variables. The application has a built-in library for automatic recognition and placement the environment variables in struct
with different types.
Provides a standard interface for a multi level logging. There is ability of choice of a logging library that supports a common interface.
type Logger interface {
Debug(v ...interface{})
Debugf(format string, v ...interface{})
Info(v ...interface{})
Infof(format string, v ...interface{})
Warn(v ...interface{})
Warnf(format string, v ...interface{})
Error(v ...interface{})
Errorf(format string, v ...interface{})
Fatal(v ...interface{})
Fatalf(format string, v ...interface{})
}
Just make your choice
func Run() (err error) {
// log := xlog.New()
// log := logrus.New()
log := stdlog.New(&logger.Config{
Level: logger.LevelDebug,
Time: true,
UTC: true,
})
...
}
The application includes the ability to intercept system signals and transfer control to special methods for graceful shutdown.
type Signals struct {
shutdown []os.Signal
reload []os.Signal
maintenance []os.Signal
}
A series of commands for static cross-compilation of the application for any OS. Building the Docker image and loading it into the remote public/private repository. Optimal and compact docker
image FROM SCRATCH
The command make test
is running set of checks and tests:
Prepared set of basic templates for application deployment in Kubernetes. Only one command make deploy
is loading the application into Kubernetes. Just wait for the successful result and the application is ready to go.
Generating certificates to create a secure SSL connection in the Go
client. Attaching the certificate to the Docker image.
FROM scratch
ENV K8SAPP_LOCAL_HOST 0.0.0.0
ENV K8SAPP_LOCAL_PORT 8080
ENV K8SAPP_LOG_LEVEL 0
EXPOSE $K8SAPP_LOCAL_PORT
COPY certs /etc/ssl/certs/
COPY bin/linux/k8sapp /
CMD ["/k8sapp"]
To work correctly with the dependencies we should choose the package manager. dep is a prototype dependency management tool for Go.
Using a special script to increase the release version
./bumper.sh
Current version 0.4.0.
Please enter bumped version [0.4.1]:
See the contribution guidelines for information on how to participate in the Kubernetes application project by submitting pull requests or issues.