aboutsummaryrefslogtreecommitdiff
path: root/cmd/patreon-saasproxy/main.go
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2024-11-09 10:50:59 -0500
committerGitHub <noreply@github.com>2024-11-09 10:50:59 -0500
commit20d07c7005665f8e2001b4cbd24e15ec589d9882 (patch)
tree8b98d1446c6d9e42bc2621e633543e0420f43541 /cmd/patreon-saasproxy/main.go
parent2b349f56cb20420dd153f40f22b3654b5079100f (diff)
downloadxesite-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.go47
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)