TL;DR: Learn how to deploy the Syncfusion® Spreadsheet Server on AWS EKS using Docker to enable scalable open/save operations for React-based spreadsheet apps. You’ll learn how to configure your environment, deploy the server using Kubernetes manifests, expose it via AWS Load Balancer, and connect it to your React client using RESTful endpoints.
Running spreadsheets in production isn’t just about UI; it’s about backend power. Amazon EKS (Elastic Kubernetes Service) provides a managed Kubernetes environment that simplifies scaling and operating containerized workloads.
This guide walks developers through deploying the Syncfusion® Spreadsheet Server, a containerized ASP.NET Core backend, onto an EKS cluster using Docker and Kubernetes. By the end, your React (or other JavaScript ) application will handle open/save operations with a high-availability backend via RESTful endpoints.
How the Syncfusion® Spreadsheet server API works
Syncfusion® supplies a pre-built ASP.NET Core service to handle the backend processing for spreadsheet operations. These tasks are exposed via /api/spreadsheet/open
and /api/spreadsheet/save RESTful
endpoints. Syncfusion® maintains an official Docker image on Docker Hub, making deployment straightforward.
Here’s how the two primary operations function:
- When a user opens an Excel file using openUrl:
- The client sends an Excel file ( .xlsx, .xls, .xlsm, .xlsb, .csv ) to the server.
- The service receives the file, processes its contents, and converts it into a specific JSON format that the Spreadsheet component can render.
- This JSON is sent back to the client, allowing the spreadsheet to be displayed in the browser.
- When a user saves or exports a Spreadsheet using saveUrl:
- The client component sends the current state of the workbook to the server as JSON data.
- The service receives this JSON, reconstructs the workbook, and converts it into the desired file format ( e.g., .xlsx, .xls, .pdf, .csv ).
- The final file is then streamed back to the user for download.
Note: For more details, please refer to the blog.
Why use Amazon EKS?
Amazon EKS offers a fully managed Kubernetes control plane, which eliminates the operational overhead of installing, operating, or maintaining your master nodes.
Key benefits
- High availability and automated load balancing: EKS automatically manages the control plane across multiple AWS availability zones for resilience. It also seamlessly integrates with AWS load balancers to automate the distribution of traffic to your application pods, ensuring your service remains available and responsive under load.
- Seamless AWS integration: It connects natively with other essential services like IAM for secure authentication, Amazon VPC for network isolation, and CloudWatch for logging and monitoring.
- Automated and secure: AWS handles security patching, cluster upgrades, and scaling, allowing your team to focus on building the application rather than managing infrastructure.
- Community compatible: EKS is fully compatible with the standard Kubernetes ecosystem, so you can use all the familiar tools like kubectl, Helm, and other community add-ons without modification.
Deployment architecture overview
The deployment consists of a Kubernetes cluster running the Docker container and a service of type LoadBalancer to expose it externally. Your React client communicates with the backend using the openUrl and saveUrl properties pointing to the Service’s endpoint. You can scale the number of replicas in the deployment to handle load and ensure high availability.
React Client (via openUrl/saveUrl) ──> AWS Load Balancer ──> EKS Deployment (Spreadsheet Server Pod)
Prerequisites
Before you begin, ensure the following:
- AWS CLI and kubectl are both installed and configured.
- You have access to an existing EKS cluster, or you can create one via the AWS console or CLI.
- Docker is installed, especially if you plan to build and push a custom image.
Step-by-step deployment guide
Follow the steps below to deploy the Spreadsheet Docker image to the AWS EKS cluster.
Step 1: Configure your environment
- Open a terminal and authenticate to AWS:
aws configure # enter your Access Key, Secret Key, region, and output format (e.g., json)
- Update your kubectl context to point to the EKS cluster:
aws eks update-kubeconfig --region <region> --name <cluster-name>
- After updating the kubeconfig with the EKS cluster, you can verify the node’s state:
kubectl get nodes # verify that your cluster nodes are ready
Step 2: Create the deployment
Create a file named spreadsheet-deployment.yaml defining a deployment for the Syncfusion® container. This example uses the latest tag from Docker Hub:
apiVersion: apps/v1
kind: Deployment
metadata:
name: spreadsheet-server
labels:
app: spreadsheet-server
spec:
replicas: 1 # Increase to 2 or more for higher availability
selector:
matchLabels:
app: spreadsheet-server
template:
metadata:
labels:
app: spreadsheet-server
spec:
containers:
- name: spreadsheet-server
image: syncfusion/spreadsheet-server:latest
ports:
- containerPort: 8080
env:
- name: SYNCFUSION_LICENSE_KEY
value: "YOUR_LICENSE_KEY"
Note: If you build your image, push it to Docker Hub or AWS ECR, and update the image: field accordingly.
Step 3: Expose the service
Create a spreadsheet-service.yaml to define a Service of type LoadBalancer that forwards traffic to the container. Customize the external port (5000) as needed; the internal targetPort should remain 8080 because the container listens on that port.
apiVersion: v1
kind: Service
metadata:
name: spreadsheet-server-service
spec:
selector:
app: spreadsheet-server
type: LoadBalancer
ports:
- protocol: TCP
port: 5000 # External port exposed by the load balancer
targetPort: 8080 # Internal container port
Step 4: Deploy to EKS
Apply the manifests:
kubectl apply -f spreadsheet-deployment.yaml
kubectl apply -f spreadsheet-service.yaml
Use the kubectl get pods command to monitor pod status. To retrieve the external address, run:
kubectl get svc spreadsheet-server-service
Use https:// in your URLs only if your AWS Load Balancer is configured for TLS/SSL. You can provision and attach a certificate using AWS Certificate Manager.
Step 5: Configure the React client
Once the Service reports an external address (e.g., a1b2c3d4e5f6-1234567890.us-east-1.elb.amazonaws.com), update the openUrl and saveUrl properties of your React Spreadsheet component:
<SpreadsheetComponent
openUrl={`http://${serviceDNS}:5000/api/spreadsheet/open`}
saveUrl={`http://${serviceDNS}:5000/api/spreadsheet/save`}/>
Step 6: Scaling and customization
-
Scale replicas: To handle a higher workload, you can scale your deployment by increasing the replicas count in your spreadsheet-deployment.yaml file and then run
kubectl apply -f spreadsheet-deployment.yaml
to apply the changes. Kubernetes will automatically manage the distribution of traffic across the pods. - Resource limits: Define resources.requests, and resources.limits in the container spec to allocate CPU and memory appropriately.
- Environment variables: In addition to SYNCFUSION_LICENSE_KEY, you can set other configuration keys (e.g., culture) using the env: section in the deployment manifest without modifying the docker image.
Conclusion
By deploying Syncfusion® Spreadsheet Server to Amazon EKS, you unlock a scalable backend for your React spreadsheet apps. EKS abstracts away Kubernetes control‑plane management, allowing you to focus on your application. With Docker and Kubernetes, you get resilience, automation, and seamless integration with AWS services.
Kubernetes handles replica management, rolling updates, and fault recovery. This setup lets you seamlessly serve open and save requests from your client-side Spreadsheet while leveraging AWS’s high availability, security, and integration ecosystem.
As your usage grows, scale the deployment or integrate with additional AWS services, such as IAM roles, secrets management, to meet your production needs.
Syncfusion® customers with an active license can download the latest release of Essential Studio® from the license and downloads page. New users can start a 30-day free trial to explore the latest features.
Need help? Reach out through our support forum, support portal, or feedback portal. We’re here to help you build modern, feature-rich applications with confidence and ease.
Related Blogs
- How to Deploy Syncfusion Spreadsheet Docker Image with ASP.NET Core 8.0
- Host Open and Save Services for JavaScript Spreadsheet with ASP.NET Core and Docker
- Simple Steps to Validate Data in a JavaScript Spreadsheet
- Introducing JavaScript Spreadsheet in Essential JS 2
This article was originally published at Syncfusion.com.