From 843b9658d5ef667673e02bda3c5d779d406ecd5a Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Wed, 18 Feb 2026 21:53:46 +0000 Subject: [PATCH] [ci skip] Rename moltbot to openclaw across Terraform, K8s resources, and DNS Update terraform version in init container from 1.12.1 to 1.14.5. --- .../kubernetes/{moltbot => openclaw}/main.tf | 75 +++++++++--------- secrets/nfs_directories.txt | Bin 1666 -> 1668 bytes 2 files changed, 39 insertions(+), 36 deletions(-) rename modules/kubernetes/{moltbot => openclaw}/main.tf (84%) diff --git a/modules/kubernetes/moltbot/main.tf b/modules/kubernetes/openclaw/main.tf similarity index 84% rename from modules/kubernetes/moltbot/main.tf rename to modules/kubernetes/openclaw/main.tf index c23b2a45..d1125214 100644 --- a/modules/kubernetes/moltbot/main.tf +++ b/modules/kubernetes/openclaw/main.tf @@ -6,33 +6,33 @@ variable "llama_api_key" { type = string } variable "brave_api_key" { type = string } variable "skill_secrets" { type = map(string) } -resource "kubernetes_namespace" "moltbot" { +resource "kubernetes_namespace" "openclaw" { metadata { - name = "moltbot" + name = "openclaw" } } module "tls_secret" { source = "../setup_tls_secret" - namespace = kubernetes_namespace.moltbot.metadata[0].name + namespace = kubernetes_namespace.openclaw.metadata[0].name tls_secret_name = var.tls_secret_name } -resource "kubernetes_service_account" "moltbot" { +resource "kubernetes_service_account" "openclaw" { metadata { - name = "moltbot" - namespace = kubernetes_namespace.moltbot.metadata[0].name + name = "openclaw" + namespace = kubernetes_namespace.openclaw.metadata[0].name } } -resource "kubernetes_cluster_role_binding" "moltbot" { +resource "kubernetes_cluster_role_binding" "openclaw" { metadata { - name = "moltbot-cluster-admin" + name = "openclaw-cluster-admin" } subject { kind = "ServiceAccount" - name = kubernetes_service_account.moltbot.metadata[0].name - namespace = kubernetes_namespace.moltbot.metadata[0].name + name = kubernetes_service_account.openclaw.metadata[0].name + namespace = kubernetes_namespace.openclaw.metadata[0].name } role_ref { api_group = "rbac.authorization.k8s.io" @@ -44,7 +44,7 @@ resource "kubernetes_cluster_role_binding" "moltbot" { resource "kubernetes_secret" "ssh_key" { metadata { name = "ssh-key" - namespace = kubernetes_namespace.moltbot.metadata[0].name + namespace = kubernetes_namespace.openclaw.metadata[0].name } data = { "id_rsa" = var.ssh_key @@ -55,7 +55,7 @@ resource "kubernetes_secret" "ssh_key" { resource "kubernetes_config_map" "git_crypt_key" { metadata { name = "git-crypt-key" - namespace = kubernetes_namespace.moltbot.metadata[0].name + namespace = kubernetes_namespace.openclaw.metadata[0].name } data = { "key" = filebase64("${path.root}/.git/git-crypt/keys/default") @@ -65,7 +65,7 @@ resource "kubernetes_config_map" "git_crypt_key" { resource "kubernetes_config_map" "openclaw_config" { metadata { name = "openclaw-config" - namespace = kubernetes_namespace.moltbot.metadata[0].name + namespace = kubernetes_namespace.openclaw.metadata[0].name } data = { "openclaw.json" = jsonencode({ @@ -81,12 +81,13 @@ resource "kubernetes_config_map" "openclaw_config" { contextTokens = 1000000 bootstrapMaxChars = 30000 model = { - primary = "gemini/gemini-2.5-flash" - fallbacks = ["llama-as-openai/Llama-4-Maverick-17B-128E-Instruct-FP8"] + primary = "llama-as-openai/Llama-3.3-70B-Instruct" + fallbacks = ["gemini/gemini-2.5-flash", "llama-as-openai/Llama-4-Scout-17B-16E-Instruct-FP8"] } models = { + "llama-as-openai/Llama-3.3-70B-Instruct" = {} "gemini/gemini-2.5-flash" = {} - "llama-as-openai/Llama-4-Maverick-17B-128E-Instruct-FP8" = {} + "llama-as-openai/Llama-4-Scout-17B-16E-Instruct-FP8" = {} } } } @@ -139,6 +140,8 @@ resource "kubernetes_config_map" "openclaw_config" { apiKey = var.llama_api_key api = "openai-completions" models = [ + { id = "Llama-3.3-70B-Instruct", name = "Llama-3.3-70B-Instruct", reasoning = false, input = ["text"], contextWindow = 128000, maxTokens = 8192, cost = { input = 0, output = 0, cacheRead = 0, cacheWrite = 0 } }, + { id = "Llama-4-Scout-17B-16E-Instruct-FP8", name = "Llama-4-Scout-17B-16E-Instruct-FP8", reasoning = false, input = ["text"], contextWindow = 200000, maxTokens = 8192, cost = { input = 0, output = 0, cacheRead = 0, cacheWrite = 0 } }, { id = "Llama-4-Maverick-17B-128E-Instruct-FP8", name = "Llama-4-Maverick-17B-128E-Instruct-FP8", reasoning = false, input = ["text"], contextWindow = 200000, maxTokens = 8192, cost = { input = 0, output = 0, cacheRead = 0, cacheWrite = 0 } }, ] } @@ -153,12 +156,12 @@ resource "random_password" "gateway_token" { special = false } -resource "kubernetes_deployment" "moltbot" { +resource "kubernetes_deployment" "openclaw" { metadata { - name = "moltbot" - namespace = kubernetes_namespace.moltbot.metadata[0].name + name = "openclaw" + namespace = kubernetes_namespace.openclaw.metadata[0].name labels = { - app = "moltbot" + app = "openclaw" tier = var.tier } } @@ -169,17 +172,17 @@ resource "kubernetes_deployment" "moltbot" { replicas = 1 selector { match_labels = { - app = "moltbot" + app = "openclaw" } } template { metadata { labels = { - app = "moltbot" + app = "openclaw" } } spec { - service_account_name = kubernetes_service_account.moltbot.metadata[0].name + service_account_name = kubernetes_service_account.openclaw.metadata[0].name # Init container: Download tools + clone repo + terraform init (parallelized) init_container { @@ -208,7 +211,7 @@ resource "kubernetes_deployment" "moltbot" { PID_KUBECTL=$! # terraform - (curl -sL "https://releases.hashicorp.com/terraform/1.12.1/terraform_1.12.1_linux_amd64.zip" -o /tmp/tf.zip && unzip -q /tmp/tf.zip -d /tools && chmod +x /tools/terraform && rm /tmp/tf.zip) & + (curl -sL "https://releases.hashicorp.com/terraform/1.14.5/terraform_1.14.5_linux_amd64.zip" -o /tmp/tf.zip && unzip -q /tmp/tf.zip -d /tools && chmod +x /tools/terraform && rm /tmp/tf.zip) & PID_TF=$! # git-crypt (already installed via apk) @@ -254,11 +257,11 @@ resource "kubernetes_deployment" "moltbot" { contexts: - context: cluster: in-cluster - user: moltbot + user: openclaw name: in-cluster current-context: in-cluster users: - - name: moltbot + - name: openclaw user: token: $SA_TOKEN KUBEEOF @@ -301,7 +304,7 @@ resource "kubernetes_deployment" "moltbot" { # Main container: OpenClaw container { - name = "moltbot" + name = "openclaw" image = "ghcr.io/openclaw/openclaw:2026.2.9" command = ["node", "openclaw.mjs", "gateway", "--allow-unconfigured", "--bind", "lan"] port { @@ -400,14 +403,14 @@ resource "kubernetes_deployment" "moltbot" { name = "workspace" nfs { server = "10.0.10.15" - path = "/mnt/main/moltbot/workspace" + path = "/mnt/main/openclaw/workspace" } } volume { name = "data" nfs { server = "10.0.10.15" - path = "/mnt/main/moltbot/data" + path = "/mnt/main/openclaw/data" } } volume { @@ -428,17 +431,17 @@ resource "kubernetes_deployment" "moltbot" { } } -resource "kubernetes_service" "moltbot" { +resource "kubernetes_service" "openclaw" { metadata { - name = "moltbot" - namespace = kubernetes_namespace.moltbot.metadata[0].name + name = "openclaw" + namespace = kubernetes_namespace.openclaw.metadata[0].name labels = { - app = "moltbot" + app = "openclaw" } } spec { selector = { - app = "moltbot" + app = "openclaw" } port { port = 80 @@ -449,8 +452,8 @@ resource "kubernetes_service" "moltbot" { module "ingress" { source = "../ingress_factory" - namespace = kubernetes_namespace.moltbot.metadata[0].name - name = "moltbot" + namespace = kubernetes_namespace.openclaw.metadata[0].name + name = "openclaw" tls_secret_name = var.tls_secret_name port = 80 protected = true diff --git a/secrets/nfs_directories.txt b/secrets/nfs_directories.txt index 893c5531d55ed4f3bdcd94e63d07e6ea7e33ff26..d11d62180e6860ed6fc47d8483358abe5b3f14b5 100644 GIT binary patch literal 1668 zcmV-~27CDcM@dveQdv+`03NhDdb*yT3xrQ+(4k4b=x0Q+4tIN0%UQg>xVR_Zk-!#z#V&MZWmR%iqv0=I98rFEXAmJnGbdU9VDTf8T#x(EKa^63?t;`5^vUa zcyn|J04BFk)c{b)^w(46I~76maa^`1kps95(w zDv$6*=INIsqr3!D*7#o6hz@xQ-jsgMR3^2{X3G4WqLe4HSC)}iwaV(I55T748)|gx zG!x;Qe%E{r64w@0$lpv&|M0w}Kpw~hsy7UOmkUtLB*~f0%bBOWDyQ@l>cwA_dkdKd zKnuJHjmE@@LiYN6veYX?1<}(s$VQ3p6A?O%ZoWG<;$Hx0btj=MAc_sYAskPo45bcs zHWW2mpYu#5=QK0?*%_Sl#pcx2eWsy%Zo6iA$~ z5))?yanL{jK|m!_Q!rWK)o9&?J;#XPe1a34IFrURuC1$=Z;iIDc{$dl1%eP*)Eu2O z1ui~EOO4<)PJ^ueE+WIog|81i;;5*(A_au9IGX_DxGO+`o zEtEuP*>jbXndscB(@2#q{fTjG*fQZnO8Rr<+Ha1Sw4L>O%p@{Ap70dA77gX#2p+U6 z)!N;1$m0e|DT@T5nz{)~)}u)R2SkmLf{r)7FOJXLUW$y2($zHt*G1O^?6&I~fzgS8 z-v!2ODUBCZE9wiy$N57^9v~XThFz6tq{fndao3Sl8)J#ID$>^Ur;q)z`uAe_#Bu$N z#|g?VKyLi`KdTjwo_{HjKqCy~0SX;i`4 zb5S>hE9naG&Rd{`kh`huDHz2e4^B*M-cSMu@w1q_56aw)p`&{?f#%;W)8P0o5K(E8 z0i-JDr~M@aa9bI8MsUMj{IHA2YTx>_P;!f9oYXmXpywW6MN2>lmOyW$ z^lsH*wDE?dg>a5^%(0XWCx2=;bOfMFjuL5RVhZHUYBA|f);FiG9+pyOeCDYdR1h_Y zKSpGhDunXykUHIGx!WL5$SVvYL6oMhuL_7&wkc&EQTJcJ&|BOhfSuZw%WB01|L`cT zSd-;qVJ2`kiN3`Kh4DWC&B}k`-Q3hL#A1~DaWO|AHu_5rO2QJQNd~3>`+xKR)9xeB zvZ$Er|Dn|>V#=4Ow~=)RtRx-&tRm=a0CLrN_d2<|XP|zxu$cUA8fq*cVL3i%tY+m9 zb2|o7Ggba-d3H zvV*ONEph7}6-4I0m?7n)#Yi&(P@$zN-4~?ef*`W20tuW35A!fX8}5X z3th3XhAY+Nh6%AAISg;C8`BgKxOKJ>vG<}7@O%=QxJs|}uvcu_Y3SSqNI|$&imtO& zo7n)BaBSf~msMIw2x>35h5XkX8Y2(zl!e;(OM)S@`qMi3?qg{b(Xh9ea~wzO1~0_^ zf^^JsL;@1I<|;+lObY_rKW74__LvUQHmCR~ zD-(|+@DCW74my#IXxAxl)6oc&R*$pJd%Jxv7z zWcXrF>HKHRDY8wW8IdQtB!9J&Zelj3DY&HlIomJQA4$KzBAsG~UJ@w4FT7~QLrx#y zXU>Kd3GA;9EwwjdzZU2!?@4`P%?f$jco-(zII1o4k~GQy literal 1666 zcmV-|27UPeM@dveQdv+`06#9nxdyQIC5u<%Qsy?4rMO+<+`K(cmXA*YR9F1F0+n=5 zpcpEJm2AI#x{kn$QRlu9BzuKzZrL*q_yAeY`_Erg5oetcA-=Ocqn^`R@ zGRg4L%T4;09NfuK^=u$dMxsWI-&*F*v&RMVB#Z75L+U~4T@H~`AAtoLOPUp;FUt}o z0avvKcP-aw6o1v?wRUt6%6s&EOBib?_0+xVktH7_o^`R2utO!1(a6NazQ!&jL|Gag zNx-|XXF;60_L+Ld=$%wHfAmWQ{O5Q{9G%kX+tjQd<`Xt2```Ns3)$bHGKr9niwmk~ zr(5*rEQdaDcseKwQE|We{+2c1T0rJ~88SKw6EF3%9)L^z%fK=8V)|?Ia%N=Z=E645 z7@{P0JLrg$u3pIO1ZPDa@p594$M{q7u3zgAlo!;*1B~Zf(SzHw+skD2#ko#Ef@or~ zAmc65_I)4}$czE2_k%DlZR^$R)j-b+mz($jy#G4R@fu0%snBn8DWVDyUdXW7!A&AN zc4W2sPPA0-YoF_Bs5H5Lwg^$p;CHT~)|n@B;|p#%}lZl6^Y#qq@pJmEJbR+`ug zil8haEC!j`rCgJrk)!VzlsxT-ytMUQ%q_-4gy*dN{;*S9miZWxyt%%f3W;ddmHl+w2J{N zPGh(|NUu@g&J{;9Q&R8KjB`YA;S%>?%Yd*mtue6`k#5TbE|X4!Hdk{N^wI3Tx{Pi% z33}bOKCn%6?Tp3KnaFc4Bh#0VNTHYTZoBbasTWcl`F1_gYvi|%Hd59hk7*CS!|1YW zJ+10uDmL85CC6$8oO6$H!X7tbq5-@7@EB&ZiMtCiD!_|UEXN4Fmjzn2>T*=Fr1_w% zhg_8TS|56rp|%Bc48Fx!^-=z9`;TT@T?>|D13#S=E>|bwnFiD8)?)YKUWd6(?0=9K zkoK&m*l74SJHIdy#@!fSCV2*r&@ih9e9{-DVD}ii2&wI09lygCkG;y^BII5XNU5cB`~VTH$K*P z7WNJ}2j>mk$ykKd_v$&84^roOfz}X%fFHw*RJK;Nfi;RG zP|xEeVdw&?QjoKKZ%!&KwDcjQexg^vqO~7CIDD`TsV_dDB$y8siB$-E4JqwbXd}v{ zSO~w;-w7P*>8gJP$`bQ( z3oBG=7znPlym0@UpK%|JCY3^g)51aQFV#wYer|?z0{+Ho2lUU{$bRd(%;A^6X|87_QXE=rEJ2Vkkrm88%TCfq zhRKE=$h~GkIE&+@8rHS?qL<2CxTZNry{dvyUb&h)6|M?lj-+D|-fH^NhEnY33=>_v zTh5_Q%;Uy~#1mE_pb+Md?yEZlsJ_Cei-(uyDHL+A4Jr7NzmK>XRwCnx?g!RCv{bla z+)rQHtAb>=E_jN9lWDxQD<7F-7_y(`{BB|)Q9uo#*K&^4n@eJn7$Zj&aLBdU##WuX M=$6rmpUh=$3iI