profile
viewpoint

mrkurt/fsharp-indexing 5

A Lucene backed indexing library written in F#

fly-examples/puppeteer-js-renderer 3

A service to render js for web scraping hosted on fly.io

mrkurt/ars-theme 3

The PHP app used to render Ars Technica

mrkurt/cloudseed 3

Rack middleware for CloudFront custom origins

fly-examples/grpc-service 2

Running gRPC services on Fly.io

mrkurt/basic_model 2

A very thin wrapper around CouchRest, for use with CouchDB and Ruby on Rails.

mrkurt/carrierwave 2

Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks

issue openedsuperfly/flyctl

Prompt for service port on flyctl init

We have a fair amount of people run into health check errors because their app listens on not-8080. I think we might solve a lot of problems if we prompt for the app port at app init time.

created time in a day

issue closedsuperfly/flyctl

Logs not working ...

Hello,

Just wondered if anyone else was having the issue of logs not working e.g.

flyctl --app [name] logs

... does nothing. Normally it would tail the log. Or has the command changed?

Thanks.

closed time in 4 days

gregmsanderson

issue commentsuperfly/flyctl

Logs not working ...

All fixed!

gregmsanderson

comment created time in 4 days

issue commentsuperfly/flyctl

Logs not working ...

Working on it! The logging API is a currently taking forever to respond, should be fixed shortly.

gregmsanderson

comment created time in 4 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

Hi @gabor-boros. Sorry for the slow response on this, we've been working on some guidelines for CI articles. I will send you an email tonight or tomorrow.

gabor-boros

comment created time in 5 days

push eventfly-examples/example-guide

Kurt Mackey

commit sha 10bc77550c68b1f6e08f2abde8651cf91f15bce8

Update README.md

view details

push time in 5 days

issue openedsuperfly/flyctl

Make kill signal configurable

We send SIGINT by default to gracefully exit a process. Some things want different signals (like nginx). This could probably be configured through fly.toml.

created time in 6 days

issue commentsuperfly/fly

Continuous Deployment with Travis

Readme in the same repo works great. Just name it README.md instead of lowercase.

karllhughes

comment created time in 6 days

issue commentsuperfly/fly

Continuous Deployment with Travis

I think the best way to do this might be to add new directory + REAMDE to the flygreeting app. I think most CI systems use directories like .travis and .github already. Do you think that will work?

That'll let us actualy configure them and keep them running down the road too. ;)

karllhughes

comment created time in 6 days

PR opened superfly/flyctl

Support for backup regions

This adds backup regions to flyctl region list output, and adds flyctl regions backup [region] for setting backup regions.

+74 -23

0 comment

4 changed files

pr created time in 11 days

create barnchsuperfly/flyctl

branch : backup-regions

created branch time in 11 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

I'd say just finish the example with that and we can worry about why it can't push an built image later.

gabor-boros

comment created time in 12 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

Can you put the source somewhere?

It might be simpler to just do flyctl deploy and let it handle the docker build. There's not much reason to push to fly and then deploy separately.

gabor-boros

comment created time in 12 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

@gabor-boros Try this: /root/.fly/bin/flyctl deploy -i "registry.fly.io/flygreeting-gitlabci:$CI_COMMIT_SHORT_SHA"

gabor-boros

comment created time in 12 days

issue openedsuperfly/flyctl

First deploy hangs waiting for deployment to monitor

==> Creating Release
Release v0 created
Deploying to : <app>.fly.dev

Monitoring Deployment
You can detach the terminal anytime without stopping the deployment

I think v0 won't have a deployment if it works on the first try.

created time in 14 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

That sounds good to me.

gabor-boros

comment created time in 14 days

issue commentsuperfly/fly

Text summarizer (based on BERT) as a service/API on fly

@geshan We are migrating content discussions to our new community site. Will you please copy your topic for this over to the new forum: https://community.fly.io/c/write/writers-room/8

Just copy and paste on the original issue is fine, with a link back here.

geshan

comment created time in 15 days

issue commentsuperfly/fly

Redis cache cluster

Migrated to Discourse: https://community.fly.io/t/redis-cache-cluster/62

mrkurt

comment created time in 15 days

issue commentsuperfly/fly

