将 service-per-pod 扩展到 metacontroller (kubernetes) 中的多个端口

Extending a service-per-pod to multiple ports in metacontroller (kubernetes)

我已经为 statefulset 创建了一个 service-per-pod,它正在为单个端口 (80/tcp) 工作。但是,我需要将它用于多个端口(例如 80/tcp、30000/udp 等)。

如何在 service-per-pod 中将其扩展到多个端口 Metacontroller?

sync-service-per-pod.jsonnet - image

service-per-pod sample actually shows you how to do this in manifest/sync-service-per-pod.jsonnet.

service-per-pod-ports 注释允许您指定一组以逗号分隔的端口,这些端口将由生成的服务公开:

service-per-pod-ports: "80:80,8080:8080"

然后在sync-service-per-pod.jsonnet:

获取端口

local ports = statefulset.metadata.annotations["service-per-pod-ports"]

然后遍历它们在服务规范中创建多个 ports

   ports: [
      {
        local parts = std.split(portnums, ":"),
        name: "port-" + std.parseInt(parts[0]),
        port: std.parseInt(parts[0]),
        targetPort: std.parseInt(parts[1]),
      }
      for portnums in std.split(ports, ",")
    ]

请注意 for portnums in std.split(ports, ",") 迭代上面的 ports 集。

看起来你正在尝试做一些更动态的事情,所以你可以这样:

for index in std.range(1,N) 

其中N是索引的最大值。