Customize your deployment
How to further customise your UltiHash Self-Hosted deployment via Kubernetes and Helm
The Helm chart used during installation is flexible and allows for various configurations to fine-tune the UltiHash setup according to your specific needs. Below are key areas where you might want to make changes:
Ingress configuration
Purpose: Configure how the UltiHash cluster is accessed externally.
Example: Set up Ingress with specific annotations and TLS configuration.
entrypoint: ingress: host: <your_domain_name> annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/proxy-body-size: "0" tls: - hosts: - <your_domain_name> secretName: <tls_secret>
Recommendation: Ensure the ingress controller is configured for your environment (e.g., Nginx) and that TLS is used for secure communication.
Resource allocation
Purpose: Adjust the resource allocations for service replicas.
Example: Customize resource requests and limits for critical services.
etcd: resources: limits: memory: "2Gi" cpu: "500m" entrypoint: resources: limits: memory: "16Gi" cpu: "8" database: primary: resources: limits: memory: "16Gi" cpu: "8" deduplicator: resources: limits: memory: "64Gi" cpu: "16" storage: resources: limits: memory: "32Gi" cpu: "16"
Recommendation: Adjust resources to balance performance with cost.
You also might need to adjust Kubernetes-specific settings to optimize the UltiHash deployment:
Node affinity and tolerations
Purpose: Control where pods are scheduled within your Kubernetes cluster.
Example: Use node affinity to keep storage pods on different nodes.
storage: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: role operator: In values: - storage topologyKey: kubernetes.io/hostname
Recommendation: Use affinity rules to optimize performance and ensure critical services run on appropriate nodes.
Secret management
Purpose: Securely manage and rotate Kubernetes secrets used by the UltiHash cluster.
Example: Rotate a Kubernetes secret without causing downtime:
kubectl delete secret docker-registry registry-credential kubectl create secret docker-registry registry-credentials \\\\ --docker-server='registry.ultihash.io' \\\\ --docker-username='<new_registry_username>' \\\\ --docker-password='<new_registry_password>' # Gracefully restart UltiHash services to apply the changes helm upgrade <release_name> oci://registry.ultihash.io/stable/ultihash-cluster -n <namespace> --values.yaml --force
Recommendation: Rotate secrets periodically and implement alerts for expired or compromised secrets.
Last updated
Was this helpful?