This example shows how to bind lambda functions to a service. A lambda function connects to a Redis instance and retrieves statistics for this service.
The example covers these tasks:
- Create a Redis instance.
- Create a function using Kubeless CLI.
- Bind the function to the Redis Service.
- Call the lambda function.
- Install the Kubeless CLI as described in the Kubeless installation guide.
Apply a battery of yaml
files to run the example.
-
Export your Namespace as a variable by replacing the
{namespace}
placeholder in the following command and running it:export K8S_NAMESPACE="{namespace}" export KYMA_EXAMPLE_DOMAIN="{kyma domain}"
-
Create a Redis instance:
kubectl apply -f deployment/redis-instance.yaml -n $K8S_NAMESPACE
-
Ensure that the Redis instance is provisioned:
kubectl get serviceinstance/redis-instance -o jsonpath='{ .status.conditions[0].reason }' -n $K8S_NAMESPACE
-
Create a Redis client through a lambda function, along with the ServiceBinding, and the ServiceBindingUsage custom resource:
kubectl apply -f deployment/lambda-function.yaml -n $K8S_NAMESPACE
-
Ensure that the Redis ServiceBinding works:
kubectl get servicebinding/redis-instance-binding -o jsonpath='{ .status.conditions[0].reason }' -n $K8S_NAMESPACE
-
Verify that the lambda function is ready:
kubeless function ls redis-client -n $K8S_NAMESPACE
-
Trigger the function. The information and statistics about the Redis server appear in the logs of the function Pod.
curl -ik https://redis-client.$KYMA_EXAMPLE_DOMAIN
Use this command to remove the example and all its resources from your Kyma cluster:
kubectl delete all,api,function,servicebinding,serviceinstance,servicebindingusage -l example=service-binding -n $K8S_NAMESPACE
Make sure the password is injected correctly into the Pod. The password should match the one in the redis-instance.yaml
kubectl exec -n $K8S_NAMESPACE -it $(kubectl get po -n $K8S_NAMESPACE -l example=service-binding-lambda --no-headers | awk '{print $1}') bash
env | grep -i redis_password