From 5513387a1a8bcdc1e3dfd5c419e9336f52a639fa Mon Sep 17 00:00:00 2001 From: Tamipes Date: Wed, 3 Jun 2026 13:23:37 +0200 Subject: [PATCH] fix: could not initilaize `kube-rs` inside cluster, should infer config now --- kube/roles.yaml | 52 +++++++++++++++++++++++++++++++++++++++++++++-- src/kube_cache.rs | 9 ++++---- src/main.rs | 2 +- 3 files changed, 55 insertions(+), 8 deletions(-) diff --git a/kube/roles.yaml b/kube/roles.yaml index 409c52e..efa3f25 100644 --- a/kube/roles.yaml +++ b/kube/roles.yaml @@ -1,3 +1,9 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: minecraft-ingress + namespace: default +--- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: @@ -6,7 +12,21 @@ metadata: rules: - apiGroups: [""] # "" indicates the core API group resources: ["pods","deployments","services"] - verbs: ["get", "list"] + verbs: ["get", "list", "patch", "watch"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: minecraft-ingress + namespace: default +subjects: +- kind: ServiceAccount + name: minecraft-ingress + namespace: default +roleRef: + kind: Role + name: minecraft-ingress + apiGroup: rbac.authorization.k8s.io --- apiVersion: apps/v1 kind: Deployment @@ -17,4 +37,32 @@ metadata: spec: replicas: 1 selector: - matchLabels + matchLabels: + app: minecraft-ingress + template: + metadata: + labels: + app: minecraft-ingress + spec: + serviceAccountName: minecraft-ingress + containers: + - name: minecraft-ingress + image: git.tami.moe/tamipes/minecraft-ingress:latest + env: + - name: FILTER_CONN + value: '(addr == "87.229.85.222") || (addr == "") || (addr == "ogmur.xyz") || (addr == "@mat:matdoes.dev (hi honeypots) ") || (addr == "@mat:matdoes.dev ") || (addr == "slowstack.tv")' +--- +apiVersion: v1 +kind: Service +metadata: + name: minecraft-ingress + labels: + app: minecraft-ingress +spec: + ports: + - name: minecraft-ingress + port: 25565 + nodePort: 30565 + selector: + server: minecraft-ingress + type: NodePort diff --git a/src/kube_cache.rs b/src/kube_cache.rs index c8be2e5..ea76a90 100644 --- a/src/kube_cache.rs +++ b/src/kube_cache.rs @@ -29,9 +29,8 @@ pub struct KubeCache { impl KubeCache { /// This initializes the creation of a "kubernetes client" /// and if it is not possible returns a None. - pub fn create() -> Option { - let kubeconfig = kube::config::Kubeconfig::read().unwrap(); - let client = Client::try_from(kubeconfig).unwrap(); + pub async fn create() -> Option { + let client = Client::try_default().await.unwrap(); let deployments: Api = Api::default_namespaced(client.clone()); let services: Api = Api::default_namespaced(client); @@ -209,9 +208,9 @@ impl MinecraftAPI for McApi { } impl McApi { - pub fn create() -> Option { + pub async fn create() -> Option { Some(Self { - cache: KubeCache::create()?, + cache: KubeCache::create().await?, map: Arc::new(tokio::sync::Mutex::new(HashMap::new())), }) } diff --git a/src/main.rs b/src/main.rs index 80c5a3c..044cbc9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,7 +39,7 @@ async fn main() { let revision: &'static str = env!("COMMIT_HASH"); tracing::info!(revision); - let api = kube_cache::McApi::create().unwrap(); + let api = kube_cache::McApi::create().await.unwrap(); tracing::info!("initialized kube api"); let config: Config = Default::default();