将docker compose redis文件转换为kubernetes文件

将docker compose redis文件转换为kubernetes文件,kubernetes,docker-compose,redis,kubernetes-ingress,traefik-ingress,Kubernetes,Docker Compose,Redis,Kubernetes Ingress,Traefik Ingress,我正在将我们的swarm集群迁移到k8s集群,这意味着我需要将所有的组件文件重写为k8s文件。一切都变得乌烟瘴气,直到我到达redis compose 来自redis的撰写文件: 是的,这很简单,因为只是在开发过程中测试缓存的内容 version: "3" services: db: image: redis:alpine ports: - "6380:6379" deploy: labels:

我正在将我们的swarm集群迁移到k8s集群,这意味着我需要将所有的组件文件重写为k8s文件。一切都变得乌烟瘴气,直到我到达redis compose

来自redis的撰写文件: 是的,这很简单,因为只是在开发过程中测试缓存的内容

version: "3"
services:
  db:
    image: redis:alpine
    ports:
      - "6380:6379"
    deploy:
      labels:
      - traefik.frontend.rule=Host:our-redis-url.com
      placement:
        constraints:
          - node.labels.so==linux
    networks:
      - traefik
networks:
  traefik:
    external: true
所以,我们在群中有4个节点。。。我的DNS(我们的RedisURL.com)指向其中一个,它就像一个符咒。我使用该url+端口6380简单地连接到redis

现在。。。。我已经创建了相同的东西,但对于k8s,如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-ms
  namespace: prod
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis-ms
  template:
    metadata:
      labels:
        app: redis-ms
    spec:
      containers:
      - name: redis-ms
        image: redis:alpine
        ports:
          - containerPort: 6379
        resources:
          requests:
            cpu: 250m
            memory: 256Mi
          limits:
            cpu: 500m
            memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
  name: redis-ms
  namespace: prod
spec:
  selector:
    app: redis-ms
  ports:
  - protocol: TCP
    port: 6380
    targetPort: 6379
  type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: redis-ms
  namespace: prod
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: our-redis-url.com
    http:
      paths:
      - backend:
          service:
            name: redis-ms
            port:
              number: 6380
        path: /
        pathType: Prefix
但那没用。 pod正在运行,通过日志我可以看到它正在等待连接,但我不知道如何执行docker compose中的技巧(traefik.frontend.rule=Host:redis-ms.mstech.com.br绑定url和端口部分)

我已经尝试使用kompose工具来转换此合成文件。。。笑起来没用

如果有人能给我一些建议,或者帮我解决这个问题,我会很感激的


我将k8s与traefik一起用作入口控制器。

如评论中所述,入口系统仅用于HTTP流量。Traefik也支持TCP和UDP通信,但这与入口无关,必须通过Traefik更具体的工具(自定义资源或配置文件)进行配置。更常见的情况是,您会使用LoadBalancer类型的服务,在云提供商中创建TCP LB。

Redis服务不是HTTP,因此默认情况下Kubernetes Ingress系统不知道如何处理它。有一个非常详细的演练,但是对于Nginx入口控制器,而不是Træfik。但是,您真的希望您的私有数据存储可以从集群外部访问吗?我将尝试David Maze的aproach,搜索像Nginx这样的Traefik内容。谢谢提示!