feat: 更新OCI Provider版本至7.20并集成Vault配置
refactor: 重构Terraform配置以使用Consul和Vault存储敏感信息 docs: 添加Vault实施文档和配置指南 chore: 清理不再使用的配置文件和脚本 feat: 添加Nomad集群领导者发现脚本和文档 feat: 实现MCP配置共享方案和同步脚本 style: 更新README中的网络访问注意事项 test: 添加Consul Provider集成测试脚本
This commit is contained in:
86
jobs/openfaas-functions.nomad
Normal file
86
jobs/openfaas-functions.nomad
Normal file
@@ -0,0 +1,86 @@
|
||||
job "openfaas-functions" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
group "hello-world" {
|
||||
count = 1
|
||||
|
||||
constraint {
|
||||
attribute = "${node.unique.name}"
|
||||
operator = "regexp"
|
||||
value = "(master|ash3c|hcp)"
|
||||
}
|
||||
|
||||
task "hello-world" {
|
||||
driver = "podman"
|
||||
|
||||
config {
|
||||
image = "functions/hello-world:latest"
|
||||
ports = ["http"]
|
||||
env = {
|
||||
"fprocess" = "node index.js"
|
||||
}
|
||||
}
|
||||
|
||||
resources {
|
||||
network {
|
||||
mbits = 10
|
||||
port "http" { static = 8080 }
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "hello-world"
|
||||
port = "http"
|
||||
tags = ["openfaas-function"]
|
||||
check {
|
||||
type = "http"
|
||||
path = "/"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group "figlet" {
|
||||
count = 1
|
||||
|
||||
constraint {
|
||||
attribute = "${node.unique.name}"
|
||||
operator = "regexp"
|
||||
value = "(master|ash3c|hcp)"
|
||||
}
|
||||
|
||||
task "figlet" {
|
||||
driver = "podman"
|
||||
|
||||
config {
|
||||
image = "functions/figlet:latest"
|
||||
ports = ["http"]
|
||||
env = {
|
||||
"fprocess" = "figlet"
|
||||
}
|
||||
}
|
||||
|
||||
resources {
|
||||
network {
|
||||
mbits = 10
|
||||
port "http" { static = 8080 }
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "figlet"
|
||||
port = "http"
|
||||
tags = ["openfaas-function"]
|
||||
check {
|
||||
type = "http"
|
||||
path = "/"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
176
jobs/openfaas.nomad
Normal file
176
jobs/openfaas.nomad
Normal file
@@ -0,0 +1,176 @@
|
||||
job "openfaas" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
group "openfaas-gateway" {
|
||||
count = 1
|
||||
|
||||
constraint {
|
||||
attribute = "${node.unique.name}"
|
||||
operator = "regexp"
|
||||
value = "(master|ash3c|hcp)"
|
||||
}
|
||||
|
||||
task "openfaas-gateway" {
|
||||
driver = "podman"
|
||||
|
||||
config {
|
||||
image = "ghcr.io/openfaas/gateway:0.2.35"
|
||||
ports = ["http", "ui"]
|
||||
env = {
|
||||
"functions_provider_url" = "http://${NOMAD_IP_http}:8080"
|
||||
"read_timeout" = "60s"
|
||||
"write_timeout" = "60s"
|
||||
"upstream_timeout" = "60s"
|
||||
"direct_functions" = "true"
|
||||
"faas_nats_address" = "nats://localhost:4222"
|
||||
"faas_nats_streaming" = "true"
|
||||
"basic_auth" = "true"
|
||||
"secret_mount_path" = "/run/secrets"
|
||||
"scale_from_zero" = "true"
|
||||
}
|
||||
}
|
||||
|
||||
resources {
|
||||
network {
|
||||
mbits = 10
|
||||
port "http" { static = 8080 }
|
||||
port "ui" { static = 8081 }
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "openfaas-gateway"
|
||||
port = "http"
|
||||
check {
|
||||
type = "http"
|
||||
path = "/healthz"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group "nats" {
|
||||
count = 1
|
||||
|
||||
constraint {
|
||||
attribute = "${node.unique.name}"
|
||||
operator = "regexp"
|
||||
value = "(master|ash3c|hcp)"
|
||||
}
|
||||
|
||||
task "nats" {
|
||||
driver = "podman"
|
||||
|
||||
config {
|
||||
image = "nats-streaming:0.25.3"
|
||||
ports = ["nats"]
|
||||
args = [
|
||||
"-p",
|
||||
"4222",
|
||||
"-m",
|
||||
"8222",
|
||||
"-hbi",
|
||||
"5s",
|
||||
"-hbt",
|
||||
"5s",
|
||||
"-hbf",
|
||||
"2",
|
||||
"-SD",
|
||||
"-cid",
|
||||
"openfaas"
|
||||
]
|
||||
}
|
||||
|
||||
resources {
|
||||
network {
|
||||
mbits = 10
|
||||
port "nats" { static = 4222 }
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "nats"
|
||||
port = "nats"
|
||||
check {
|
||||
type = "tcp"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group "queue-worker" {
|
||||
count = 1
|
||||
|
||||
constraint {
|
||||
attribute = "${node.unique.name}"
|
||||
operator = "regexp"
|
||||
value = "(master|ash3c|hcp)"
|
||||
}
|
||||
|
||||
task "queue-worker" {
|
||||
driver = "podman"
|
||||
|
||||
config {
|
||||
image = "ghcr.io/openfaas/queue-worker:0.12.2"
|
||||
env = {
|
||||
"gateway_url" = "http://${NOMAD_IP_http}:8080"
|
||||
"faas_nats_address" = "nats://localhost:4222"
|
||||
"faas_nats_streaming" = "true"
|
||||
"ack_wait" = "5m"
|
||||
"write_debug" = "true"
|
||||
}
|
||||
}
|
||||
|
||||
resources {
|
||||
network {
|
||||
mbits = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group "prometheus" {
|
||||
count = 1
|
||||
|
||||
constraint {
|
||||
attribute = "${node.unique.name}"
|
||||
operator = "regexp"
|
||||
value = "(master|ash3c|hcp)"
|
||||
}
|
||||
|
||||
task "prometheus" {
|
||||
driver = "podman"
|
||||
|
||||
config {
|
||||
image = "prom/prometheus:v2.35.0"
|
||||
ports = ["prometheus"]
|
||||
volumes = [
|
||||
"/opt/openfaas/prometheus.yml:/etc/prometheus/prometheus.yml"
|
||||
]
|
||||
}
|
||||
|
||||
resources {
|
||||
network {
|
||||
mbits = 10
|
||||
port "prometheus" { static = 9090 }
|
||||
}
|
||||
}
|
||||
|
||||
service {
|
||||
name = "prometheus"
|
||||
port = "prometheus"
|
||||
check {
|
||||
type = "http"
|
||||
path = "/-/healthy"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
78
jobs/traefik.nomad
Normal file
78
jobs/traefik.nomad
Normal file
@@ -0,0 +1,78 @@
|
||||
job "traefik" {
|
||||
datacenters = ["dc1"]
|
||||
type = "service"
|
||||
|
||||
update {
|
||||
strategy = "canary"
|
||||
max_parallel = 1
|
||||
min_healthy_time = "10s"
|
||||
healthy_deadline = "3m"
|
||||
auto_revert = true
|
||||
}
|
||||
|
||||
group "traefik" {
|
||||
count = 3
|
||||
|
||||
restart {
|
||||
attempts = 3
|
||||
interval = "30m"
|
||||
delay = "15s"
|
||||
mode = "fail"
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
static = 80
|
||||
}
|
||||
port "https" {
|
||||
static = 443
|
||||
}
|
||||
port "api" {
|
||||
static = 8080
|
||||
}
|
||||
}
|
||||
|
||||
task "traefik" {
|
||||
driver = "podman"
|
||||
|
||||
config {
|
||||
image = "traefik:latest"
|
||||
ports = ["http", "https", "api"]
|
||||
volumes = [
|
||||
"/var/run/docker.sock:/var/run/docker.sock:ro", # 如果需要与Docker集成
|
||||
"/root/mgmt/configs/traefik.yml:/etc/traefik/traefik.yml:ro",
|
||||
"/root/mgmt/configs/dynamic:/etc/traefik/dynamic:ro"
|
||||
]
|
||||
}
|
||||
|
||||
env {
|
||||
NOMAD_ADDR = "http://${attr.unique.network.ip-address}:4646"
|
||||
CONSUL_HTTP_ADDR = "http://${attr.unique.network.ip-address}:8500"
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 200
|
||||
memory = 256
|
||||
}
|
||||
|
||||
service {
|
||||
name = "traefik"
|
||||
port = "http"
|
||||
tags = [
|
||||
"traefik.enable=true",
|
||||
"traefik.http.routers.api.rule=Host(`traefik.service.consul`)",
|
||||
"traefik.http.routers.api.service=api@internal",
|
||||
"traefik.http.routers.api.entrypoints=api",
|
||||
"traefik.http.services.api.loadbalancer.server.port=8080"
|
||||
]
|
||||
|
||||
check {
|
||||
type = "http"
|
||||
path = "/ping"
|
||||
interval = "10s"
|
||||
timeout = "2s"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user