Managing and integrating your Homelab on Kubernetes.
The goal of kertical is to make it easy to manage and integrate your various environments or services that are not in the cluster through kubernetes, and of course to enhance the ability of kubernetes to provide services outside the cluster through the controllers in kertical.
This tutorial will detail how to configure and install the kertical to your cluster.
Caution
Currently, kertical is in the development phase, so the design and implementation logic may change frequently. If you are using the program or are interested in it, feel free to ask any suggestions or questions.
If you have Helm, you can deploy the mobius with the following command:
helm upgrade --install kertical-manager kertical-manager \
--repo https://wjiec.github.io/kertical \
--namespace kertical-system --create-namespace
It will install the kertical in the kertical-system namespace, creating that namespace if it doesn't already exist.
If you can't get the image directly through DockerHub, you can use Aliyun's image repository by adding the following parameter to the installation command:
--set global.imageRegistry=registry.cn-hangzhou.aliyuncs.com
kertical implements the management and integration of various types of resources inside and outside the cluster by means of customized resources (CRD), mainly providing the following kinds.
As the name suggests, ExternalProxy creates a unified abstraction for out-of-cluster services, allowing us to create Services or Ingresses for these out-of-cluster content, just like in-cluster resources.
For example, I have some standalone services on my Homelab (TrueNAS, OpenWrt, ...), and I'd like to provide HTTPS ingress for those services via cert-manager or use names within the cluster to access specific services.
We can accomplish what we've said above by doing so in the following way in this manifest file:
kind: ExternalProxy
apiVersion: networking.kertical.com/v1alpha1
metadata:
name: openwrt
spec:
backends:
- addresses:
- ip: 172.16.1.1
ports:
- name: http
port: 80
ingress:
rules:
- host: openwrt.kertical.com
tls:
- hosts:
- openwrt.kertical.com
secretName: star-kertical-com
---
kind: ExternalProxy
apiVersion: networking.kertical.com/v1alpha1
metadata:
name: truenas
spec:
backends:
- addresses:
- ip: 172.16.1.8
ports:
- name: api
port: 80
service:
metadata:
name: truenas-api
labels:
app.kubernetes.io/name: truenas
More details can be found at kubectl explain externalproxies --api-version=networking.kertical.com/v1alpha1
.
We warmly welcome your participation in the development of kertical.
NOTE: Run make help
for more information on all potential make
targets
More information can be found via the Kubebuilder Documentation
- go version v1.24.0+
- docker version 17.03+.
- Access to a Kubernetes v1.21.0+ cluster.
kertical is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.