Kedify Agent
The Kedify Agent is responsible for establishing a secure connection between your Kubernetes cluster and the Kedify platform. It handles the installation and lifecycle management of KEDA and the HTTP Scaler on your clusters, providing robust scaling capabilities and telemetry insights. The Kedify Agent can manage a large number of installations across multiple clusters using secure gRPC connections to communicate with the Kedify Dashboard, ensuring the seamless collection and display of telemetry data.
Key functionalities of the Kedify Agent include:
-
Installation Management: The agent manages the installation and versioning of KEDA and the HTTP Scaler using the Helm package manager. It ensures that the correct versions of these components are deployed and maintained across your clusters.
-
Telemetry Collection: The agent includes a telemetry collector that scrapes metrics from both KEDA and the HTTP Scaler. This telemetry data provides users with valuable insights into their configurations and scaling behaviors, which are displayed in the Kedify Dashboard.
-
Secure Communication: The Kedify Agent establishes a secure, outbound gRPC connection to the Kedify Service, ensuring that all data transmitted between your clusters and the Kedify platform is secure.
-
Custom Resource Management: The agent manages Kedify custom resources, providing autowiring and comprehensive management of the HTTP Scaler. For more information on custom resources, refer to the Kedify Custom Resource Definitions.
The Kedify Agent can be installed through helm chart or using a single, unique kubectl apply command generated and provided by Kedify via the dashboard. This command sets up the agent with all necessary configurations to connect to the Kedify platform and manage your KEDA and HTTP Scaler installations efficiently.
The Kedify Agent relies on the Helm package manager to manage and install versioned KEDA images.
Configuration
Section titled “Configuration”Full set of configuration options is available in Kedify Agent chart values. Here are some notable options:
-
agent.features.podResourceProfilesEnabled: Enables the controller forPodResourceProfileto be started by Kedify Agent. The feature is further described on its own docs. By default, it istrue. -
agent.features.prpRequiresAnnotatedPods: If enabled, the controller forPodResourceProfilerequires the target pods (where container resources should be modified) to have annotationprp.kedify.io/reconcile=trueon them. This is a performance optimization so that more pod events can be ignored by the controller. Default:true. -
agent.kedifyProxy.clusterWide: Enables the cluster-wide deployment ofkedify-proxy, shared across all namespaces in the cluster. This variable should be set totrueto configure a single instance ofkedify-proxyin the KEDA installation namespace for centralized scaling. The cluster-wide setup is supported only for configurations using Istio’s VirtualService. For more details, see Kedify Proxy. -
agent.kedifyProxy.globalValues: Set of options to configurekedify-proxydeployments. See Kedify Proxy helm chart for more details. This can also be fine-tuned per namespace throughagent.kedifyProxy.namespacedValues.${NAMESPACE}.
API Key
Section titled “API Key”The Kedify Agent uses an API key to authenticate with the Kedify platform. This key is generated by the Kedify platform and provided to the agent during installation. There could be multiple valid API keys defined per Organization.
The API key can be rotated in the Kedify Dashboard in the Organization -> API Keys section. When rotated, it is the responsibility of the user to update the API key in the Kedify Agent configuration. The key is stored in a Kubernetes Secret as a base64 encoded string.
First, run the new API key through the base64 function:
key="kfy_971fac53610186bc26891e08b73076c297552073f57c4c6fa6c563c6821d4384"echo -n "$key" | base64 -w 0 ; echo ""a2Z5Xzk3MWZhYzUzNjEwMTg2YmMyNjg5MWUwOGI3MzA3NmMyOTc1NTIwNzNmNTdjNGM2ZmE2YzU2M2M2ODIxZDQzODQ=Then, update the API key in the Secret. Either in your gitops repository or directly in the cluster:
kubectl edit secret kedify-agent -n kedaapiVersion: v1kind: Secrettype: Opaquemetadata: name: kedify-agent namespace: kedadata: apikey: a2Z5Xzk3MWZhYzUzNjEwMTg2YmMyNjg5MWUwOGI3MzA3NmMyOTc1NTIwNzNmNTdjNGM2ZmE2YzU2M2M2ODIxZDQzODQ=