Skip to content

Bibz87/kubernetes-example

Repository files navigation

Kubernetes Example

🔗 Table of Contents

❔ Why

After some searching on the internet, I wasn't able to find a complete Kubernetes installation tutorial that included all the features I wanted for my home cluster. I've collected bits and pieces of multiples sources and combined them into a single cluster setup example. This repository is the result of my research, trial and error and personal preferences.

Here's a rough relationship diagram that demonstrates each component's high-level purpose.

graph TD;
    cert-manager[cert-manager];
    dashboard[Kubernetes<br>Dashboard];
    dns[External DNS];
    vault[HashiCorp<br>Vault];
    unsealer[Vault<br>Unsealer];
    cert-manager-- Issue certificates -->vault;
    vault-- Ingress TLS certificate -->cert-manager;
    dashboard-- Ingress TLS certificate -->cert-manager;
    dns-- Exposes ingress<br>externally -->vault;
    dns-- Exposes ingress<br>externally -->dashboard;
    unsealer-- Initialises/Unseals -->vault;

⚠️ Disclaimer

This cluster configuration example is not meant to be used in production. While it can be used as a starting point, there are several changes required to make it stable and secure and these are outside the scope of this project.

🧾 Prerequisites

To implement this cluster example as-is, you'll need:

  • K3s' requirements
  • Helm (was tested with version v3.11.1)
  • Terraform (was tested with version v1.3.9)
  • iSCSI target(s) for remote storage
  • open-iscsi needs to be installed on all nodes

💻 Installation

All cluster components are managed with Helm charts and can be installed mostly independently. For detailed installation instructions, please see the related document

⚙️ Usage

Cluster access is documented here.

By default these services are exposed outside the cluster:

  • HashiCorp Vault (https://vault.domain.local)
  • Kubernetes Dashboard (https://k8s-dashboard.domain.local)

🙋‍♂️ Support & Assistance

  • ❤️ Please review the Code of Conduct for guidelines on ensuring everyone has the best experience interacting with the community.
  • 🙋‍♂️ Take a look at the support document on guidelines for tips on how to ask the right questions.
  • 🐞 For all features/bugs/issues/questions/etc, head over here.

🤝 Contributing

  • ❤️ Please review the Code of Conduct for guidelines on ensuring everyone has the best experience interacting with the community.
  • 📋 Please review the contributing doc for submitting issues/a guide on submitting pull requests and helping out.

📋 References

👋 Acknowledgements

Huge thanks to @lrstanley for letting me use his repository documentation templates!

⚖️ License

Creative Commons Licence

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

Also located here