gRPC example

Yes, good call. Give me a few.

sudhirj

comment created time in 16 days

push eventfly-examples/puppeteer-js-renderer

Geshan Manandhar

commit sha 06667979c614b9f0abd7ef6e1bbee3c92668e69c

Changes references from js-rendereer-fly to puppeteer-js-renderer - [x] Updates the git URL for the project

view details

Kurt Mackey

commit sha f8af7362f9fe26fe08a02fc6481ae07112c00d11

Merge pull request #19 from fly-examples/geshan-patch-11 Changes references from js-rendereer-fly to puppeteer-js-renderer

view details

push time in 16 days

issue commentsuperfly/fly

JS renderer on fly

Alrighty, now in the docs. I renamed the project and did a little cleanup of project names in the README text, but check it over and see if I missed anything: http://fly.io/docs/app-guides/puppeteer-js-renderer/

Feel free to submit PRs to the project for any changes you want to make.

geshan

comment created time in 17 days

push eventfly-examples/puppeteer-js-renderer

Kurt Mackey

commit sha 770ef6eab8c544f162c5b643d04ec7cd39be53aa

Update README.md

view details

push time in 17 days

push eventfly-examples/puppeteer-js-renderer

Kurt Mackey

commit sha fb04e73b8cf50165774826a9942041c52d6f01f5

Fix references to project name

view details

push time in 17 days

push eventfly-examples/puppeteer-js-renderer

Kurt Mackey

commit sha 30f3b24a1ea3bcab5635eeb927f38578a5bd49b8

Add cut marker

view details

push time in 17 days

push eventfly-examples/openresty-basic

Kurt Mackey

commit sha e947481fb5a6218e78d3c46b33dd274de201f1c4

Rename readme.md to README.md

view details

push time in 17 days

push eventfly-examples/openresty-basic

Kurt Mackey

commit sha 8f19907c465fba84ecd1f6efe2975555b7895a14

Full URL to image

view details

push time in 17 days

push eventfly-examples/openresty-basic

Kurt Mackey

commit sha 86e28068ba8c534bc9be68dc9c02eac4d698b9df

Update readme.md

view details

push time in 17 days

issue commentsuperfly/fly

JS renderer on fly

Good deal! It's here now, I'll get it in our docs soon: https://github.com/fly-examples/puppeteer-js-renderer

geshan

comment created time in 17 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

Yep, if you clone that project and run go test you'll see their output:

➜  flygreeting git:(main) go test
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

Wed, 29 Jul 2020 13:48:49 CDT - [GET] "200 71.346µs "
Wed, 29 Jul 2020 13:48:49 CDT - [GET] "200 122.838µs "
Wed, 29 Jul 2020 13:48:49 CDT - [GET] "200 10.033µs "
PASS
ok  	flygreeting	0.326s
gabor-boros

comment created time in 17 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

Yeah use ours instead.

gabor-boros

comment created time in 17 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

@gabor-boros we have a standard app to use for these kinds of examples now (and it includes tests!): https://github.com/fly-examples/flygreeting

gabor-boros

comment created time in 17 days

issue closedsuperfly/fly

Continuous Deployment using Github Actions

Outline, see: https://github.com/superfly/fly/issues/285

closed time in 17 days

karllhughes

issue commentsuperfly/fly

Continuous Deployment using Github Actions

Oh we actually have this one already: https://fly.io/docs/app-guides/continuous-deployment-with-github-actions/

Once we get more standard CI stuff, we can refresh it. But I'm going to close this for now.

karllhughes

comment created time in 17 days

issue commentsuperfly/fly

JS renderer on fly

@geshan Have you been emailing with @KittyBot? This looks great, next steps are:

  1. Transfer the repository to me (mrkurt)
  2. We'll work out payment over email.
geshan

comment created time in 17 days

issue commentsuperfly/fly

Text summarizer (based on BERT) as a service/API on fly

@geshan Sorry for the slow response here, @codepope or I will work through this one this week.

geshan

comment created time in 18 days

issue commenth2non/imaginary

Fail gracefully when `format=auto`

I managed to replicate this with a random jpeg: https://i.imgur.com/6gBwEjy.jpg

