| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
This Helm chart deploys the Δ-controller operator with its embedded API server for managing view resources.
For development and testing, install with default settings (HTTP mode, no authentication):
helm repo add dcontroller https://l7mp.github.io/dcontroller/
helm repo update
helm install dcontroller dcontroller/dcontrollerThis deploys:
Access the API server:
kubectl -n dcontroller-system port-forward deployment/dcontroller-manager 8443:8443 &
dctl generate-config --http --insecure --user=dev --namespaces="*" \
--server-address=localhost:8443 > /tmp/dcontroller-dev.config
export KUBECONFIG=/tmp/dcontroller-dev.config
kubectl api-resourcesFor production deployment with HTTPS and JWT authentication:
Install with LoadBalancer (development mode first):
kubectl create namespace dcontroller-system
helm install dcontroller dcontroller/dcontroller \
--set apiServer.mode=development \
--set apiServer.service.type=LoadBalancerGet LoadBalancer IP and generate certificate:
# Wait for external IP
kubectl -n dcontroller-system wait --for=jsonpath='{.status.loadBalancer.ingress[0].ip}' \
service/dcontroller-apiserver --timeout=60s
EXTERNAL_IP=$(kubectl -n dcontroller-system get service dcontroller-apiserver \
-o jsonpath='{.status.loadBalancer.ingress[0].ip}')
# Generate certificate with IP SAN
dctl generate-keys --hostname=localhost --hostname=${EXTERNAL_IP}Create TLS secret:
kubectl create secret tls dcontroller-tls \
--cert=apiserver.crt \
--key=apiserver.key \
-n dcontroller-systemUpgrade to production mode:
helm upgrade dcontroller dcontroller/dcontroller \
--set apiServer.mode=production \
--set apiServer.service.type=LoadBalancerGet the LoadBalancer IP:
kubectl get svc dcontroller-apiserver -n dcontroller-systemGenerate user kubeconfig:
# For admin access
dctl generate-config --user=admin --namespaces="*" \
--tls-key-file=apiserver.key \
--server-address=<LOADBALANCER-IP>:8443 > admin.config
# For limited access
cat > viewer-rules.json <<EOF
[
{
"verbs": ["get", "list", "watch"],
"apiGroups": ["*.view.dcontroller.io"],
"resources": ["*"]
}
]
EOF
dctl generate-config --user=viewer --namespaces=production \
--rules-file=viewer-rules.json \
--tls-key-file=apiserver.key \
--server-address=<LOADBALANCER-IP>:8443 > viewer.configFor on-premises or when LoadBalancer is not available:
helm install dcontroller dcontroller/dcontroller \
--set apiServer.mode=production \
--set apiServer.service.type=NodePort \
--set apiServer.service.nodePort=30443Access using <NODE-IP>:30443.
For clusters with Gateway API installed:
helm install dcontroller dcontroller/dcontroller \
--set apiServer.mode=production \
--set apiServer.gateway.enabled=true \
--set apiServer.gateway.gatewayName=my-gateway \
--set apiServer.gateway.gatewayNamespace=gateway-system \
--set apiServer.gateway.hostname=dcontroller-api.example.com| Parameter | Description | Default |
|---|---|---|
| image.name | Docker image name | docker.io/l7mp/dcontroller |
| image.tag | Docker image tag | latest |
| image.pullPolicy | Image pull policy | Always |
| apiServer.enabled | Enable/disable API server | true |
| apiServer.mode | Deployment mode: development or production | development |
| apiServer.port | API server port | 8443 |
| apiServer.tls.enabled | Enable TLS (production mode only) | true |
| apiServer.tls.secretName | Name of TLS secret | dcontroller-tls |
| apiServer.tls.cert | TLS certificate (inline, base64) | "" |
| apiServer.tls.key | TLS private key (inline, base64) | "" |
| apiServer.service.type | Service type: ClusterIP, LoadBalancer, or NodePort | ClusterIP |
| apiServer.service.nodePort | NodePort (when type is NodePort) | nil |
| apiServer.service.annotations | Service annotations | {} |
| apiServer.gateway.enabled | Enable Gateway API HTTPRoute | false |
| apiServer.gateway.gatewayName | Gateway name | "" |
| apiServer.gateway.gatewayNamespace | Gateway namespace | "" |
| apiServer.gateway.hostname | HTTPRoute hostname | dcontroller-api.example.com |
helm install dcontroller dcontroller/dcontroller \
--set apiServer.enabled=falsehelm install dcontroller dcontroller/dcontroller \
--set apiServer.mode=production \
--set-file apiServer.tls.cert=apiserver.crt \
--set-file apiServer.tls.key=apiserver.keyhelm install dcontroller dcontroller/dcontroller \
--set apiServer.mode=production \
--set apiServer.service.type=LoadBalancer \
--set apiServer.service.annotations."service\.beta\.kubernetes\.io/aws-load-balancer-type"="nlb" \
--set apiServer.service.annotations."service\.beta\.kubernetes\.io/aws-load-balancer-scheme"="internal"TLS Certificates: Always use properly signed certificates in production. Self-signed certificates should only be used for development.
Secret Management: Never commit TLS certificates or keys to version control. Use Kubernetes secrets or external secret management systems (e.g., HashiCorp Vault, AWS Secrets Manager).
RBAC: Generate user-specific kubeconfigs with minimal required permissions. Avoid creating admin tokens unless absolutely necessary.
Network Policies: Consider implementing NetworkPolicies to restrict access to the API server service.
Token Expiry: Set appropriate token expiry times when generating kubeconfigs:
dctl generate-config --user=user --expiry=720h ... # 30 daysTo upgrade to a new version:
helm repo update
helm upgrade dcontroller dcontroller/dcontrollerTo change deployment mode (requires restart):
# Create TLS secret first (if switching to production)
kubectl create secret tls dcontroller-tls \
--cert=apiserver.crt --key=apiserver.key -n dcontroller-system
# Upgrade
helm upgrade dcontroller dcontroller/dcontroller \
--set apiServer.mode=production \
--set apiServer.service.type=LoadBalancerCheck logs:
kubectl logs -n dcontroller-system deployment/dcontroller-managerCommon issues:
Check service:
kubectl get svc dcontroller-apiserver -n dcontroller-systemCheck pod status:
kubectl get pods -n dcontroller-systemTest connectivity:
# For ClusterIP
kubectl -n dcontroller-system port-forward svc/dcontroller-apiserver 8443:8443
# For LoadBalancer/NodePort
curl -k https://<IP>:8443/apiVerify token:
export KUBECONFIG=./your.config
dctl get-config --tls-cert-file=apiserver.crtCommon issues:
helm uninstall dcontroller
kubectl delete namespace dcontroller-systemFor issues and questions:
| Back | FazBrowse Home | New Git URL |