4.3 KiB
Redis and Actions
Actions can use Redis in two ways:
- For state persistence and restoration
- For enabling pub-sub async style message delivery
Creating a Redis Store
Actions can use any Redis instance - containerized, running on your local dev machine, or a managed cloud service. If you already have a Redis store, move on to the Configuration section.
Creating an Azure Managed Redis Cache
Note: this approach requires having an Azure Subscription.
- Open this link to start the Azure Redis Cache creation flow. Log in if necessary.
- Fill out necessary information and check the "Unblock port 6379" box, which will allow us to persist state without SSL.
- Click "Create" to kickoff deployment of your Redis instance.
- Once your instance is created, you'll need to grab your access key. Navigate to "Access Keys" under "Settings" and copy your key.
- Finally, we need to add our key and our host to a
redis.yaml
file that Actions can apply to our cluster. If you're running a sample, you'll add the host and key to the providedredis.yaml
. If you're creating a project from the ground up, you'll create aredis.yaml
file as specified in Configuration. Set theredisHost
key toactions-redis.redis.cache.windows.net:6379
and theredisPassword
key to the key you copied in step 4.
Creating a Redis Cache in your Kubernetes Cluster using Helm
We can use Helm to quickly create a Redis instance in our Kubernetes cluster. This approach requires Installing Helm.
-
Install Redis into your cluster:
helm install stable/redis --name redis --set image.tag=5.0.5-debian-9-r104
. Note that we're explicitly setting an image tag to get a version greater than 5, which is what Actions' pub-sub functionality requires. If you're intending on using Redis as just a state store (and not for pub-sub), you do not have to set the image version. -
Run
kubectl get pods
to see the Redis containers now running in your cluster. -
Run
kubectl get svc
and copy the cluster IP of yourredis-master
. Add this IP as theredisHost
in your redis.yaml file, followed by ":6379". For example:redisHost: "10.0.125.130:6379"
-
Next, we'll get our Redis password, which is slightly different depending on the OS we're using:
-
Windows: Run
kubectl get secret --namespace default redis -o jsonpath="{.data.redis-password}" > encoded.b64
, which will create a file with your encoded password. Next, runcertutil -decode encoded.b64 password.txt
, which will put your redis password in a text file calledpassword.txt
. Copy the password and delete the two files. -
Linux/MacOS: Run
kubectl get secret --namespace default redis -o jsonpath="{.data.redis-password}" | base64 --decode
and copy the outputted password.
Add this password as the
redisPassword
value in your redis.yaml file. For example:redisPassword: "lhDOkwTlp0"
-
Other ways to Create a Redis Cache
Configuration
Actions can use Redis as a statestore
component (for state persistence and retrieval) or as a messagebus
component (for pub-sub).
Configuring Redis for State Persistence and Retrieval
Create a file called redis.yaml, and paste the following:
apiVersion: actions.io/v1alpha1
kind: Component
metadata:
name: statestore
spec:
type: state.redis
connectionInfo:
redisHost: "YOUR_REDIS_HOST_HERE"
redisPassword: "YOUR_REDIS_KEY_HERE"
Configuring Redis for Pub/Sub
Create a file called redis.yaml, and paste the following:
apiVersion: actions.io/v1alpha1
kind: Component
metadata:
name: messagebus
spec:
type: pubsub.redis
connectionInfo:
redisHost: "YOUR_REDIS_HOST_HERE"
redisPassword: "YOUR_REDIS_PASSWORD_HERE"
Apply the configuration
Kubernetes
kubectl apply -f redis.yaml
Standalone
By default the Actions CLI creates a local Redis instance when you run actions init
. However, if you want to configure a different Redis instance, create a directory named eventsources
in the root path of your Action binary and then copy your redis.yaml
into that directory.