This repository contains different microservices and Kubernetes manifests to deploy them.
Each microservice has it's own app.yaml
that should contain all of it's dependencies (besides other microservices).
To deploy on GKE, run:
kustomize build --enable-helm overlays/gke | kubectl apply -f -
To enable SQS:
- Install mirrord Operator in cluster (with SQS splitting enabled)
aws iam create-user --user-name SQSPlayground
aws iam create-access-key --user-name SQSPlayground
- save data to fileaws sqs create-queue --queue-name IpCount
- take QueueUrl to be used in deployment.yaml- You need to edit
ip-visit-sqs-consumer/policy.json
and set REGION and ACCOUNT_ID aws iam create-policy --policy-name SQSPlaygroundPolicy --policy-document file://ip-visit-sqs-consumer/policy.json
aws iam attach-user-policy --policy-arn arn:aws:iam::526936346962:policy/SQSPlaygroundPolicy --user-name SQSPlayground
- Set Region in app.yaml in
ip-visit-counter
andip-visit-sqs-consumer
To build proto
cd proto
protoc --go_out=../protogen --go_opt=paths=source_relative \
--go-grpc_out=../protogen --go-grpc_opt=paths=source_relative ./ipinfo.proto
For a local setup without SQS, run:
kubectl apply -k overlays/local
For a local setup with SQS (localstack) run:
kubectl kustomize --enable-helm overlays/localstack | kubectl apply -f -
This requires having helm installed.
To use SQS splitting, it should be enabled on operator installation.
When enabling SQS splitting in the installation, you are required to
specify an ARN of an AWS role. When working with localstack, that flag
is still required, but it doesn't really matter what ARN you provide,
so you can use e.g.
--aws-role-arn=arn:aws:iam::526936346960:role/mirrord-operator-dummy-role
.
Then patch the mirrord operator to use localstack for SQS:
kubectl patch deployment mirrord-operator -n mirrord --patch-file overlays/localstack/localstack-env-vars-patch.yaml --type json