There are many ways to install and manage Kubernetes applications:
kubectl
ScriptsCloud native administrators are forced to learn one or all of these
since there is no agreement in the industry as to any standard.
Moreover, the industry is full of overly-hyped frameworks and “package
managers” vying for dominance while failing to meet even minimal
requirements for air-gapped security and sustainability. This situation,
brought about by attempting to force imperative IT business processes
into declarative “solutions,” has created chaos and a climate of
conflict and shame for those refusing to use the Kubernetes application
management “standards” when, in fact, the safest and most sustainable
approach is to keep things simple: just use Kubernetes resource files
and kubectl
and follow a conventional methodology.
Amidst the chaos, a common set of admin practices seems mandatory so that each application is looked after in a way that is implementation agnostic (like you would do with an interface when programming). One does not care how these practices are fulfilled, only that they are. Some can be scripted, some are a matter of documentation, but all are required for any application to makes it into your production cluster. One could say that every application can implement its own methods for the same operations. Operations are the actions taken by any cloud native admin, or by a script on behalf of the admin.
To be clear, this is not yet-another-abstraction (even though it can be implemented as such). It’s just a matter of agreeing on what everyone on the admin team should do with respect to all Kubernetes applications while allowing each its own specificity.
The K8SAPP contract simply asks that all team members agree to the following:
k8sapps
)v0.1.1
)k8sapp-
)k8sapp.yaml
)nfd.yaml
)helm/some-chart-0.8.tgz
, helm/index.yaml
)##
in README.md):
values.yaml
)k8sapps
)💡 Consider creating a
template-k8sapp
for your organization in your Enterprise GitHub so that people can simply clone/copy it and fill it in. This takes a lot of the busy administrative work out of the process.
Vendoring is the process of saving external dependencies with one’s own
code. K8SAPP leverages the vendoring approach to preserve Helm charts and
other YAML resource files that originate outside of the project.
Acquiring these external resources can be included in a fetch
action
or simply documented in the README.md when an Internet connection cannot
be assumed.
Related:
Tags:
#k8s #cloudnative #cloud #devops #k8sapp