gitextract_n0fmcr6r/ ├── .deploystack/ │ ├── deploystack.yaml │ ├── messages/ │ │ ├── description.txt │ │ └── success.txt │ ├── scripts/ │ │ └── preinit.sh │ ├── test │ └── test.yaml ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ ├── feature-request.md │ │ └── other.md │ ├── SECURITY.md │ ├── auto-approve.yml │ ├── header-checker-lint.yml │ ├── pull_request_template.md │ ├── release-cluster/ │ │ ├── README.md │ │ ├── backend-config.yaml │ │ ├── frontend-config.yaml │ │ ├── frontend-ingress.yaml │ │ ├── frontend-service.yaml │ │ └── managed-cert.yaml │ ├── renovate.json5 │ ├── snippet-bot.yml │ ├── terraform/ │ │ ├── README.md │ │ ├── main.tf │ │ ├── variables.tf │ │ └── versions.tf │ └── workflows/ │ ├── README.md │ ├── ci-main.yaml │ ├── ci-pr.yaml │ ├── cleanup.yaml │ ├── helm-chart-ci.yaml │ ├── install-dependencies.sh │ ├── kubevious-manifests-ci.yaml │ ├── kustomize-build-ci.yaml │ └── terraform-validate-ci.yaml ├── .gitignore ├── LICENSE ├── README.md ├── cloudbuild.yaml ├── docs/ │ ├── adding-new-microservice.md │ ├── cloudshell-tutorial.md │ ├── deploystack.md │ ├── development-guide.md │ ├── product-requirements.md │ ├── purpose.md │ └── releasing/ │ ├── README.md │ ├── license_header.txt │ ├── make-docker-images.sh │ ├── make-helm-chart.sh │ ├── make-release-artifacts.sh │ └── make-release.sh ├── helm-chart/ │ ├── Chart.yaml │ ├── README.md │ ├── templates/ │ │ ├── NOTES.txt │ │ ├── adservice.yaml │ │ ├── cartservice.yaml │ │ ├── checkoutservice.yaml │ │ ├── common.yaml │ │ ├── currencyservice.yaml │ │ ├── emailservice.yaml │ │ ├── frontend.yaml │ │ ├── loadgenerator.yaml │ │ ├── opentelemetry-collector.yaml │ │ ├── paymentservice.yaml │ │ ├── productcatalogservice.yaml │ │ ├── recommendationservice.yaml │ │ └── shippingservice.yaml │ └── values.yaml ├── istio-manifests/ │ ├── allow-egress-googleapis.yaml │ ├── frontend-gateway.yaml │ └── frontend.yaml ├── kubernetes-manifests/ │ ├── README.md │ ├── adservice.yaml │ ├── cartservice.yaml │ ├── checkoutservice.yaml │ ├── currencyservice.yaml │ ├── emailservice.yaml │ ├── frontend.yaml │ ├── kustomization.yaml │ ├── loadgenerator.yaml │ ├── paymentservice.yaml │ ├── productcatalogservice.yaml │ ├── recommendationservice.yaml │ └── shippingservice.yaml ├── kustomize/ │ ├── README.md │ ├── base/ │ │ ├── adservice.yaml │ │ ├── cartservice.yaml │ │ ├── checkoutservice.yaml │ │ ├── currencyservice.yaml │ │ ├── emailservice.yaml │ │ ├── frontend.yaml │ │ ├── kustomization.yaml │ │ ├── loadgenerator.yaml │ │ ├── paymentservice.yaml │ │ ├── productcatalogservice.yaml │ │ ├── recommendationservice.yaml │ │ └── shippingservice.yaml │ ├── components/ │ │ ├── alloydb/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ ├── container-images-registry/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ ├── container-images-tag/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ ├── container-images-tag-suffix/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ ├── custom-base-url/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ ├── cymbal-branding/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ ├── google-cloud-operations/ │ │ │ ├── README.md │ │ │ ├── kustomization.yaml │ │ │ └── otel-collector.yaml │ │ ├── memorystore/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ ├── network-policies/ │ │ │ ├── README.md │ │ │ ├── kustomization.yaml │ │ │ ├── network-policy-adservice.yaml │ │ │ ├── network-policy-cartservice.yaml │ │ │ ├── network-policy-checkoutservice.yaml │ │ │ ├── network-policy-currencyservice.yaml │ │ │ ├── network-policy-deny-all.yaml │ │ │ ├── network-policy-emailservice.yaml │ │ │ ├── network-policy-frontend.yaml │ │ │ ├── network-policy-loadgenerator.yaml │ │ │ ├── network-policy-paymentservice.yaml │ │ │ ├── network-policy-productcatalogservice.yaml │ │ │ ├── network-policy-recommendationservice.yaml │ │ │ ├── network-policy-redis.yaml │ │ │ └── network-policy-shippingservice.yaml │ │ ├── non-public-frontend/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ ├── service-mesh-istio/ │ │ │ ├── README.md │ │ │ ├── allow-egress-googleapis.yaml │ │ │ ├── frontend-gateway.yaml │ │ │ ├── frontend.yaml │ │ │ └── kustomization.yaml │ │ ├── shopping-assistant/ │ │ │ ├── README.md │ │ │ ├── kustomization.yaml │ │ │ ├── scripts/ │ │ │ │ ├── 1_deploy_alloydb_infra.sh │ │ │ │ ├── 2_create_populate_alloydb_tables.sh │ │ │ │ └── generate_sql_from_products.py │ │ │ └── shoppingassistantservice.yaml │ │ ├── single-shared-session/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ ├── spanner/ │ │ │ ├── README.md │ │ │ └── kustomization.yaml │ │ └── without-loadgenerator/ │ │ ├── README.md │ │ ├── delete-loadgenerator.patch.yaml │ │ └── kustomization.yaml │ ├── kustomization.yaml │ └── tests/ │ ├── README.md │ ├── memorystore-with-all-components/ │ │ └── kustomization.yaml │ ├── service-mesh-istio-with-all-components/ │ │ └── kustomization.yaml │ └── spanner-with-all-components/ │ └── kustomization.yaml ├── protos/ │ ├── demo.proto │ └── grpc/ │ └── health/ │ └── v1/ │ └── health.proto ├── release/ │ ├── istio-manifests.yaml │ └── kubernetes-manifests.yaml ├── skaffold.yaml ├── src/ │ ├── adservice/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── build.gradle │ │ ├── genproto.sh │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── hipstershop/ │ │ │ ├── AdService.java │ │ │ └── AdServiceClient.java │ │ ├── proto/ │ │ │ └── demo.proto │ │ └── resources/ │ │ └── log4j2.xml │ ├── cartservice/ │ │ ├── cartservice.sln │ │ ├── src/ │ │ │ ├── .dockerignore │ │ │ ├── Dockerfile │ │ │ ├── Dockerfile.debug │ │ │ ├── Program.cs │ │ │ ├── Startup.cs │ │ │ ├── appsettings.json │ │ │ ├── cartservice.csproj │ │ │ ├── cartstore/ │ │ │ │ ├── AlloyDBCartStore.cs │ │ │ │ ├── ICartStore.cs │ │ │ │ ├── RedisCartStore.cs │ │ │ │ └── SpannerCartStore.cs │ │ │ ├── protos/ │ │ │ │ └── Cart.proto │ │ │ └── services/ │ │ │ ├── CartService.cs │ │ │ └── HealthCheckService.cs │ │ └── tests/ │ │ ├── CartServiceTests.cs │ │ └── cartservice.tests.csproj │ ├── checkoutservice/ │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── genproto/ │ │ │ ├── demo.pb.go │ │ │ └── demo_grpc.pb.go │ │ ├── genproto.sh │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ └── money/ │ │ ├── money.go │ │ └── money_test.go │ ├── currencyservice/ │ │ ├── .dockerignore │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── client.js │ │ ├── data/ │ │ │ └── currency_conversion.json │ │ ├── genproto.sh │ │ ├── package.json │ │ ├── proto/ │ │ │ ├── demo.proto │ │ │ └── grpc/ │ │ │ └── health/ │ │ │ └── v1/ │ │ │ └── health.proto │ │ └── server.js │ ├── emailservice/ │ │ ├── Dockerfile │ │ ├── demo_pb2.py │ │ ├── demo_pb2_grpc.py │ │ ├── email_client.py │ │ ├── email_server.py │ │ ├── genproto.sh │ │ ├── logger.py │ │ ├── requirements.in │ │ ├── requirements.txt │ │ └── templates/ │ │ └── confirmation.html │ ├── frontend/ │ │ ├── .dockerignore │ │ ├── .gitkeep │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── deployment_details.go │ │ ├── genproto/ │ │ │ ├── demo.pb.go │ │ │ └── demo_grpc.pb.go │ │ ├── genproto.sh │ │ ├── go.mod │ │ ├── go.sum │ │ ├── handlers.go │ │ ├── main.go │ │ ├── middleware.go │ │ ├── money/ │ │ │ ├── money.go │ │ │ └── money_test.go │ │ ├── packaging_info.go │ │ ├── rpc.go │ │ ├── static/ │ │ │ ├── images/ │ │ │ │ └── credits.txt │ │ │ └── styles/ │ │ │ ├── bot.css │ │ │ ├── cart.css │ │ │ ├── order.css │ │ │ └── styles.css │ │ ├── templates/ │ │ │ ├── ad.html │ │ │ ├── assistant.html │ │ │ ├── cart.html │ │ │ ├── error.html │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── home.html │ │ │ ├── order.html │ │ │ ├── product.html │ │ │ └── recommendations.html │ │ └── validator/ │ │ ├── validator.go │ │ └── validator_test.go │ ├── loadgenerator/ │ │ ├── Dockerfile │ │ ├── locustfile.py │ │ ├── requirements.in │ │ └── requirements.txt │ ├── paymentservice/ │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── charge.js │ │ ├── genproto.sh │ │ ├── index.js │ │ ├── logger.js │ │ ├── package.json │ │ ├── proto/ │ │ │ ├── demo.proto │ │ │ └── grpc/ │ │ │ └── health/ │ │ │ └── v1/ │ │ │ └── health.proto │ │ └── server.js │ ├── productcatalogservice/ │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── catalog_loader.go │ │ ├── genproto/ │ │ │ ├── demo.pb.go │ │ │ └── demo_grpc.pb.go │ │ ├── genproto.sh │ │ ├── go.mod │ │ ├── go.sum │ │ ├── product_catalog.go │ │ ├── product_catalog_test.go │ │ ├── products.json │ │ └── server.go │ ├── recommendationservice/ │ │ ├── Dockerfile │ │ ├── client.py │ │ ├── demo_pb2.py │ │ ├── demo_pb2_grpc.py │ │ ├── genproto.sh │ │ ├── logger.py │ │ ├── recommendation_server.py │ │ ├── requirements.in │ │ └── requirements.txt │ ├── shippingservice/ │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── genproto/ │ │ │ ├── demo.pb.go │ │ │ └── demo_grpc.pb.go │ │ ├── genproto.sh │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ ├── quote.go │ │ ├── shippingservice_test.go │ │ └── tracker.go │ └── shoppingassistantservice/ │ ├── Dockerfile │ ├── requirements.in │ ├── requirements.txt │ └── shoppingassistantservice.py └── terraform/ ├── README.md ├── main.tf ├── memorystore.tf ├── output.tf ├── providers.tf └── variables.tf