Prerequisites

Required prerequisites for deploying HobbyFarm.

The following prerequisites are required for installing HobbyFarm. Please ensure that all prerequisites are met before proceeding with the installation. Failure to do so may result in an unsuccessful installation.

Helm

Helm v3 is required for deploying HobbyFarm. Please refer to the Helm documentation for instructions on installing Helm.

Kubernetes

HobbyFarm is a Kubernetes-native application, using custom resources and controllers to manage the application. To run HobbyFarm, a Kubernetes cluster with an installed ingress controller is required. The following list shows the supported Kubernetes versions for each HobbyFarm version.

HobbyFarm ReleaseRelease DateK8s Version (up to)
hobbyfarm-3.0.1July 2023v1.25.x
hobbyfarm-2.0.9June 2023v1.24.x
hobbyfarm-1.0.0January 2022v1.23.x

Role-Based Access Control (RBAC)

HobbyFarm requires an account with the following permissions for installation. For simplicity, the use of an account with cluster-admin role binding is recommended.

API GroupResourceVerbs
apiextensions.k8s.ioCustomResourceDefinitionsGet, Create, Update
appsDeploymentsGet, Create, Update, Delete
coreConfigMaps, Secrets, ServicesGet, Create, Update, Delete
networking.k8s.ioIngressesGet, Create, Update, Delete
rbac.authorization.k8s.ioClusterRoles, ClusterRoleBindings, Roles, RoleBindingsGet, Create, Update, Delete

ClusterRole Manifest

If an account is not available with full cluster access, or a cluster-admin role does not exist, the following ClusterRole manifest can be created and bound to an account.

NOTE: The following manifest maps to the permissions listed in the table above.

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
    name: hobbyfarm-install
rules:
    - apiGroups: ["apiextensions.k8s.io"]
      resources: ["customresourcedefinitions"]
      verbs: ["get", "create", "update"]
    - apiGroups: ["apps"]
      resources: ["deployments"]
      verbs: ["get", "create", "update", "delete"]
    - apiGroups: [""]
      resources: ["configmaps", "secrets", "services"]
      verbs: ["get", "create", "update", "delete"]
    - apiGroups: ["networking.k8s.io"]
      resources: ["ingresses"]
      verbs: ["get", "create", "update", "delete"]
    - apiGroups: ["rbac.authorization.k8s.io"]
      resources: ["clusterroles", "clusterrolebindings", "roles", "rolebindings"]
      verbs: ["get", "create", "update", "delete"]