# 部署 Playwright MCP Server 到 AWS Fargate (EKS)

本文档提供了将 Playwright MCP Server 部署到 AWS Fargate (EKS) 的完整步骤。

## 目录
1. 构建 Docker 镜像
2. 推送镜像到 AWS ECR
3. 在 EKS 中配置 Fargate 配置文件
4. 部署 MCP Server 到 Fargate
5. 验证和访问服务

## 1. 构建 Docker 镜像

首先,创建 Dockerfile(已提供):

```dockerfile
FROM public.ecr.aws/ubuntu/ubuntu:24.04
RUN apt-get update && \\
    apt-get install -y \\
    curl \\
    gnupg \\
    software-properties-common \\
    && rm -rf /var/lib/apt/lists/*
 
RUN curl -fsSL <https://deb.nodesource.com/setup_20.x> | bash - && \\
    apt-get install -y nodejs && \\
    npm install -g npm@latest
 
# 创建工作目录
RUN npm install -g playwright
RUN npm install -g @playwright/mcp
RUN playwright install-deps
RUN playwright install firefox
WORKDIR /app
 
# 安装Playwright MCP
RUN npx --yes @playwright/mcp@latest
 
# 暴露MCP服务器端口
EXPOSE 8932
 
# 启动命令
CMD ["npx", "@playwright/mcp@latest","--browser","firefox", "--port", "8932", "--host", "0.0.0.0"]

在包含 Dockerfile 的目录中构建镜像:

docker build -t playwright-mcp-server:latest .

2. 推送镜像到 AWS ECR

2.1 创建 ECR 仓库

aws ecr create-repository --repository-name playwright-mcp-server --region <your-region>

2.2 登录到 ECR

aws ecr get-login-password --region <your-region> | docker login --username AWS --password-stdin <your-account-id>.dkr.ecr.<your-region>.amazonaws.com

2.3 标记并推送镜像

docker tag playwright-mcp-server:latest <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/playwright-mcp-server:latest
docker push <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/playwright-mcp-server:latest

3. 在 EKS 中配置 Fargate 配置文件

3.1 创建 IAM 角色用于 Pod 执行

创建名为 pod-execution-role-trust-policy.json 的文件:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks-fargate-pods.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

创建角色:

aws iam create-role --role-name EKSFargatePodExecutionRole --assume-role-policy-document file://pod-execution-role-trust-policy.json
aws iam attach-role-policy --role-name EKSFargatePodExecutionRole --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy

3.2 创建 Fargate 配置文件

aws eks create-fargate-profile \\
    --fargate-profile-name mcp-server-profile \\
    --cluster-name <your-eks-cluster-name> \\
    --pod-execution-role-arn arn:aws:iam::<your-account-id>:role/EKSFargatePodExecutionRole \\
    --selectors namespace=mcp-server,labels={app=playwright-mcp}

4. 部署 MCP Server 到 Fargate

4.1 创建命名空间

创建 namespace.yaml:

apiVersion: v1
kind: Namespace
metadata:
  name: mcp-server

应用配置:

kubectl apply -f namespace.yaml

4.2 创建部署和服务

创建 mcp-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: playwright-mcp
  namespace: mcp-server
  labels:
    app: playwright-mcp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: playwright-mcp
  template:
    metadata:
      labels:
        app: playwright-mcp
    spec:
      containers:
      - name: playwright-mcp
        image: <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/playwright-mcp-server:latest
        ports:
        - containerPort: 8932
        resources:
          requests:
            memory: "1Gi"
            cpu: "0.5"
          limits:
            memory: "2Gi"
            cpu: "1"
---
apiVersion: v1
kind: Service
metadata:
  name: playwright-mcp-service
  namespace: mcp-server
spec:
  selector:
    app: playwright-mcp
  ports:
  - port: 8932
    targetPort: 8932
  type: LoadBalancer

应用配置:

kubectl apply -f mcp-deployment.yaml

5. 验证和访问服务

5.1 检查部署状态

kubectl get pods -n mcp-server
kubectl get services -n mcp-server

5.2 获取服务端点

kubectl get service playwright-mcp-service -n mcp-serve

记下 EXTERNAL-IP,这是您的 MCP 服务器的访问点。

5.3 访问 MCP 服务器

您可以通过以下 URL 访问 MCP 服务器:

http://<EXTERNAL-IP>:8932

注意事项

  1. 资源配置: 根据您的需求调整 CPU 和内存请求/限制
  2. 扩展: 可以通过修改 replicas 值来扩展 MCP 服务器实例数量
  3. 安全性: 考虑添加网络策略和 IAM 权限以增强安全性
  4. 监控: 设置 CloudWatch 监控以跟踪服务性能
  5. 成本优化: Fargate 按使用量计费,请监控资源使用情况

故障排除

  1. Pod 启动失败: 检查 Pod 日志 kubectl logs <pod-name> -n mcp-server
  2. 服务不可访问: 确认安全组允许 8932 端口的入站流量
  3. 镜像拉取失败: 验证 ECR 权限和镜像路径是否正确

通过以上步骤,您已成功将 Playwright MCP Server 部署到 AWS Fargate (EKS)。