diff options
| author | Xe Iaso <me@xeiaso.net> | 2024-11-09 10:50:59 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-09 10:50:59 -0500 |
| commit | 20d07c7005665f8e2001b4cbd24e15ec589d9882 (patch) | |
| tree | 8b98d1446c6d9e42bc2621e633543e0420f43541 /cmd/patreon-saasproxy/main.go | |
| parent | 2b349f56cb20420dd153f40f22b3654b5079100f (diff) | |
| download | xesite-20d07c7005665f8e2001b4cbd24e15ec589d9882.tar.xz xesite-20d07c7005665f8e2001b4cbd24e15ec589d9882.zip | |
Move to Kubernetes (#853)
* start to lift-and-shift to k8s
Signed-off-by: Xe Iaso <me@xeiaso.net>
* manifest/xesite: properly configure pod disruption budget, hostmount for xesite as a hack
Signed-off-by: Xe Iaso <me@xeiaso.net>
* properly slonk readiness
Signed-off-by: Xe Iaso <me@xeiaso.net>
* manifest: move to aeacus
Signed-off-by: Xe Iaso <me@xeiaso.net>
* internal: add OnionLocation middleware
Signed-off-by: Xe Iaso <me@xeiaso.net>
* internal/lume: jettison serving from the zipfile
Signed-off-by: Xe Iaso <me@xeiaso.net>
* yolo deploy to prod
Signed-off-by: Xe Iaso <me@xeiaso.net>
* okay use a machineproxy here
Signed-off-by: Xe Iaso <me@xeiaso.net>
* test CI/CD
Signed-off-by: Xe Iaso <me@xeiaso.net>
* try civo route
Signed-off-by: Xe Iaso <me@xeiaso.net>
* lol
Signed-off-by: Xe Iaso <me@xeiaso.net>
* plan c?
Signed-off-by: Xe Iaso <me@xeiaso.net>
* specify the region
Signed-off-by: Xe Iaso <me@xeiaso.net>
* lol
Signed-off-by: Xe Iaso <me@xeiaso.net>
* blog: hello again kubernetes!
Signed-off-by: Xe Iaso <me@xeiaso.net>
---------
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd/patreon-saasproxy/main.go')
| -rw-r--r-- | cmd/patreon-saasproxy/main.go | 47 |
1 files changed, 14 insertions, 33 deletions
diff --git a/cmd/patreon-saasproxy/main.go b/cmd/patreon-saasproxy/main.go index 6901ee3..363fa80 100644 --- a/cmd/patreon-saasproxy/main.go +++ b/cmd/patreon-saasproxy/main.go @@ -2,14 +2,13 @@ package main import ( "context" - "encoding/base64" "flag" + "fmt" "log" "log/slog" "net" "net/http" "os" - "path/filepath" "github.com/facebookgo/flagenv" _ "github.com/joho/godotenv/autoload" @@ -20,13 +19,16 @@ import ( "gopkg.in/mxpv/patreon-go.v1" "xeiaso.net/v4/internal" "xeiaso.net/v4/internal/adminpb" + "xeiaso.net/v4/internal/k8s" ) var ( - bind = flag.String("bind", ":80", "HTTP bind addr") - clientID = flag.String("client-id", "", "Patreon client ID") - clientSecret = flag.String("client-secret", "", "Patreon client secret") - dataDir = flag.String("data-dir", "./var", "Directory to store data in") + bind = flag.String("bind", ":80", "HTTP bind addr") + clientID = flag.String("client-id", "", "Patreon client ID") + clientSecret = flag.String("client-secret", "", "Patreon client secret") + dataDir = flag.String("data-dir", "./var", "Directory to store data in") + k8sNamespace = flag.String("kubernetes-namespace", "default", "Kubernetes namespace this app is running in") + k8sSecretName = flag.String("kubernetes-secret-name", "xesite-patreon-saasproxy-state", "Kubernetes secret to store state data in") ) func main() { @@ -46,36 +48,11 @@ func main() { Scopes: []string{"users", "pledges-to-me", "my-campaign"}, } - if !internal.FileExists(filepath.Join(*dataDir, "patreon-token.json")) { - val, ok := os.LookupEnv("PATREON_TOKEN_JSON_B64") - if !ok { - log.Fatal("PATREON_TOKEN_JSON_B64 not set") - } - - fout, err := os.Create(filepath.Join(*dataDir, "patreon-token.json")) - if err != nil { - log.Fatal(err) - } - defer fout.Close() - - decoded, err := base64.StdEncoding.DecodeString(val) - if err != nil { - slog.Error("can't decode token", "err", err, "val", val) - log.Fatal(err) - } - - if _, err := fout.Write(decoded); err != nil { - log.Fatal(err) - } - } - - token, err := internal.ReadToken(filepath.Join(*dataDir, "patreon-token.json")) + cts, err := k8s.TokenSource(*k8sNamespace, *k8sSecretName, &config) if err != nil { - log.Fatalf("error reading token: %v", err) + log.Fatalf("error making token source: %v", err) } - cts := internal.CachingTokenSource(filepath.Join(*dataDir, "patreon-token.json"), &config, token) - s := &Server{ cts: cts, } @@ -83,6 +60,10 @@ func main() { ph := adminpb.NewPatreonServer(s) http.Handle(adminpb.PatreonPathPrefix, ph) + http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, "OK") + }) + ln, err := net.Listen("tcp", *bind) if err != nil { log.Fatalf("can't listen over TCP: %v", err) |
