How to Deploy Vue DOCX Editor Docker Image on Amazon Kubernetes
27 Aug 20263 minutes to read
Prerequisites
-
AWS Account: Have an Amazon account. -
AWS CLI: Install the AWS Command Line Interface (CLI) on your local machine. -
Kubectl: Install the Kubernetes command-line tool kubectl on your local machine. -
Docker: Install Docker on your local machine. -
Word Processor Docker Image: Have a Docker image of the Word Processor server ready to deploy.
To deploy the Word Processor server docker image, you need to follow the process below.
- Push Docker Image to Registry (Amazon Elastic Registry)
- Deploy Docker Image on Amazon Kubernetes Service
Let us briefly discuss each process.
Push the Docker image to the Amazon Elastic Registry
Step 1: Build a Docker Image for the Word Processor Server Application using the image name syncfusion/word-processor-server
docker build -t <your-image-name> .
Step 2: Create a private repository named ‘documenteditor’ in Amazon Elastic Container Registry (ECR) using the AWS CLI or AWS Console.
aws ecr create-repository --repository-name <repository-name>
Step 3: Tag the image to push to ECR
docker tag <your-image-name>:latest <your_ECR_registry_URI>/<your_repository_name>:latest
Refer to the following example to tag the image.
docker tag syncfusion/word-processor-server:latest 123456.dkr.ecr.us-east-1.amazonaws.com/documenteditor:latest
Get the ECR registry URI from AWS console or using the below AWS CLI command.
aws ecr describe-repositories --repository-names <repository-name> --query 'repositories[*].repositoryUri' --output text
Step 4: Login to the ECR registry using the AWS CLI to push the docker image
aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <your_ECR_registry_URI>
Replace
Step 5: Push the tagged image to ECR
docker push <your_ECR_registry_URI>/<your_image_name>:latest
Deploy Docker Image on Amazon Kubernetes Service
Follow the below steps to deploy the Docker image from the Amazon Elastic Registry (ECR) to Amazon Kubernetes Services (EKS).
Step 1: Create an Amazon EKS cluster using the AWS Console.
Step 2: Authenticate with AWS ECR.
You need to authenticate with the AWS ECR to pull the image from the registry.
aws ecr get-login-password --region <your-region> | docker login --username AWS --password-stdin <your-aws-account-id>.dkr.ecr.<your-region>.amazonaws.com
Configure Kubernetes to communicate with the cluster.
Step 3: : Configure Kubernetes to Communicate with the Cluster
aws eks --region <region> update-kubeconfig --name <cluster-name>
Step 4: Tag the Docker Image to the created cluster
docker tag <your-aws-account-id>.dkr.ecr.<your-region>.amazonaws.com/<repository-name>:<tag> <your-eks-cluster-id>.dkr.ecr.<your-region>.amazonaws.com/<repository-name>:<tag>
Refer to the following example
docker tag 12345.dkr.ecr.us-east-1.amazonaws.com/documenteditor:latest 98765ABCD.dkr.ecr.us-east-1.amazonaws.com/documenteditor:latest
In this command:
-
should be replaced with your EKS cluster ID, which is the base part of your EKS cluster endpoint (e.g., abcd1234). -
should be replaced with your AWS region.
Step 5: To create a Kubernetes deployment, write a Kubernetes manifest.
i. Create a Kubernetes Deployment manifest (deployment.yaml) for your application. Specify the Docker image location.
apiVersion: apps/v1
kind: Deployment
metadata:
name: ```your-deployment```
spec:
replicas: 3
selector:
matchLabels:
app: ```your-app```
template:
metadata:
labels:
app: ```your-app```
spec:
containers:
- name: your-container
image: ```<account-id>.dkr.ecr.<region>.amazonaws.com/your-repository-name:tag```
ports:
- containerPort: 80ii. Apply the Deployment manifest to create the deployment in your EKS cluster.
kubectl apply -f deployment.yaml
iii. Use port forwarding to access the Word Processor Server application locally and verify its functionality.
kubectl port-forward pod-name local-port:container-port
Get the pod names in AWS Console or using the below AWS CLI command.
kubectl get pods
Finally, you can access the sample at localhost: http://<your-ip>/api/documenteditor/