SlideShare a Scribd company logo
Easy Cloud Native Transformation
with HashiCorp Nomad
Bram Vogelaar
@attachmentgenie
• Used to be a Molecular Biologist
• Then became a Dev, now an Ops
• Currently Cloud Engineer @ The Factory
• Amsterdam HUG organizer
• Almost author => Workload Orchestration Made Easy With Nomad
$ whoami
Moving it all to the cloud
Vertical scaling
And than stuff got complicated….
l Open-source tool for dynamic workload scheduling
l Batch, containerized, and non-containerized applications.
l Has native Consul and Vault integrations.
l Has token based access setup.
l Jobs written in (H)ashiCorp (C)onfiguration (L)anguage
https://www.nomadproject.io/
Nomad
Deploy the blog
job "blog" {
group ”hugo" {
network {
port "http" { to = ”80” }
}
service {
name = ”attachmentgeniedotcom"
port. = ”http"
}
task ”nginx" {
driver = "docker"
config {
image = "${PRIVATE}.dkr.ecr.us-east-1.amazonaws.com/blog:19”
ports = ["http"]
}
}
}
1 == None
job "blog" {
datacenters = ["aws"]
type = "service"
group "hugo" {
count = 2
Force onto different hardware
job "blog" {
datacenters = ["aws"]
type = "service"
group "hugo" {
count = 2
constraint {
operator = "distinct_hosts"
value = "true"
}
Suggest onto different hardware
job "blog" {
datacenters = ["aws"]
type = "service"
group "hugo" {
count = 2
Spread {
attribute = "${node.datacenter}"
}
Based on custom meta-data
/etc/nomad.d/config.hcl
Client {
Enabled = true
Meta {
"rack" = "his"
}
}
blog.nomad
job "blog" {
group "hugo" {
Spread {
attribute = "${meta.rack}"
target "his" {
percent = 50
}
target "her" {
percent = 50
}
}
service {
name = "grafana"
provider = "nomad"
port = "grafana_ui"
check {
type = "http"
path = "/api/health"
interval = "10s"
timeout. = "2s"
}
tags = [
"traefik.enable=true",
]
}
Native Service Discovery ( > 1.3)
template {
data = <<EOH
server {
listen *:80;
server_name grafana.teambla.com;
location / {
{{ range nomadService ”grafana" }}
proxy_pass http://{{ .Address }}:{{ .Port }};
{{ end }}
….
}
EOH
destination = "local/nginx.conf"
}
Native Service Discovery ( > 1.3)
$ nomad alloc checks f6683eb8
Status of 1 Nomad Service Checks
ID = e47351cef1c81ca56bf70be6b48ae44a
Name = service: "grafana" check
Group = grafana.grafana[0]
Task = grafana
Service = grafana
Status = success
StatusCode = 200
Mode = healthiness
Timestamp = 2022-10-03T12:43:48Z
Output = nomad: http ok
Service Checks
Service Overview
$ cat grafana.nomad
service {
name = "grafana"
provider = "nomad"
port = "grafana_ui"
tags = [
"traefik.enable=true",
]
}
Ingress / Traefik
$ cat traefik.yaml
providers:
nomad:
address: http://${attr.unique.network.ip-address}:4646”
exposedByDefault: false
https://traefik.io <- 2.8.0
Metrics / Prometheus
https://prometheus.io <- 2.37.0
$ cat grafana.nomad
service {
name = "grafana"
provider = "nomad"
port = "grafana_ui"
tags = [
"metrics",
]
}
$ cat prometheus.yaml
scrape_configs:
- job_name: 'nomad_sd'
nomad_sd_configs:
- server: 'http://{{ env "attr.unique.network.ip-address" }}:4646'
relabel_configs:
- source_labels: ['__meta_nomad_tags']
regex: '(.*),metrics,(.*)'
action: keep
- source_labels: [__meta_nomad_service]
target_label: job
l Open-Source Service Discovery Tool
l Build-in KV store
l Service Mesh tool
l Uses watchers to have near instant feedback loops
https://www.consul.io/
Consul
• Levant
• Templating and packaging tool
• Easily deploy popular applications to Nomad
• Re-use common patterns across internal applications
• Find and share job definitions with the Nomad community
• Jobs written in (H)ashiCorp (C)onfiguration (L)anguage
• Templates are written using Go Template Syntax.
• Nightlies only right now!
Nomad Pack
https://github.com/hashicorp/nomad-pack
variable "datacenters" {
description = "A list of datacenters in the region which are eligible for task placement"
type = list(string)
default = [“dc1”]
}
Variable “resources” {
description = “The resource to assign to the blog service task”
type = object({
cpu = number
memory = number
})
default = {
cpu = 200,
memory = 256
}
}
variables.hcl
$ cat packs/blog/templates/blog.nomad.tpl
….
datacenters = [[ .my.datacenters | toStringList ]]
…
resources {
cpu = [[ .my.blog_resources.cpu ]]
memory = [[ .my.blog_resources.memory ]]
}
…
Pack Templates
• nomad-pack registry list
• nomad-pack registry add https://github.com/attachmentgenie/hashitalks-registry
• nomad-pack run blog --var namespace=dashboard
• nomad-pack run packs/blog -f vars/blog.hcl
Pack Registries
https://github.com/hashicorp/nomad-pack-community-registry
Nomad UI (> 1.4.3)
(secure) Variables (> 1.4)
Secrets
task "grafana" {
driver = "docker"
config {
image = "grafana/grafana:9.2.3"
ports = ["grafana_ui"]
}
env {
{{- with nomadVar "nomad/jobs/grafana" -}}
GF_SECURITY_ADMIN_USER = {{. GF_SECURITY_ADMIN_USER}}
GF_SECURITY_ADMIN_PASSWORD = {{. GF_SECURITY_ADMIN_PASSWORD}}
{{- end -}}
}
l Open-Source tool to do secrets management
l Secure, store and tightly control access to tokens, passwords,
encryption keys for protecting secrets and other sensitive data using a UI, CLI, or HTTP API.
l Certificate management
l Password rotation (e.g. SSH, MySQL)
https://www.vaultproject.io/
Vault
Nomad autoscaler
Introduced in/with Nomad 0.11
(Currently) independently release cycle
Gaining new functionality every release
Build in Functionality for horizontal and vertical scaling
But extendable by your own (community) plugins
● Makes decisions based on a checks
● Checks are a combination of
• Data queried from an APM
• Defined STRATEGY
• Attempt to approach TARGET value
● Multiple Checks can be combined
• Answer with the most resources will win!
• ScaleOut and ScaleIn => ScaleOut
• ScaleOut and ScaleNone => ScaleOut
• ScaleIn and ScaleNone => ScaleNone
• ScaleOut(10) and ScaleOut(9) => ScaleOut(10)
• ScaleIn(3) and ScaleIn(4) => ScaleIn(4)
Auto-scaling TLDR
/etc/nomad.d/config.hcl
nomad {
address = "http://{{env "attr.unique.network.ip-address" }}:4646"
}
apm "prometheus" {
driver = "prometheus"
config = {
address = "http://prometheus.service.consul:9090"
}
}
strategy "target-value" {
driver = "target-value"
}
Config for the autoscaler
job "blog" {
datacenters = ["aws"]
type = "service"
group "hugo" {
count = 3
scaling {
enabled = true
min = 1
max = 20
policy {
cooldown = “20s”
check “avg_instance_sessions” {
source = “prometheus”
query = “scalar(avg(traefik_service_open_connections{service=”blog@consulcatalog”}))”
strategy “target-value” {
target = 5
}
Enable autoscaling for the blog
Observe Load
Correlate events with metrics
Moving it all to the cloud - QED
Questions ?
The Floor is yours…
bram@attachmentgenie.com
@attachmentgenie
https://www.slideshare.net/attachmentgenie

More Related Content

PDF
Uncomplicated Nomad
PPTX
Apache Knox setup and hive and hdfs Access using KNOX
PPTX
Kafka Tutorial: Kafka Security
PDF
Dive into PySpark
PDF
Building an open data platform with apache iceberg
PDF
Spring integration을 통해_살펴본_메시징_세계
PDF
Apache Spark Data Validation
PDF
Long running processes in DDD
Uncomplicated Nomad
Apache Knox setup and hive and hdfs Access using KNOX
Kafka Tutorial: Kafka Security
Dive into PySpark
Building an open data platform with apache iceberg
Spring integration을 통해_살펴본_메시징_세계
Apache Spark Data Validation
Long running processes in DDD

What's hot (20)

PDF
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
PDF
Kafka Security 101 and Real-World Tips
PDF
From Zero to Hero with Kafka Connect
PPTX
Practical Kerberos with Apache HBase
PPTX
Migrating from InnoDB and HBase to MyRocks at Facebook
PPTX
Prometheus (Prometheus London, 2016)
PPTX
Introduction to Redis
PDF
Parallelizing with Apache Spark in Unexpected Ways
ODP
nftables - the evolution of Linux Firewall
PPTX
Kafka Tutorial - introduction to the Kafka streaming platform
PDF
NiFi 시작하기
PDF
The basics of fluentd
PPTX
Kafka and Avro with Confluent Schema Registry
PDF
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
DOCX
Data power Performance Tuning
PDF
HDFS on Kubernetes—Lessons Learned with Kimoon Kim
PPTX
introduction about REST API
PDF
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
PDF
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022
PPTX
Introduction to ELK
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Kafka Security 101 and Real-World Tips
From Zero to Hero with Kafka Connect
Practical Kerberos with Apache HBase
Migrating from InnoDB and HBase to MyRocks at Facebook
Prometheus (Prometheus London, 2016)
Introduction to Redis
Parallelizing with Apache Spark in Unexpected Ways
nftables - the evolution of Linux Firewall
Kafka Tutorial - introduction to the Kafka streaming platform
NiFi 시작하기
The basics of fluentd
Kafka and Avro with Confluent Schema Registry
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
Data power Performance Tuning
HDFS on Kubernetes—Lessons Learned with Kimoon Kim
introduction about REST API
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022
Introduction to ELK
Ad

Similar to Easy Cloud Native Transformation with Nomad (20)

PDF
Easy Cloud Native Transformation using HashiCorp Nomad
PPTX
Modern Scheduling for Modern Applications with Nomad
PDF
10 things i learned building nomad-packs
PDF
10 things I learned building Nomad packs
PPTX
Nomad by HashiCorp Presentation (DevOps)
PPTX
Nomad by HashiCorp Presentation (DevOps)
PDF
Hashicorp Nomad
PDF
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
PDF
20220608 - Luxembourg HUG Meetup
PDF
Homologous Apache Spark Clusters Using Nomad with Alex Dadgar
PDF
Running Trusted Payload with Nomad and Waypoint
PDF
Ground Control to Nomad Job Dispatch
PDF
Autoscaling with hashi_corp_nomad
PDF
Running trusted payloads with Nomad and Waypoint
PDF
Nomad Multi-Cloud
PDF
Living the Nomadic life - Nic Jackson
PDF
London HUG 8/3 - Nomad
PDF
Zusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehts
PDF
DACHNUG50 EVERYTHING-you-need-to-know-about-HCL-Nomad-Web.pdf
PDF
How to Bring HCL Nomad Web and Domino Together Without SafeLinx
Easy Cloud Native Transformation using HashiCorp Nomad
Modern Scheduling for Modern Applications with Nomad
10 things i learned building nomad-packs
10 things I learned building Nomad packs
Nomad by HashiCorp Presentation (DevOps)
Nomad by HashiCorp Presentation (DevOps)
Hashicorp Nomad
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
20220608 - Luxembourg HUG Meetup
Homologous Apache Spark Clusters Using Nomad with Alex Dadgar
Running Trusted Payload with Nomad and Waypoint
Ground Control to Nomad Job Dispatch
Autoscaling with hashi_corp_nomad
Running trusted payloads with Nomad and Waypoint
Nomad Multi-Cloud
Living the Nomadic life - Nic Jackson
London HUG 8/3 - Nomad
Zusammenführung von HCL Nomad Web und Domino ohne SafeLinx - So gehts
DACHNUG50 EVERYTHING-you-need-to-know-about-HCL-Nomad-Web.pdf
How to Bring HCL Nomad Web and Domino Together Without SafeLinx
Ad

More from Bram Vogelaar (20)

PPTX
Terraforming your Platform Engineering organisation.pptx
PDF
Secure second days operations with Boundary and Vault.pdf
PDF
Cost reconciliation in a post CMDB world
PDF
Self scaling Multi cloud nomad workloads
PDF
Scraping metrics for fun and profit
PDF
Observability; a gentle introduction
PDF
Securing Prometheus exporters using HashiCorp Vault
PDF
CICD using jenkins and Nomad
PDF
Bootstrapping multidc observability stack
PDF
Gamification of Chaos Testing
PDF
Puppet and the HashiStack
PDF
Bootstrapping multidc observability stack
PPTX
Creating Reusable Puppet Profiles
PDF
Gamification of Chaos Testing
PDF
Observability with Consul Connect
PDF
Testing your infrastructure with litmus
PDF
Devops its not about the tooling
PDF
High Available Drupal
PDF
Over engineering your personal website
PDF
Integrating icinga2 and the HashiCorp suite
Terraforming your Platform Engineering organisation.pptx
Secure second days operations with Boundary and Vault.pdf
Cost reconciliation in a post CMDB world
Self scaling Multi cloud nomad workloads
Scraping metrics for fun and profit
Observability; a gentle introduction
Securing Prometheus exporters using HashiCorp Vault
CICD using jenkins and Nomad
Bootstrapping multidc observability stack
Gamification of Chaos Testing
Puppet and the HashiStack
Bootstrapping multidc observability stack
Creating Reusable Puppet Profiles
Gamification of Chaos Testing
Observability with Consul Connect
Testing your infrastructure with litmus
Devops its not about the tooling
High Available Drupal
Over engineering your personal website
Integrating icinga2 and the HashiCorp suite

Recently uploaded (20)

PPT
Teaching material agriculture food technology
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Empathic Computing: Creating Shared Understanding
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Approach and Philosophy of On baking technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
KodekX | Application Modernization Development
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
Teaching material agriculture food technology
Building Integrated photovoltaic BIPV_UPV.pdf
Big Data Technologies - Introduction.pptx
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Empathic Computing: Creating Shared Understanding
Network Security Unit 5.pdf for BCA BBA.
NewMind AI Weekly Chronicles - August'25 Week I
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Approach and Philosophy of On baking technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
KodekX | Application Modernization Development
The AUB Centre for AI in Media Proposal.docx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Chapter 3 Spatial Domain Image Processing.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Review of recent advances in non-invasive hemoglobin estimation
Digital-Transformation-Roadmap-for-Companies.pptx

Easy Cloud Native Transformation with Nomad

  • 1. Easy Cloud Native Transformation with HashiCorp Nomad Bram Vogelaar @attachmentgenie
  • 2. • Used to be a Molecular Biologist • Then became a Dev, now an Ops • Currently Cloud Engineer @ The Factory • Amsterdam HUG organizer • Almost author => Workload Orchestration Made Easy With Nomad $ whoami
  • 3. Moving it all to the cloud
  • 5. And than stuff got complicated….
  • 6. l Open-source tool for dynamic workload scheduling l Batch, containerized, and non-containerized applications. l Has native Consul and Vault integrations. l Has token based access setup. l Jobs written in (H)ashiCorp (C)onfiguration (L)anguage https://www.nomadproject.io/ Nomad
  • 7. Deploy the blog job "blog" { group ”hugo" { network { port "http" { to = ”80” } } service { name = ”attachmentgeniedotcom" port. = ”http" } task ”nginx" { driver = "docker" config { image = "${PRIVATE}.dkr.ecr.us-east-1.amazonaws.com/blog:19” ports = ["http"] } } }
  • 8. 1 == None job "blog" { datacenters = ["aws"] type = "service" group "hugo" { count = 2
  • 9. Force onto different hardware job "blog" { datacenters = ["aws"] type = "service" group "hugo" { count = 2 constraint { operator = "distinct_hosts" value = "true" }
  • 10. Suggest onto different hardware job "blog" { datacenters = ["aws"] type = "service" group "hugo" { count = 2 Spread { attribute = "${node.datacenter}" }
  • 11. Based on custom meta-data /etc/nomad.d/config.hcl Client { Enabled = true Meta { "rack" = "his" } } blog.nomad job "blog" { group "hugo" { Spread { attribute = "${meta.rack}" target "his" { percent = 50 } target "her" { percent = 50 } }
  • 12. service { name = "grafana" provider = "nomad" port = "grafana_ui" check { type = "http" path = "/api/health" interval = "10s" timeout. = "2s" } tags = [ "traefik.enable=true", ] } Native Service Discovery ( > 1.3)
  • 13. template { data = <<EOH server { listen *:80; server_name grafana.teambla.com; location / { {{ range nomadService ”grafana" }} proxy_pass http://{{ .Address }}:{{ .Port }}; {{ end }} …. } EOH destination = "local/nginx.conf" } Native Service Discovery ( > 1.3)
  • 14. $ nomad alloc checks f6683eb8 Status of 1 Nomad Service Checks ID = e47351cef1c81ca56bf70be6b48ae44a Name = service: "grafana" check Group = grafana.grafana[0] Task = grafana Service = grafana Status = success StatusCode = 200 Mode = healthiness Timestamp = 2022-10-03T12:43:48Z Output = nomad: http ok Service Checks
  • 16. $ cat grafana.nomad service { name = "grafana" provider = "nomad" port = "grafana_ui" tags = [ "traefik.enable=true", ] } Ingress / Traefik $ cat traefik.yaml providers: nomad: address: http://${attr.unique.network.ip-address}:4646” exposedByDefault: false https://traefik.io <- 2.8.0
  • 17. Metrics / Prometheus https://prometheus.io <- 2.37.0 $ cat grafana.nomad service { name = "grafana" provider = "nomad" port = "grafana_ui" tags = [ "metrics", ] } $ cat prometheus.yaml scrape_configs: - job_name: 'nomad_sd' nomad_sd_configs: - server: 'http://{{ env "attr.unique.network.ip-address" }}:4646' relabel_configs: - source_labels: ['__meta_nomad_tags'] regex: '(.*),metrics,(.*)' action: keep - source_labels: [__meta_nomad_service] target_label: job
  • 18. l Open-Source Service Discovery Tool l Build-in KV store l Service Mesh tool l Uses watchers to have near instant feedback loops https://www.consul.io/ Consul
  • 19. • Levant • Templating and packaging tool • Easily deploy popular applications to Nomad • Re-use common patterns across internal applications • Find and share job definitions with the Nomad community • Jobs written in (H)ashiCorp (C)onfiguration (L)anguage • Templates are written using Go Template Syntax. • Nightlies only right now! Nomad Pack https://github.com/hashicorp/nomad-pack
  • 20. variable "datacenters" { description = "A list of datacenters in the region which are eligible for task placement" type = list(string) default = [“dc1”] } Variable “resources” { description = “The resource to assign to the blog service task” type = object({ cpu = number memory = number }) default = { cpu = 200, memory = 256 } } variables.hcl
  • 21. $ cat packs/blog/templates/blog.nomad.tpl …. datacenters = [[ .my.datacenters | toStringList ]] … resources { cpu = [[ .my.blog_resources.cpu ]] memory = [[ .my.blog_resources.memory ]] } … Pack Templates
  • 22. • nomad-pack registry list • nomad-pack registry add https://github.com/attachmentgenie/hashitalks-registry • nomad-pack run blog --var namespace=dashboard • nomad-pack run packs/blog -f vars/blog.hcl Pack Registries https://github.com/hashicorp/nomad-pack-community-registry
  • 23. Nomad UI (> 1.4.3)
  • 25. Secrets task "grafana" { driver = "docker" config { image = "grafana/grafana:9.2.3" ports = ["grafana_ui"] } env { {{- with nomadVar "nomad/jobs/grafana" -}} GF_SECURITY_ADMIN_USER = {{. GF_SECURITY_ADMIN_USER}} GF_SECURITY_ADMIN_PASSWORD = {{. GF_SECURITY_ADMIN_PASSWORD}} {{- end -}} }
  • 26. l Open-Source tool to do secrets management l Secure, store and tightly control access to tokens, passwords, encryption keys for protecting secrets and other sensitive data using a UI, CLI, or HTTP API. l Certificate management l Password rotation (e.g. SSH, MySQL) https://www.vaultproject.io/ Vault
  • 27. Nomad autoscaler Introduced in/with Nomad 0.11 (Currently) independently release cycle Gaining new functionality every release Build in Functionality for horizontal and vertical scaling But extendable by your own (community) plugins
  • 28. ● Makes decisions based on a checks ● Checks are a combination of • Data queried from an APM • Defined STRATEGY • Attempt to approach TARGET value ● Multiple Checks can be combined • Answer with the most resources will win! • ScaleOut and ScaleIn => ScaleOut • ScaleOut and ScaleNone => ScaleOut • ScaleIn and ScaleNone => ScaleNone • ScaleOut(10) and ScaleOut(9) => ScaleOut(10) • ScaleIn(3) and ScaleIn(4) => ScaleIn(4) Auto-scaling TLDR
  • 29. /etc/nomad.d/config.hcl nomad { address = "http://{{env "attr.unique.network.ip-address" }}:4646" } apm "prometheus" { driver = "prometheus" config = { address = "http://prometheus.service.consul:9090" } } strategy "target-value" { driver = "target-value" } Config for the autoscaler
  • 30. job "blog" { datacenters = ["aws"] type = "service" group "hugo" { count = 3 scaling { enabled = true min = 1 max = 20 policy { cooldown = “20s” check “avg_instance_sessions” { source = “prometheus” query = “scalar(avg(traefik_service_open_connections{service=”blog@consulcatalog”}))” strategy “target-value” { target = 5 } Enable autoscaling for the blog
  • 33. Moving it all to the cloud - QED
  • 34. Questions ? The Floor is yours… bram@attachmentgenie.com @attachmentgenie https://www.slideshare.net/attachmentgenie