Make base more robust for the init infra deployments
This commit is contained in:
@@ -5,44 +5,45 @@
|
||||
[infra.init :as infra]
|
||||
[k8s.add-ons.csi-driver.hetzner :as hetzner-csi]
|
||||
[k8s.add-ons.ingress-controller.caddy :as caddy]
|
||||
[k8s.services.openbao.service :as vault-service]))
|
||||
[infra.openbao :as openbao]))
|
||||
|
||||
(defn if-no-apps [apps then-fn & [else-fn]]
|
||||
(if (nil? apps)
|
||||
(then-fn)
|
||||
(if else-fn (else-fn) nil)))
|
||||
|
||||
|
||||
(defn app-deployments
|
||||
"Deploy applications with proper dependency chain"
|
||||
[provider config kc apps]
|
||||
(let [vault-result (vault-service/deploy-vault provider)
|
||||
app-results (if (nil? apps) {} (apps config provider))]
|
||||
(assoc app-results :vault vault-result)))
|
||||
|
||||
(defn initialize [apps]
|
||||
(let [cfg (pulumi/Config.)
|
||||
cluster (infra/create-cluster cfg)
|
||||
setup (.apply (get cluster :kubeconfig)
|
||||
stack-ref (new pulumi/StackReference "init")
|
||||
kubeconfig (if-no-apps apps #(infra/create-cluster cfg) #(.getOutput stack-ref "kubeconfig"))
|
||||
setup (.apply kubeconfig
|
||||
(fn [kc]
|
||||
(js/Promise.
|
||||
(fn [resolve _reject]
|
||||
(let [provider (new k8s/Provider
|
||||
"k8s-dynamic-provider"
|
||||
(clj->js {:kubeconfig kc}))]
|
||||
(caddy/deploy provider)
|
||||
(hetzner-csi/deploy provider)
|
||||
(clj->js {:kubeconfig kc}))]
|
||||
(resolve
|
||||
(if (nil? apps)
|
||||
(app-deployments provider cfg kc nil)
|
||||
(app-deployments provider cfg kc apps))))))))]
|
||||
{:cluster cluster :setup setup}))
|
||||
(if-no-apps
|
||||
apps
|
||||
#(let [vault-result (openbao/deploy provider)
|
||||
caddy-result (caddy/deploy provider)
|
||||
csi-result (hetzner-csi/deploy provider)]
|
||||
{:vault vault-result
|
||||
:caddy caddy-result
|
||||
:csi csi-result})
|
||||
#(apps stack-ref cfg provider)
|
||||
)))))))]
|
||||
{:kubeconfig kubeconfig :setup setup}))
|
||||
|
||||
(defn build-exports [init]
|
||||
(let [cluster (get init :cluster)
|
||||
(let [kubeconfig (get init :kubeconfig)
|
||||
app-outputs (get init :setup)]
|
||||
{:kubeconfig (get cluster :kubeconfig)
|
||||
:masterIp (get cluster :masterIp)
|
||||
:workerDeIp (get cluster :workerDeIp)
|
||||
:workerUsIp (get cluster :workerUsIp)
|
||||
{:kubeconfig (get kubeconfig :kubeconfig)
|
||||
:vaultAddress (pulumi/output (.apply app-outputs #(get-in % [:vault :address])))
|
||||
:vaultToken (pulumi/output (.apply app-outputs #(get-in % [:vault :root-token])))
|
||||
}))
|
||||
:vaultToken (pulumi/output (.apply app-outputs #(get-in % [:vault :root-token])))}))
|
||||
|
||||
|
||||
(defn quick-deploy []
|
||||
@@ -53,7 +54,5 @@
|
||||
|
||||
(defn deploy-core []
|
||||
(let [init (initialize nil)]
|
||||
(set! (.-exports js/module)
|
||||
(clj->js (build-exports init))
|
||||
)
|
||||
))
|
||||
(set! (.-exports js/module)
|
||||
(clj->js (build-exports init)))))
|
||||
Reference in New Issue
Block a user