Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create a Kubernetes deployment #226

Closed
1 of 5 tasks
displague opened this issue Jul 26, 2020 · 7 comments
Closed
1 of 5 tasks

Create a Kubernetes deployment #226

displague opened this issue Jul 26, 2020 · 7 comments
Labels
kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.

Comments

@displague
Copy link
Member

Expected Behaviour

Tinkerbell should be installable via kubectl apply ... or helm install ....

Current Behaviour

Tinkerbell is not installable in Kubernetes.

Possible Solution

Create manifests for Kubernetes installations.

This requires that images are published.

This requires that Kubernetes manifests:

  • Exist for kubectl apply

And these manifests have optionally:

  • Have been adapted for Kustomize patches
  • Have been adapted to Helm install and publishing

Your Environment

Kubernetes 😄

@displague
Copy link
Member Author

I converted the docker-compose environment from https://github.com/tinkerbell/tink/tree/master/deploy into an initial set of manifests: https://github.com/displague/tink-charts.

These currently lack any documentation on the configuration steps necessary to make them usable, because I am still tinkering with them.

I am using this on Raspberry Pis. When installing these manifests, I ran into the lack of multi-arch builds for the various services.

@displague
Copy link
Member Author

displague commented Jul 27, 2020

@matoszz directed me to https://github.com/tinkerbell/tink/wiki/RFC-%233-Kubernetes-Support which covers the changes needed to get Tinkerbell running from Kubernetes from the perspective of a CRD controller handling the data.

This issue was opened with the expectation of using CSI or local-path volumes to persist data. I think this is a shorter path to running Tinkerbell within Kubernetes. A CRD based approach would overcome the persistent data hurdles (especially in the case of running K3s+Tinkerbell on a single Raspberry Pi node 😄 ).

Such a change could potentially remove the need for PBNJ and PostgreSQL. The other services would then use Kubernetes resources as the source of truth. The controller would effectively replace PBNJ and Kubernetes resources would replace PostgreSQL.

Without a bespoke API, tink-cli could become a Kubectl plugin that affects Kubernetes CRDs.

The CRDs that would be needed would map to the existing database tables (and tink-cli commands):

  • Hardware
  • Workflow
  • Template

@displague
Copy link
Member Author

@detiber, it sounds like @Cbkhare is going to be exploring this topic more with helm charts to deploy Tink in Kubernetes as one avenue to provide resiliency (tinkerbell/proposals#10).

I was hoping you might be able to share some of your progress and thinking with Kind (https://github.com/detiber/tink/tree/kindDev) here.

@displague
Copy link
Member Author

#364 offers charts that may check some of the boxes on this issue.

@detiber
Copy link
Contributor

detiber commented Nov 12, 2020

I created https://github.com/tinkerbell/k8s-sandbox as a place that we could use for Kubernetes related work.

@invidian
Copy link
Contributor

See also #335

@tstromberg tstromberg added kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. labels Aug 27, 2021
@displague
Copy link
Member Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.
Projects
None yet
Development

No branches or pull requests

4 participants