diff --git a/docker/Dockerfile.console b/docker/Dockerfile.console new file mode 100644 index 0000000..1ea6cb4 --- /dev/null +++ b/docker/Dockerfile.console @@ -0,0 +1,18 @@ +FROM rust:1.71.1-slim-bookworm as builder + +WORKDIR /usr/src/flame +COPY . . +RUN apt-get update && apt-get install -y protobuf-compiler +RUN cargo install --path ./examples/pi +RUN cargo install --path ./flmctl +RUN cargo install --path ./flmping + +FROM ubuntu:22.04 +RUN apt-get update && apt-get install -y wget vim iputils-ping ssh +COPY --from=builder /usr/local/cargo/bin/flmping /usr/local/bin/flmping +COPY --from=builder /usr/local/cargo/bin/flmctl /usr/local/bin/flmctl +COPY --from=builder /usr/local/cargo/bin/pi /usr/local/bin/pi +COPY --from=builder /usr/local/cargo/bin/pi-local /usr/local/bin/pi-local +COPY --from=builder /usr/local/cargo/bin/pi-server /usr/local/bin/pi-server + +CMD ["service", "ssh", "start", "-D"] diff --git a/docker/Dockerfile.fem b/docker/Dockerfile.fem index 77c4713..bdf6c5a 100644 --- a/docker/Dockerfile.fem +++ b/docker/Dockerfile.fem @@ -4,7 +4,10 @@ WORKDIR /usr/src/flame COPY . . RUN apt-get update && apt-get install -y protobuf-compiler RUN cargo install --path ./executor_manager +RUN cargo install --path ./examples/pi FROM ubuntu:22.04 COPY --from=builder /usr/local/cargo/bin/flame-executor-manager /opt/flame-executor-manager +COPY --from=builder /usr/local/cargo/bin/pi-server /opt/pi-server + ENTRYPOINT ["/opt/flame-executor-manager"] diff --git a/examples/pi/src/client/main.rs b/examples/pi/src/client/main.rs index 4acc9a8..41a6f47 100644 --- a/examples/pi/src/client/main.rs +++ b/examples/pi/src/client/main.rs @@ -55,7 +55,17 @@ async fn main() -> Result<(), Box> { .unwrap_or(DEFAULT_TASK_INPUT); let task_num = cli.task_num.unwrap_or(DEFAULT_TASK_NUM); - let conn = flame::connect("http://127.0.0.1:8080").await?; + let host = match std::env::var("FLAME_SESSION_MANAGER_SERVICE_HOST") { + Ok(ip) => ip, + Err(_) => "127.0.0.1".to_string(), + }; + + let port = match std::env::var("FLAME_SESSION_MANAGER_SERVICE_PORT") { + Ok(p) => p, + Err(_) => "8080".to_string(), + }; + + let conn = flame::connect(format!("http://{}:{}", host, port).as_str()).await?; let ssn = conn .create_session(&SessionAttributes { application: app, diff --git a/installer/flame-conf.yaml b/installer/flame-conf.yaml index 4bf9bdd..a572a34 100644 --- a/installer/flame-conf.yaml +++ b/installer/flame-conf.yaml @@ -11,3 +11,9 @@ applications: arguments: [] environments: [] working_directory: "/tmp" + - name: "pi" + shim: Stdio + command: "/opt/pi-server" + arguments: [] + environments: [] + working_directory: "/tmp" diff --git a/installer/flame-console.yaml b/installer/flame-console.yaml new file mode 100644 index 0000000..e924f88 --- /dev/null +++ b/installer/flame-console.yaml @@ -0,0 +1,29 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: flame-console + labels: + app.kubernetes.io/name: flame-console +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: flame-console + template: + metadata: + labels: + app.kubernetes.io/name: flame-console + spec: + containers: + - name: console + image: registry.minikube/flame-console:latest + env: + - name: RUST_LOG + value: "info" + volumeMounts: + - name: flame-conf + mountPath: /root/.flame + volumes: + - name: flame-conf + configMap: + name: flame-conf \ No newline at end of file diff --git a/installer/kustomization.yaml b/installer/kustomization.yaml index 856acbb..b879661 100644 --- a/installer/kustomization.yaml +++ b/installer/kustomization.yaml @@ -5,6 +5,7 @@ resources: - flame-executor-manager.yaml - flame-session-manager.yaml - fsm-service.yaml + - flame-console.yaml configMapGenerator: - name: flame-conf files: diff --git a/skaffold.yaml b/skaffold.yaml index aa113d5..37cedd7 100644 --- a/skaffold.yaml +++ b/skaffold.yaml @@ -23,7 +23,14 @@ build: sync: infer: - "session_manager" - + - image: registry.minikube/flame-console + docker: + dockerfile: docker/Dockerfile.console + sync: + infer: + - "example" + - "flmping" + - "flmctl" manifests: kustomize: paths: