tjdam

tjdam

This may not be the right forum to ask this as the question might not be strictly Elixir related, but since I have no clue, here it goes:

I just deployed an OTP release on Google Kubernetes Engine which is a Phoenix application with no frontend at all, it just serves a GraphQL API endpoint.

Everything went as as planned until I realized I wouldn’t be able access that API from my frontend (Next.js deployed on Now) as it doesn’t allow me to access a non https resource.

Now, here’s my question; am I supposed to achieve this by generating certificates and configuring it on config/releases.exs or would I have to configure it with something like a nginx ingress? Or maybe both?

I’m having the hardest time understading what I’m doing here. I saw some tutorials in this forum but it seems to suggest that I need to have a domain so I can generate certificates? Isn’t it possible to have https on the ip address of my Kubernetes cluster?

Any help or indication of material to read would be highly appreciated here :slight_smile:
Thanks!

Showing Posts 1 to 4

nthock

nthock

Not too sure about kubernetes specifically, but to get HTTPS, I can think of 2 approaches, first is to configure nginx. For your case, you may want to consider the Kubernetes way in configuring nginx with reverse proxy and SSL.

Another approach is you let services such as Cloudflare handle the SSL, and CloudFlare will direct the requests to your Kubernetes cluster. To secure this setup, you may need to set your ingress firewall to only accept requests from CloudFlare.

To have HTTPS, yes you need a domain name. You can get .tk domain which is free if need be.

lucaong

lucaong

Take into consideration that even if you use a CDN like CloudFlare, you should still setup HTTPS on your server (either at the ingress level or in the app). That’s because CloudFlare is outside of your cluster, so if the traffic between CloudFlare and your app is not encrypted, you can still be vulnerable to MITM attacks.

Typically, one would use a public certificate on CloudFlare, and a “private” one on the server, setting authenticated origin pulls to make sure that only CloudFlare can connect directly to the server.

That said, back to the original question, there are indeed two approaches:

  • Terminating SSL at the Kubernetes ingress level
  • Terminating SSL in Phoenix

Doing it at the ingress level might make more sense if you plan to have several apps running on the same cluster, all needing HTTPS.

In both case you need to obtain a key and certificate, for example from Let’s Encrypt (yes, you’ll need a domain name to do that). Unfortunately, the instructions to obtain a valid certificate are simpler to follow if you have control of your webserver (like when you run your own Nginx), but once you obtain it, it’s simple enough to set it up either on the ingress or on Phoenix.

tjdam

tjdam OP

Thanks for the replies, guys!

It was also my first post here, great vibes :slight_smile:

cpgo

cpgo

Not entirely related, but it is probably overkill to user kubernetes if you are only using it to deploy this one phoenix app. Unless its a learning exercise I would recomend reaching for kubernetes only when needed

— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
water
I’m aware of 2 such projects, are there others? git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
itzmidinesh
Hi all, I’m working on a Phoenix project where I need to make external HTTP requests and I’m trying to choose between Req and HTTPoison....
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
leoschweizer
Hi, we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
csmr
Hi all, I’m new here and would like to hear peoples views on my Elixir/Phoenix based game-engine! :smiley: Mutonex gamedesign was finish...
New
perzanko
Do we have maintainer of absinthe-graphql/dataloader here? We have a PR that we’d like to merge to the library. Relatively small additive...
New

Other Trending Topics Top

dominicletz
Hey there, I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first. ...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
OndrejValenta
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly) AI dream has many faces, but general...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews