Joshua Greenhalgh
06/07/2023, 2:30 PMFlow could not be retrieved from deployment.
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/prefect/engine.py", line 318, in retrieve_flow_then_begin_flow_run
flow = await load_flow_from_flow_run(flow_run, client=client)
File "/usr/local/lib/python3.9/site-packages/prefect/client/utilities.py", line 40, in with_injected_client
return await fn(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/prefect/deployments.py", line 197, in load_flow_from_flow_run
await storage_block.get_directory(from_path=deployment.path, local_path=".")
File "/usr/local/lib/python3.9/site-packages/prefect/filesystems.py", line 147, in get_directory
copytree(from_path, local_path, dirs_exist_ok=True)
File "/usr/local/lib/python3.9/shutil.py", line 566, in copytree
with os.scandir(src) as itr:
FileNotFoundError: [Errno 2] No such file or directory: '/opt/prefect/flows'
Joshua Greenhalgh
06/07/2023, 2:30 PMfrom prefect.deployments import Deployment
from prefect.infrastructure import KubernetesJob, DockerContainer
from prefect2_agent_repro.repro.flow import repro
infra_k8s = KubernetesJob(
image="prefect2agentrepro:latest",
image_pull_policy="Never",
namespace="prefect",
)
infra_docker = DockerContainer(
env={"PREFECT_API_URL": "<http://host.docker.internal:4200/api>"},
image="prefect2agentrepro:latest",
image_pull_policy="NEVER",
)
deployment_k8s = Deployment.build_from_flow(
repro,
name="repro-k8s",
infrastructure=infra_k8s,
work_queue_name="default",
work_pool_name="k8s",
path="/usr/local/lib/python3.9/site-packages",
)
deployment_docker = Deployment.build_from_flow(
repro,
name="repro-docker",
infrastructure=infra_docker,
work_queue_name="default",
work_pool_name="default-agent-pool",
path="/usr/local/lib/python3.9/site-packages",
)
if __name__ == "__main__":
deployment_k8s.apply()
deployment_docker.apply()
Joshua Greenhalgh
06/07/2023, 2:30 PMFROM prefecthq/prefect:2.10.12-python3.9
COPY . /opt/src
WORKDIR /opt/src
RUN pip install poetry && poetry build && pip install --verbose ./dist/*.whl
WORKDIR /
Nate
06/07/2023, 2:46 PMJoshua Greenhalgh
06/07/2023, 2:46 PMJoshua Greenhalgh
06/07/2023, 2:47 PMJoshua Greenhalgh
06/07/2023, 2:48 PMJoshua Greenhalgh
06/07/2023, 2:48 PMNate
06/07/2023, 2:49 PMpath
setting? why are you pointing at site packages?Joshua Greenhalgh
06/07/2023, 2:52 PMJoshua Greenhalgh
06/07/2023, 4:32 PMJoshua Greenhalgh
06/07/2023, 4:33 PMapiVersion: apps/v1
kind: Deployment
metadata:
name: prefect-agent
namespace: prefect
labels:
app: prefect-agent
spec:
selector:
matchLabels:
app: prefect-agent
replicas: 1
template:
metadata:
labels:
app: prefect-agent
spec:
containers:
- name: agent
image: prefecthq/prefect:2.10.12-python3.9
command: ["prefect", "agent", "start", "-q", "kubernetes"]
imagePullPolicy: "IfNotPresent"
env:
- name: PREFECT_API_URL
value: <http://host.docker.internal:4200/api>
- name: PREFECT_API_KEY
value: None
---
apiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
kind: Role
metadata:
name: prefect-agent
namespace: prefect
rules:
- apiGroups: [""]
resources: ["pods", "pods/log", "pods/status"]
verbs: ["get", "watch", "list"]
- apiGroups: ["batch"]
resources: ["jobs"]
verbs: [ "get", "list", "watch", "create", "update", "patch", "delete" ]
---
apiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
kind: RoleBinding
metadata:
name: prefect-agent-role-binding
namespace: prefect
subjects:
- kind: ServiceAccount
name: default
namespace: prefect
roleRef:
kind: Role
name: prefect-agent
apiGroup: <http://rbac.authorization.k8s.io|rbac.authorization.k8s.io>
---
apiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
kind: ClusterRole
metadata:
name: prefect-agent
rules:
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "list"]
---
apiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
kind: ClusterRoleBinding
metadata:
name: prefect-agent-cluster-role-binding
subjects:
- kind: ServiceAccount
name: default
namespace: prefect
roleRef:
kind: ClusterRole
name: prefect-agent
apiGroup: <http://rbac.authorization.k8s.io|rbac.authorization.k8s.io>
and the deployment looks like;
infra_k8s = KubernetesJob(
image="prefect2agentrepro:latest",
image_pull_policy="Never",
namespace="prefect",
)
deployment_k8s_agent = Deployment.build_from_flow(
repro,
name="repro-k8s-agent",
infrastructure=infra_k8s,
infra_overrides={"namespace": "prefect"},
work_queue_name="kubernetes",
path="/usr/local/lib/python3.9/site-packages",
)