The imaginary params were: /convert?url=https://i.imgur.com/6gBwEjy.jpg&stripmeta=true&type=webp&quality=80

Type with multiple available formats would work great for me.

mrkurt

comment created time in 18 days

issue commentsuperfly/fly

Data[base|store]s & Fly

This seems like a lot of work to me, it's actually easier to just run containers in that region on Fargate + Load Balancer, which is a bit of an anti-climax.

That's a really good point. I think you've convinced me that the best thing to show/explain is how to use stuff like RDS for global apps. People ask about this a lot. If you want to do more writing and lest demo app creation that'd be a pretty good article.

sudhirj

comment created time in 18 days

issue commentsuperfly/fly

Data[base|store]s & Fly

We'd likely give people a CloudFormation template to create Wireguard gateway(s) in a VPC. Having our own VPCs + peering would be pretty interesting way to do that, although since we're not already on AWS it'll end up being different than Heroku.

Wireguard's config makes this harder than necessary right now. There are probably simpler things to start with. RDS doesn't support TLS client cert authentication natively, so some kind of gateway in a VPC that accepts TLS + validate client certs might be easier. HAProxy can definitely do this.

sudhirj

comment created time in 18 days

issue commentsuperfly/fly

Data[base|store]s & Fly

The VPC-to-Fly ask seems like a bit of security-theatre, though. We run VPCs all the time, and the whole point of a VPC is that you don't let anything outside the VPC talk to what's in the VPC.

Tunneling into a VPC is a bit more like VPC peering or point to point VPN, really. VPCs are nice because they're private networks. Fly VMs could theoretically use Wireguard to talk to that private network (it wouldn't open it up to anything else).

Our longer term plan is to (a) roll out private networks for apps and (b) give people a really easy way to "peer" with a VPC, but there's not technical reason that can't work right now.

Incidentally, Serverless Aurora is VPC only, you can't provision those DBs with public IPs.

sudhirj

comment created time in 18 days

issue openedsuperfly/fly

Rust on Fly

Fly's a great place to run Rust, we just need a demo project.

created time in 18 days

issue openedsuperfly/fly

Web app firewall

People ask about WAF features pretty frequently, I know of several devs that run nginx + extensions to get a WAF in front of their app.

This would make a great example Fly application. The owasp modsecurity docker image is a good place to start: https://hub.docker.com/r/owasp/modsecurity

Possibly related features are:

  • Bot / abuse protection (though that could be its own example)
  • DDoS protection (big topic)

created time in 21 days

issue commentsuperfly/fly

Redis cache cluster

Kind of. You will have two addresses, like these:

  1. REDIS_CACHE_URL
  2. REDIS_GLOBAL_CACHE_URL

In this configuration, you'd mostly be reading AND writing against REDIS_CACHE_URL. You'd only need to use the REDIS_GLOBAL_CACHE_URL when you want data to propagate to all the regions.

This works because Redis allows writes against a replica.

mrkurt

comment created time in 21 days

issue openedsuperfly/fly

Redis cache cluster

Redis makes a really nice global cache service. Replicas can be configured to allow writes with replica-read-only false. With a reasonably small dataset, replicas can be added and removed quickly too.

Making this work on Fly (currently) requires two applications.

  1. A "primary" Redis app with a min-count and max count of 1, it should not scale.
  2. A replica Redis app configured to replicate from the primary Redis, replica-read-only false, and no disk persistence.

The primary Redis is useful for propagating commands to all the replicas. A del sent to the primary will remove keys in all the replicas. A set will propagate to all the replicas. Writes to each replica are invisible to other replicas, so the best pattern for using this is to do most caching operations against the replica app, and only write to the primary app for things that need to be the same everywhere.

created time in 22 days

issue commentsuperfly/fly

Data[base|store]s & Fly

The #1 thing on my wish list is a guide to connecting to an RDS instance inside a VPC. We have a lot of people who want to do that securely. If you're cool tackling that first we're all for it, and I think it's about 80% of the work required for talking to Dynamo securely too.

My theoretical favorite option is a wireguard connection into a VPC, but that's hard without some supporting infrastructure. You'd need consul and something dynamically updating wireguard configs as new firecracker VMs came up for it to work.

Other than that, I'm not sure what's simplest. The AWS VPN services might work. Have you tried anything for this?

sudhirj

comment created time in 23 days

issue commentsuperfly/fly

Kong API Gateway on Fly

Yeah go for it! We're going to pace when we promote these ourselves, but feel free to share them whenever you'd like. You don't have to wait on us.

karllhughes

comment created time in 24 days

issue commentsuperfly/fly

Text summarizer (based on BERT) as a service/API on fly

I like this a lot. We have a lot of people who've done TensorFlow apps for doing quick predictions to detect things like bots. That stuff is always heavy on the CPU, it sounds like an interesting thing to show people.

We can give you some credits for experimenting + running this on Fly while you build the example out, if it's helpful.

geshan

comment created time in 24 days

issue commentsuperfly/fly

JS renderer on fly

This sounds super cool. It's basically a service that executes JS and then returns the resulting DOM? I think with a README about why that's interesting and how it's better if you run it close to certain cities, that's a pretty great example.

I've actually wanted examples of Puppeteer for other stuff:

  1. Screenshots/thumbnails
  2. Lighthouse tests

Could be good for a second example. ;)

geshan

comment created time in 24 days

issue commentsuperfly/fly

Running OpenResty on Fly

Can you hit https://debug.fly.dev and paste the output here? I want to see which region you're connecting to.

karllhughes

comment created time in 24 days

issue commentsuperfly/fly

Running OpenResty on Fly

Oh I'm interested in what you found, we've had a few people with issues in different frameworks writing to /dev/stdout so I think this is harder than it should be.

karllhughes

comment created time in 24 days

issue commentsuperfly/fly

Kong API Gateway on Fly

@karllhughes have a look at the published version and see if you want to make any changes before we push it out: https://fly.io/docs/app-guides/kong-api-gateway/

karllhughes

comment created time in 24 days

issue commentsuperfly/fly

gRPC example

@sudhirj ok the readme is showing here, have a look and see if you want to make any changes before we push this out next week: https://fly.io/docs/app-guides/grpc-and-grpc-web-services/

sudhirj

comment created time in 24 days

push eventfly-examples/kong-api-gateway

Kurt Mackey

commit sha 681be5a90ee89502a858aee58090496203f2c454

Full URL to image

view details

push time in 24 days

push eventfly-examples/kong-api-gateway

Kurt Mackey

commit sha 47285dbdb83c9f1abb72cbaf4fae4b5abf375f4c

readme name to uppercase

view details

push time in 24 days

push eventfly-examples/grpc-service

Kurt Mackey

commit sha 37d8650771c6b220755aae79bef98d7e363e7919

Add cut marker for fly publishing

view details

push time in 24 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

Ah that's a pretty good point. Demonstrating tests is a good thing. I mainly just didn't want you spend a lot of time on an example project just for this! But that does make sense, I'm cool with either a tiny service that has the tests + setup or using one of our existing examples and adding some test, whatever's simplest.

gabor-boros

comment created time in 25 days

issue commentsuperfly/fly

Running Varnish on Fly

Nice. I think for stuff like Varnish, the "easiest" backend source is an s3 bucket or similar. Varnish is useful for doing CDN like caching and that means (I think) that showing people how to work with static files makes the most sense.

karllhughes

comment created time in 25 days

issue closedsuperfly/fly

Apollo GraphQL + Caching

A demonstration of Apollo GraphQL servers + Redis caching on Fly.

closed time in 25 days

mrkurt

issue commentsuperfly/fly

Continuous deployment with CircleCI

CircleCI seems tricky with Docker, the people we know who use it end up doing remote builds with flyctl (unintentionally). This one should show how to do in-Circle Docker builds. Bonus points if it can do Docker layer caching.

You can actually build with Docker and deploy that image with flyctl, if it helps. Basically:

docker build . -t myapp/test:1234
flyctl deploy -i myapp/test:1234
karllhughes

comment created time in 25 days

issue commentsuperfly/fly

Continuous deployment + [Various]

I think these are (a) a great set of examples and (b) the best places for new contributors to start. So maybe instead of doing all of these, you could put together a skeleton + start issues for each? We were sort of talking about what app to use to demo these in #280.

(Also, CircleCI comes up a lot so that one's definitely worth doing).

karllhughes

comment created time in 25 days

issue commentsuperfly/fly

Secured API Key generation on the edge with Fly

Yep! This would be a good one. They even say this in the docs:

Secured API keys are virtual, which means they aren’t stored anywhere, and you can’t find them on the Algolia dashboard. You generate them on the fly

Building little gateways to other services is a good use of Fly.

karllhughes

comment created time in 25 days

issue commentsuperfly/fly

Running OpenResty on Fly

Yeah I like it. Auth makes total sense standalone.

karllhughes

comment created time in 25 days

issue commentsuperfly/fly

Continuous Deployment with GitLab

Yes this would be awesome. For good CI examples, we want to make sure deploys use local Docker builds, if it says "Docker not available, doing remote build" that's not great in CI.

For now, any app will work. You don't need to build a microservice, though. Demonstrating CI with our "Hello Fly" app will work just fine if you don't have anything else convenient: https://fly.io/docs/hands-on/create-app/

gabor-boros

comment created time in 25 days

issue commentsuperfly/fly

Continuous Deployment with Buildkite

How to deploy to Fly with Buildkite. Someday we'll want the latter. :)

karllhughes

comment created time in 25 days

issue commentsuperfly/fly

gRPC example

Nice! Go ahead and transfer the project to my GitHub user (mrkurt) when you're ready. I can add you as a collaborator after it's moved to our org so you can keep tweaking.

sudhirj

comment created time in a month

issue commentsuperfly/fly

Kong API Gateway on Fly

Ah these go in the fly-examples org, can you try that one?

karllhughes

comment created time in a month

issue commentsuperfly/fly

Kong API Gateway on Fly

@karllhughes yeah go ahead and transfer it, @codepope or I will review and do notes by tomorrow.

karllhughes

comment created time in a month

issue commentsuperfly/flyctl

flyctl certs create should inform users of next steps better

Braindump on certificate verification, some example Ruby we use, and some things that break it.

DNS verification: requires a CNAME to us: _acme-challenge.example.com, which we use to keep a TXT record updated. We check for the cname specifically with this Ruby:

    h = @hostname
    if h.starts_with?("*.")
      h = h.sub(/^\*\./, '')
    end
    record = dns_client.getresource("_acme-challenge.#{h}", Resolv::DNS::Resource::IN::CNAME)
    return record.name.to_s === flydns_record # example.com.<uniq>.flydns.net

ALPN verification: requires that the hostname resolve to an app's ipv6 address. This can be done with either a CNAME (since it aliases all the things) or an AAAA record (required for an apex record). We just do a recursive DNS query to check for this, and don't pay any attention to whether it's a CNAME or not.

SOA record: we lookup the SOA record and query that server for all our checks.

Things that break certificates

  • Some domains have a CAA record that prevents us from issuing a certificate: https://community.letsencrypt.org/t/caa-record-prevents-issuance/95688
  • Some have a TXT record at _acme-challenge.example.com, that will typically get returned before the CNAME
  • Lots of people add an A record but no AAAA record for apex domains
  • Sometimes the SOA server doesn't respond to queries, it's annoying
codepope

comment created time in a month

issue commentsuperfly/flyctl

Running the mutation AddCertificate twice doesn't throw an error

We have at least one customer that runs those over and over so throwing an error wouldn't be awesome for them. We can attach errors and possibly return the existing cert though, that might work.

codepope

comment created time in a month

issue commentsuperfly/flyctl

Running the mutation AddCertificate twice doesn't throw an error

I think the intent for that one was to make it idempotent, so it should return the cert with that name. Do you think an error is better?

codepope

comment created time in a month

issue commentsuperfly/fly

gRPC example

Yeah that's fine, if it's easy to whip up. If it's hours of work don't bother. We have a pretty good set of static builders that run as part of the Docker process for that sort of thing.

sudhirj

comment created time in a month

issue commentsuperfly/fly

gRPC example

Go ahead and make changes and then we can worry about transferring. Github makes transferring repos a little harder than it needs to be.

Is that client app already developed? If it is, you can just drop the whole thing in /ui/ or something and I'll make it build + serve as part of the app.

sudhirj

comment created time in a month

issue commentsuperfly/fly

Kong API Gateway on Fly

That is probably related. We aren't actually running Docker, we just expand the root fs into a volume and run a VM with it. But it's almost certainly a permissions issue on /dev/stdout. This is pretty useful info: https://unix.stackexchange.com/questions/38538/bash-dev-stderr-permission-denied

You don't need to fix that, necessarily, but if you want to you could try writing a wrapper script that changes permissions on /dev/stdout then runs nginx as a non-root user.

karllhughes

comment created time in a month

issue commentsuperfly/fly

Kong API Gateway on Fly

Ahhh missed your question.

Logs need to go to stdout and stderr, there aren't any file logs. Based on this question you might have to launch it as an nginx process to get stdout to work: https://discuss.konghq.com/t/log-to-stdout-stderr/429

karllhughes

comment created time in a month

issue commentsuperfly/flyctl

Add a --local-only flag to the flyctl deploy command

We need to test this, but there's a chance you're seeing console output from the remote build. All a remote build does is runs flyctl deploy in a VM with docker available, so it has the exact same output (we just filter it to make it nicer).

gregmsanderson

comment created time in a month

issue commentsuperfly/flyctl

Add a --local-only flag to the flyctl deploy command

CircleCI is a bit of a pain, a --local-only flag would make a ton of sense for CI too. Good idea.

gregmsanderson

comment created time in a month

issue commentsuperfly/flyctl

certs create returns incomplete information

This mutation is actually missing those fields: https://github.com/superfly/flyctl/blob/master/api/resource_certificates.go#L118-L132

codepope

comment created time in a month

issue commentsuperfly/fly

gRPC example

That's right! For some stuff, it makes sense to just run one container/image.

sudhirj

comment created time in a month

issue openedsuperfly/flyctl

Setting a secret tries to monitor a deploy on an undeployed app

Before an app is deployed, there's no deploy to monitor!

created time in a month

issue commentsuperfly/fly

gRPC example

We're playing with this! ghz is pretty f'n cool.

sudhirj

comment created time in a month

issue openedsuperfly/flyctl

Suggested http check config causes error on deploy

I have an app with this as the config, it worked until 5 days ago (I think):

[[services]]
  internal_port = 3000
  protocol = "tcp"

  [services.concurrency]
    hard_limit = 25
    soft_limit = 20

  [[services.http_checks]]
    interval = 10000
    method = "get"
    path = "/"
    protocol = "http"
    timeout = 2000
    tls_skip_verify = false
    [service.http_checks.headers]
      Host = "health.check"

  [[services.ports]]
    handlers = ["http"]
    port = "80"

  [[services.ports]]
    handlers = ["tls", "http"]
    port = "443"

When I deploy, this happens:

➜  ui git:(master) ✗ flyctl deploy
Deploying flyio-ui
==> Validating App Configuration
Oops, something went wrong! Could you try that again?

If I change the config to this it works just fine:

[[services]]
  internal_port = 3000
  protocol = "tcp"

  [services.concurrency]
    soft_limit = 20
    hard_limit = 25

  [[services.ports]]
    handlers = ["tls","http"]
    port = "443"

  [[services.ports]]
    handlers = ["http"]
    port = "80"

  [[services.http_checks]]
    interval = 10000
    method = "get"
    path = "/status"
    protocol = "http"
    timeout = 2000
    headers = { Host = "health.check" }

created time in a month

issue commentsuperfly/fly

Kong API Gateway on Fly

Oh that's curious.

I think caching is an easy example but maybe not the most appropriate for an API gateway. Auth / rate limiting / maybe logging, or even geo load balancing/failover would all be reasonable with Kong if the caching is a non-starter.

karllhughes

comment created time in a month

issue commentsuperfly/fly

gRPC example

Oh that's great.

We can actually enable gRPC health checks pretty easily, so if you're cool with it let's plan on that?

sudhirj

comment created time in a month

issue commentsuperfly/fly

Running OpenResty on Fly

Oh, auth is another good thing to show with OpenResty: https://github.com/zmartzone/lua-resty-openidc

karllhughes

comment created time in a month

issue commentsuperfly/fly

Rails at the Edge

So we actually run Rails at the edge, I have lots of thoughts. The big problem with Rails is it's so heavily tied to a DB, any example that doesn't work with a normal Rails app might not give devs much to imagine about.

I think the "simplest" full Rails example is two Fly apps. One running in IAD and talking to postgres on Heroku or RDS or something. The other running "edge" locations with no DB adapter. And then some mechanism for proxying requests that require DB access to the primary.

This might be too complicated though. The better option might be to do Rails + CockroachDB or Yugabyte or MongoDB geo databases (we can get demo versions of these running).

karllhughes

comment created time in a month

issue commentsuperfly/fly

Running OpenResty on Fly

I'm a huge fan of OpenResty examples, I tend to conflate openresty + nginx (just because openresty is the best way to do lua in nginx). I think it makes total sense to hook up openresty, even if we just call it an nginx example.

One interesting use case for this would be per region rate limiting with Redis: https://github.com/TiVo/lua-resty-rate-limit

karllhughes

comment created time in a month

issue commentsuperfly/fly

Kong API Gateway on Fly

I think using Heroku Postgres is best for now. I think Kong is pretty good about not querying the database on every request, and if you use Redis for caching it should be able to avoid it entirely. Worth a test though, once you get the app running you can try it in different regions to see what the effect is.

karllhughes

comment created time in a month

push eventfly-examples/edge-apollo-cache

Kurt

commit sha 4dde5de93f0f49925b2173a5df1d860de13157b0

links + <code> on script references

view details

push time in a month

push eventfly-examples/edge-apollo-cache

Kurt Mackey

commit sha be0af5ed3e45feb90dd2f85d1551795e583a0d5b

add cut marker in readme

view details

push time in a month

issue commentsuperfly/fly

gRPC example

There's no technical problem, we just haven't exposed it in the config yet. We can get that figurd out.

sudhirj

comment created time in 2 months

issue commentsuperfly/fly

gRPC Explainer

This should work! We don't have a good gRPC demo yet, so we're super curious what you come up with.

The only blocker I can think of might be http2, the TLS negotiation doesn't include the ALPN extension that indicates HTTP2. Depending on the gRPC library, that might be a problem.

Also if you're interested in us paying you to build a gRPC demo, we're working on this "get paid for examples" program right now! Feel free to email me (kurt at fly.io) and we can work it out.

sudhirj

comment created time in 2 months

issue commentsuperfly/flyctl

Show the region(s) which are unhealthy

@gregmsanderson when a deployment fails, you should see status + logs for the exact instance that died. That region is probably not unhealthy, it's more likely the allocation crashed for some reason. The deploy process should continue when that happens but we haven't made it less brittle just yet.

gregmsanderson

comment created time in 2 months

issue commentsuperfly/fly

Apollo GraphQL + Caching

We need to expand the readme on this a bit and make sure all these are addressed:

  • [ ] what this application is (it’s a hello-world for graphql that uses redis to cache)
  • [ ] why graphql is a good fit for edge applications
  • [ ] caching and graphql, how graphql is a really good fit for caching but lots of people don’t do it because it’s perceived as hard to do, turns out not so much
  • [ ] this whole application is just a docker container, you can build and run it locally to play with it, but it also loads trivially on Fly to run on a global edge network
mrkurt

comment created time in 2 months

IssuesEvent

push eventsuperfly/fly

Kurt

commit sha c03732de1c9f22c727989c89afdaba16414ed009

bring in flyctl + example apollo project

view details

push time in 2 months

push eventsuperfly/fly

Kurt

commit sha e3383f2b093499b03df235c51155922b6a2bbd35

bring in flyctl + example apollo project

view details

push time in 2 months

issue openedsuperfly/fly

Nginx + Cache example

An example of nginx on fly with the simplest possible config that supports Cache headers.

created time in 2 months

push eventsuperfly/fly

Kurt

commit sha 9664774a992e2c12526bee714f625d264f29c314

Add link to Fly js runtime

view details

push time in 2 months

push eventsuperfly/fly

Kurt

commit sha fbeb41fbedbc3885a92a1e9dde4b9d128e6526f0

Add write for Fly section

view details

push time in 2 months

more