![Javascript to Elm artwork](https://is5-ssl.mzstatic.com/image/thumb/Podcasts123/v4/ae/06/b5/ae06b52b-64ae-9a7e-1f31-b293a2085da9/mza_3840978457865575010.png/100x100bb.jpg)
Elixir Deployment
Javascript to Elm
English - June 28, 2019 10:00 - 30 minutes - 24.1 MB - ★★★★★ - 4 ratingsTechnology elm javascript programming Homepage Download Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed
When we last checked in our our struggling hero, me, I was struggling with the Jungle that is AWS and it's layers and layers of AIM roles, services accounts, interwoven services, and endless dependencies.
Step one.
Oh snap. After a long hard slog, and what felt like death by a thousand tiny cuts, it's working. I now have a deployed Elixir Phoenix App, building, running, rolling updating, all by git commits.
Cuts
ipv6:
this was in theWhen to set config
AWS is a jungle
So.. I guess I need docker 🙄
GCP cloud_sql connection
Creating docker image
Can I test this image?
Debug in prod?
SQL Admin API access
Where’d PORT go?
Docker build is gonna need more RAM
docker build -t gcr.io/post-it-243617/postit:v0.4.0 . Sending build context to Docker daemon 523.8kB Error response from daemon: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.Docker Args
pass the arg declare the arg use the arg $DB_NAME NO CURLY BRACES ok workingGCP Secrets?
Google KMS (Cloud Key Management)
enable KMS. we learned that from the last API, cloud sql using the gcloud kms key XXXXX manual add keys one by one update txt file, get back encrypted file convert encrypted file to base64 and add as a variable to the cloudbuild.yaml args: [ '-c', 'docker build -t gcr.io/post-it-243617/postit:$REVISION_ID --build-arg DB_PASSWORD=$$db_password --build-arg DB_NAME=$$db_name --build-arg DB_SOCKET_DIR=$$db_socket_dir --build-arg DB_USERNAME=$$db_username --build-arg SECRET_KEY_BASE=$$secret_key_base .' ] secretEnv: ['db_password', 'db_name', 'db_socket_dir', 'db_username', 'secret_key_base'] "Unusable Erlang runtime system! This is likely due to being compiled for another system than the host is running" Building with alpine-elixir:1.7.1 and then serve with alpine:latest there is then a mismatch of erlang versions. checked the distillery examples and locked in the alpine-elixir:1.8.2 and alpine:3.9 Both having the erlang version ERLANG_VERSION=22.0.4Loadbalance and HTTPS
kubectl expose deployment DEPLOYMENT --type=LoadBalancerThe key thing here is to specify the type and your deployment’s name. This will expose your deployment through a service and set up a Load Balancer on Google Cloud Platform.
OH??? Ingress is a kubernetes thing. I could figure out what “Ingress” was 🙄 ResourcesBest Practices for deploying Elixir
Docker ENV passed with -build-arg
Follow JavaScript to Elm Twitter: @jstoelmEmail: [email protected]
Jesse Tomchak Twitter: @jtomchak