Event Engine allows workshop attendees to self-provision themselves into workshop events. This avoids the need to pre-provision the full registration list of users when a smaller number actually attend the event. Event Engine was inspired by AWS Event Engine.
db.createUser(
{
user: "<user>",
pwd: "<password>",
roles: [ { role: "readWrite", db: "eventengine" } ]
}
)
Create a VPC with two private and two public subnets. The subnets should be in different availability zones. The private subnets should not have a route to the internet.
eksctl create cluster \
--name eventengine-cluster \
--vpc-private-subnets=subnet-05146055a8cdc8ebe,subnet-0d88082c94fb7b221 \
--node-private-networking \
--profile AdministratorAccess-961341558131
aws eks --region <region> update-kubeconfig --name <cluster-name> --profile <profile>
eg. aws eks --region us-west-2 update-kubeconfig --name eventengine-cluster --profile AdministratorAccess-961341558131
kubectl create namespace eventengine
kubectl apply -f cluster-admin-role-sa.yaml --namespace=eventengine
- Build the Docker image.
docker build -t eventengine/backend:<tag> .
ex.
docker build -t eventengine/backend:1 .
docker buildx build --platform linux/amd64 -t eventengine/backend:1 . (mac->eks)
- Run the Docker image locally.
docker run -it --rm -p 8080:8080 -e AWS_ACCESS_KEY_ID=x -e AWS_SECRET_ACCESS_KEY=x -e eventengine_db_region=<region> \
-e eventengine_def_instance_url=<LW instance url> -e eventengine_def_access_key_id=<LW access key id> \
-e eventengine_def_secret_key=<LW secert key> -e eventengine_serverPort=8080 -e eventengine_db_disable_ssl=true \
--name my-backend-service eventengine/backend:<tag>
ex.
docker run -it --rm -p 8080:8080 -e AWS_ACCESS_KEY_ID=x -e AWS_SECRET_ACCESS_KEY=x -e eventengine_db_region=us-west-2 \
-e eventengine_serverPort=8080 -e eventengine_db_disable_ssl=true -e eventengine_def_instance_url=partner-demo.lacework.net \
-e eventengine_def_access_key_id=xxx -e eventengine_def_secret_key=xxx --name my-backend-service eventengine/backend:1
- Push the image to ECR.
aws ecr get-login-password --region <region> --profile <profile> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
docker tag eventengine/backend:<tag> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/eventengine/backend:<tag>
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/eventengine/backend:<tag>
ex.
aws ecr get-login-password --region us-west-2 --profile AdministratorAccess-961341558131 | docker login --username AWS --password-stdin 961341558131.dkr.ecr.us-west-2.amazonaws.com
docker tag eventengine/backend:1 961341558131.dkr.ecr.us-west-2.amazonaws.com/eventengine/backend:1
docker tag eventengine/backend:1 961341558131.dkr.ecr.us-west-2.amazonaws.com/eventengine/backend:latest
docker push -a 961341558131.dkr.ecr.us-west-2.amazonaws.com/eventengine/backend
kubectl create secret generic mongocreds\
--from-literal=usr='xxx' \
--from-literal=pwd='xxxx' \
--from-literal=host='xxxx' \
--namespace=eventengine
kubectl create secret generic defaultinstance \
--from-literal=defaultLwUrl=partner-demo.lacework.net \
--from-literal=defaultLwAccessKeyID='xxxx' \
--from-literal=defaultLwSecretKey='xxxx' \
--from-literal=defaultLwSubAcct='xxxSubAcct' \
--namespace=eventengine
- Store AWS Credentials as K8s secrets to be accessed as environment variables.
Follow these instructions.
- Store ECR Credentials as K8s secrets to be used to pull the images from ECR.
kubectl create secret docker-registry regcred \
--docker-server=${AWS_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.com \
--docker-username=AWS \
--docker-password=$(aws ecr get-login-password --profile <profile>) \
--namespace=<namespace>
ex.
kubectl create secret docker-registry regcred \
--docker-server=961341558131.dkr.ecr.us-west-2.amazonaws.com \
--docker-username=AWS \
--docker-password=$(aws ecr get-login-password --profile AdministratorAccess-961341558131) \
--namespace=eventengine
- Deploy the backend!
kubectl apply -f deployment-backend.yaml -n eventengine
- Get the backend service external IP.
kubectl get svc -n eventengine
Change directory to the /frontend folder.
- Ensure you have a node .env file with the following value set.
REACT_APP_API_URL=backend external ip
- Build the Docker image.
docker build -t eventengine/frontend:<tag> .
ex.
docker build -t eventengine/frontend:1 .
docker buildx build --platform linux/amd64 -t eventengine/frontend:1 . (mac->eks)
- Run the Docker image locally.
docker run -it --rm -p 3000:3000 --name my-frontend-service eventengine/frontend:<tag>
ex.
docker run -it --rm -p 3000:3000 --name my-frontend-service eventengine/frontend:1
- Push the image to ECR.
aws ecr get-login-password --region <region> --profile <profile> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
docker tag eventengine/frontend:<tag> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/eventengine/frontend:<tag>
docker push -a <aws_account_id>.dkr.ecr.<region>.amazonaws.com/eventengine/frontend
ex.
aws ecr get-login-password --region us-west-2 --profile AdministratorAccess-961341558131 | docker login --username AWS --password-stdin 961341558131.dkr.ecr.us-west-2.amazonaws.com
docker tag eventengine/frontend:1 961341558131.dkr.ecr.us-west-2.amazonaws.com/eventengine/frontend:1
docker tag eventengine/frontend:1 961341558131.dkr.ecr.us-west-2.amazonaws.com/eventengine/frontend:latest
docker push -a 961341558131.dkr.ecr.us-west-2.amazonaws.com/eventengine/frontend
- Deploy the frontend!
kubectl apply -f deployment-frontend.yaml -n eventengine