arkade:将服务设置为 LoadBalancer

arkade: set up service as a LoadBalancer

如何实现 arkade 将创建 type: LoadBalancer 而不是 type: ClusterIP 的服务?

我在部署我的私人 docker-registry 时偶然发现了这个要求。从命令行登录、推送和拉取图像,一切运行良好,但一旦我想使用该注册表,我需要一个参考点,我在部署定义中将其声明为图像:

...
      containers:
      - name: pairstorer
        image: 192.168.x.x:5000/myimage:1.0.0
        ports:
        - containerPort: 55555
...

如果我使用 arkade install docker-registry 安装注册表,除了 kubectl edit service docker-registry 并自行添加外,我看不到任何获取外部 IP 的选项。

如果您只想将 Service 类型从 ClusterIP 更改为 LoadBalancer,您需要覆盖 docker-registry Helm Chart 的默认值。

Arkade 使用 stable/docker-registry Helm 图表安装 docker-registry 并且您可以找到默认值 here.

您需要将 service.type=ClusterIP 更改为 service.type=LoadBalancer(此外,您可能需要编辑更多值,例如默认端口号 5000):

$ arkade install docker-registry --set service.type=LoadBalancer

要更改端口,请在上面的命令中添加 --set service.port=<PORT_NUMBER>

我们可以检查 docker-registry Service:

的类型
$ kubectl get svc docker-registry
NAME              TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)          AGE
docker-registry   LoadBalancer   10.0.14.107   <PUBLIC_IP>    5000:32665/TCP   29m

此外,您可能对 tutorial 中描述的启用 TLS 的 Docker 注册表感兴趣。我推荐你使用这种方法。