{"id":18804901,"url":"https://github.com/leonardpahlke/whopper","last_synced_at":"2026-02-25T03:38:56.363Z","repository":{"id":40478088,"uuid":"432837813","full_name":"leonardpahlke/whopper","owner":"leonardpahlke","description":"ARCHIVED! Cloud Native playground project","archived":false,"fork":false,"pushed_at":"2024-05-28T09:33:44.000Z","size":8991,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-30T04:32:55.022Z","etag":null,"topics":["golang","grpc","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leonardpahlke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-28T22:15:11.000Z","updated_at":"2024-05-28T09:33:48.000Z","dependencies_parsed_at":"2024-11-07T22:41:50.006Z","dependency_job_id":"0c10f10f-a948-48ce-b4da-4894b122ba38","html_url":"https://github.com/leonardpahlke/whopper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/leonardpahlke/whopper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardpahlke%2Fwhopper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardpahlke%2Fwhopper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardpahlke%2Fwhopper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardpahlke%2Fwhopper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leonardpahlke","download_url":"https://codeload.github.com/leonardpahlke/whopper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardpahlke%2Fwhopper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29809931,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T03:30:18.102Z","status":"ssl_error","status_checked_at":"2026-02-25T03:30:17.799Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","grpc","kubernetes"],"created_at":"2024-11-07T22:40:59.392Z","updated_at":"2026-02-25T03:38:56.344Z","avatar_url":"https://github.com/leonardpahlke.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Whopper\n\n**PROJECT ARCHIVED**\n\n\n---\n\n## Installation and project setup\n\nBefore creating the infrastructure and start processing articles make sure to walk over the following sections of this chapter.\n- [Whopper](#whopper)\n  - [Installation and project setup](#installation-and-project-setup)\n    - [Required installations](#required-installations)\n    - [Used environment variables](#used-environment-variables)\n    - [Install local dependencies](#install-local-dependencies)\n  - [Project lifecycle](#project-lifecycle)\n    - [Bootstrapping](#bootstrapping)\n    - [Operation Phase](#operation-phase)\n    - [Cleanup](#cleanup)\n\nAfter that go a head to the next chapter [Project lifecycle](#project-lifecycle).\n\n### Required installations\n\n-  `go` for application logic is used: [installation guide](https://go.dev/doc/install)\n-  `pulumi` as infrastructure as code (IaC) tool is used: [installation guide](https://www.pulumi.com/docs/get-started/install/)\n-  `node` and `npm` is used to describe Pulumi IaC: [installation guide](https://nodejs.org/en/download/)\n-  `gcloud` CLI is used to access resources created in gcp: [installation guide](https://cloud.google.com/sdk/docs/install), Make sure to run `gcloud init` \u0026 `gcloud auth application-default login`\n-  `kubectl` is used to interact with created kubernetes clusters: [installation guide](https://kubernetes.io/docs/tasks/tools/)\n-  `task` is used instead of a makefile to install, verify, build and in general maintain the project: [installation guide](https://taskfile.dev/#/installation)\n-  `protoc` is used to compile proto3 api file: [installation guide](https://grpc.io/docs/protoc-installation/)\n   -  `protoc-gen-go`: `$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest` [gPRC quickstart](https://grpc.io/docs/languages/go/quickstart/)\n   -  `protoc-gen-go-grpc`: `$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1` [gPRC quickstart](https://grpc.io/docs/languages/go/quickstart/)\n- `ko` to build container images: [installation guide](https://github.com/google/ko#install)\n- `grype` for vulnerability scanning: [installation guide](https://github.com/anchore/grype#installation)\n\nYou can check if installations are met by running `sh ./scripts/check-installations.sh` or `task verify:check`.\n\n```\n$ task -l\ntask: Available tasks for this project:\n* deploy:container-image-push: \tPush a golang container to quay.io\n* deploy:pull-whopper-config: \tPull kubeconfig to access whopper cluster\n* deploy:whopper: \t\tDeploy whopper infrastructure with pulumi\n* destroy:cleanup-project: \tDelete all created it resources\n* destroy:whopper: \t\tDestroy the whopper infrastructure\n* init-project: \t\tInitialize project for production\n* kubectl-o: \t\t\tkubectl wrapper to interact with operator cluster\n* kubectl-w: \t\t\tkubectl wrapper to interact with the whopper cluster\n* scan:whopper-cluster: \tKubernetes cluster scan\n* test:whopper-cluster: \tWhopper kubernetes tests\n* verify-project: \t\tRun all checks to verify project quality\n* verify:code: \t\t\tVerify project code\n* verify:go: \t\t\tVerify project golang code\n* verify:install: \t\tInstall and update project dependencies\n* verify:ts: \t\t\tVerify project typescript code\n```\n\nAdditional information can be get by setting the `--summary` flag.\n\nExample:\n\n```\n$ task --summary verify:go\ntask: verify:go\n\nVerify project golang code\n\ncommands:\n - Task: verify:check-go-build\n - Task: verify:check-go-mod\n - Task: verify:check-golangci-lint\n - Task: verify:test-go-unit\n```\n### Used environment variables\n\nA couple of environment variables are **required**.\n\n- Export you pulumi access token as environment variable `PULUMI_ACCESS_TOKEN`.\n- Make sure `GOPATH` is set. It usually points to `/home/\u003cuser\u003e/go`\n- Set `DEFAULT_GOOGLE_PROJECT` to your GCP profile id\n\n### Install local dependencies\n\n**!! Does not work on Windows !!** I suggest using Linux or Macos. You can spin up virtual linux machine using [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or any other virtualization tool.\n\nTo install depenencies locally use the task file run `task verify:install`\nThis will do the following this for you:\n- Install go libraries\n- Install npm libraries locally\n- Clone project [googleapi]() which is used to build parts of the whopper api (see [api proto3 file](./api/whopper.proto))\n- Compile proto3 golang code\n\n---\n\n## Project lifecycle\n\nThe lifecycle of this project is desirbed in more detail in one of the docs documents [see docs/project-lifecycle](./docs/project-lifecylce-phases.md).\n\n![Project lifecycle overview](./assets/consider-cloud-native-ops.png)\n\nA brief summary of each phase is given in the sections:\n- [Bootstrapping](#bootstrapping)\n- [Operation Phase](#operation-phase)\n- [Cleanup](#cleanup)\n\n### Bootstrapping\nSetup infrastructure for the fist time.\nThere are two different types of infrastructure deployments. \n\n1. **Production deployment**: The production deployment is on going and uses the pulumi kubernetes operator. The operator watches the `main` branch for updates. Production infrastructure is build to stay with rolling blue-green updates. The task `task init-project` is used to set up the project inititially.\n2. **Feature test deployment**: The feature test deployment is a short term infrastructure test. It is used whenever a commit is pushed to any other branch then main. The infrastructure is deployed, tested and then destroyed. If these phases succeed without any error the feature is considered \"bug free\" and can be merged to `main`. The task `task deploy:whopper` can be used to deploy the whopper infrastructure to a pulumi stack with the name of the current branch.\n\n### Operation Phase\noperation\n\n```bash\n...\n```\n\n\n### Cleanup\n\nTasks available to clean up the infrastructure:\n* `task destroy:cleanup-project` to destroy the `main` project including the whopper infrastructure with the pulumi operator and the operator cluster.  \n* `task destroy:whopper` to the destroy the whopper infrastructure with the stack name of the current branch.\n\n\n\u003e More information can be found in the `/docs` folder.  ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleonardpahlke%2Fwhopper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleonardpahlke%2Fwhopper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleonardpahlke%2Fwhopper/lists"}