chore: support cofiguring TLS for stream ports

Signed-off-by: Chao Zhang <tokers@apache.org>
diff --git a/charts/apisix/templates/configmap.yaml b/charts/apisix/templates/configmap.yaml
index ad9bcde..caad823 100644
--- a/charts/apisix/templates/configmap.yaml
+++ b/charts/apisix/templates/configmap.yaml
@@ -136,8 +136,13 @@
         tcp:                        # TCP proxy port list
           {{- if gt (len .Values.gateway.stream.tcp) 0}}
           {{- range .Values.gateway.stream.tcp }}
+          {{- if kindIs "map" . }}
+          - addr: {{ .addr }}
+            tls: {{ .tls | default false }}
+          {{- else }}
           - {{ . }}
           {{- end }}
+          {{- end }}
           {{- else}}
           - 9100
           {{- end }}
@@ -146,7 +151,12 @@
         udp:                        # UDP proxy port list
           {{- if gt (len .Values.gateway.stream.udp) 0}}
           {{- range .Values.gateway.stream.udp }}
-          - {{ . }}
+          {{- if kindIs "map" . }}
+          - addr: {{ .addr }}
+            tls: {{ .tls | default false }}
+          {{- else }}
+          - {{ .  }}
+          {{- end }}
           {{- end }}
           {{- else}}
           - 9200
diff --git a/charts/apisix/templates/service-gateway.yaml b/charts/apisix/templates/service-gateway.yaml
index db88c4a..0aa327e 100644
--- a/charts/apisix/templates/service-gateway.yaml
+++ b/charts/apisix/templates/service-gateway.yaml
@@ -69,18 +69,28 @@
   {{- if and .Values.gateway.stream.enabled (or (gt (len .Values.gateway.stream.tcp) 0) (gt (len .Values.gateway.stream.udp) 0)) }}
   {{- with .Values.gateway.stream }}
   {{- if (gt (len .tcp) 0) }}
-  {{- range $index, $port := .tcp }}
+  {{- range $index, $elem := .tcp }}
   - name: proxy-tcp-{{ $index | toString }}
-    port: {{ $port }}
-    targetPort: {{ $port }}
+    {{- if not (kindIs "map" $elem) }}
+    port: {{ $elem }}
+    targetPort: {{ $elem }}
+    {{- else }}
+    port: {{ splitList ":" (toString $elem.addr) | last }}
+    targetPort: {{ splitList ":" (toString $elem.addr) | last }}
+    {{- end }}
     protocol: TCP
   {{- end }}
   {{- end }}
   {{- if (gt (len .udp) 0) }}
-  {{- range $index, $port := .udp }}
+  {{- range $index, $elem := .udp }}
   - name: proxy-udp-{{ $index | toString }}
-    port: {{ $port }}
-    targetPort: {{ $port }}
+    {{- if not (kindIs "map" $elem) }}
+    port: {{ $elem }}
+    targetPort: {{ $elem }}
+    {{- else }}
+    port: {{ splitList ":" (toString $elem.addr) | last }}
+    targetPort: {{ splitList ":" (toString $elem.addr) | last }}
+    {{- end }}
     protocol: UDP
   {{- end }}
   {{- end }}
diff --git a/charts/apisix/values.yaml b/charts/apisix/values.yaml
index df11f77..ddda0e8 100644
--- a/charts/apisix/values.yaml
+++ b/charts/apisix/values.yaml
@@ -202,7 +202,17 @@
   stream:
     enabled: false
     only: false
+    # define several tcp ports. Elements
+    # tcp:
+    #   - 9100
+    #   - addr: 127.0.0.1:9101
+    #     tls: true
     tcp: []
+    # define several udp ports. Elements
+    # udp:
+    #   - 9200
+    #   - addr: 127.0.0.1:9201
+    #     tls: true
     udp: []
   # -- Using ingress access Apache APISIX service
   ingress: