这个问题纠结了很久,也找了不少文档查看,后面发现挺简单的,看看官网就几段话就解决了问题。

需求

本人环境是阿里云的ack,在上面使用了helm chart 部署了gitlab,但是ingress 默认是http和https开放,端口分别是80,433,gitlab 原本在容器上部署是2224。
需要在ingress开启tcp转发2224端口到gitlab ssh服务。

找到提供ssh的端口和服务工程

在云原生gitlab下,gitlab被拆分了许多个组价,gitlab-gitlab-shell 用于提供ssh服务。git clone ssh://xxxxx这个格式。
在这里插入图片描述

修改tcp-services

这个是configmap配置,主要是ingress引用了这tcp-services配置。
添加一下内容吧
在这里插入图片描述
或者修改yaml

apiVersion: v1
data:                                      # 添加的
  "2224": gitlab/gitlab-gitlab-shell:2224  # 添加的,如有有多少端口,就写多行。
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"name":"tcp-services","namespace":"kube-system"}}
  creationTimestamp: "2022-03-08T03:26:56Z"
  name: tcp-services
  namespace: kube-system

修改services的ingress服务

我的ingress有两个,一个公网,一个私网。
这里我显示一下私网的。
在这里插入图片描述

  - name: gitlabtcp
    nodePort: 32227   # 这个可以不填写,让他随机生成
    port: 2224
    protocol: TCP
    targetPort: 2224

验证

kubectl -n kube-system get svc | grep nginx-ingress
nginx-ingress-lb                          LoadBalancer   192.168.35.226   47.24.xxx.xxx   80:31482/TCP,443:30573/TCP,2224:30574/TCP   183d
nginx-ingress-lb-intranet                 LoadBalancer   192.168.35.68    172.19.xxx.xxx   80:30340/TCP,443:31367/TCP,2224:32227/TCP   36m

Exposing TCP and UDP services

Logo

一站式 AI 云服务平台

更多推荐