Acceda a Kubernetes Git Container a través de Ingress a través de HTTP y SSH

Tengo un pequeño cluster kubernetes (1.3) (básicamente un nodo) y me gustaría instalar gogs allí. Gogs está "instalado" usando Helm. Tengo las siguientes templates en mi carta de timón:

  • Despliegue (usando imágenes gogs: 0.9.97, teniendo containerPort 3000 (http) y 2222 (ssh)
  • Ingreso (esto es solo para el Puerto 80)
  • Servicio (Puerto 80 (http) así como 2222 (ssh))

El material http está configurado correctamente y puedo acceder al contenedor, así como a los repositorys git que contiene http sin ningún problema. Ahora me gustaría usar ssh para las conexiones git también. Probé la configuration de –tcp-services-configmap de nginx-ingress, pero fue en vano. El logging del controller de input indica que el service configurado no tiene ningún punto final activo, lo cual me parece bastante extraño, ya que el material http está funcionando.

ACTUALIZAR

Acabo de hacer un nmap en el DNS y el puerto 2222 no está abierto. Esto parece un problema de configuration. El puerto está abierto en el contenedor (probado al conectarse al cluster ip desde el ndoe).

Supongo que el problema es que el logging del controller de input indica que el service configurado no tiene puntos finales activos.

Mi Servicio onfiguration es:

apiVersion: v1 kind: Service metadata: name: {{ template "fullname" . }} labels: app: {{ template "fullname" . }} spec: ports: - name: http port: 80 targetPort: http protocol: TCP - name: ssh port: 2222 targetPort: ssh protocol: TCP selector: app: {{ template "fullname" . }} 

El config-map es:

 apiVersion: v1 kind: ConfigMap metadata: name: tcp-configmap-ssh data: 2222: "default/{{ template "fullname" . }}:2222" 

Respondiendo mi propia pregunta. Este problema es más bien un problema de configuration y es causado por mi propia culpa.

Básicamente, no publiqué ReplicationController del recurso Nginx-Ingress. A este le faltaba el puerto 2222. Ahora parece:

 apiVersion: v1 kind: ReplicationController metadata: name: {{ template "fullname" . }} labels: k8s-app: "{{ .Chart.Name }}" chart: "{{.Chart.Name}}-{{.Chart.Version}}" spec: replicas: 1 selector: k8s-app: "{{ .Chart.Name }}" template: metadata: labels: name: {{ template "fullname" . }} k8s-app: "{{ .Chart.Name }}" chart: "{{.Chart.Name}}-{{.Chart.Version}}" spec: terminationGracePeriodSeconds: 60 containers: - image: gcr.io/google_containers/nginx-ingress-controller:0.8.3 name: "{{ .Chart.Name }}" imagePullPolicy: Always readinessProbe: httpGet: path: /healthz port: 10254 scheme: HTTP livenessProbe: httpGet: path: /healthz port: 10254 scheme: HTTP initialDelaySeconds: 10 timeoutSeconds: 1 env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace ports: - containerPort: 80 hostPort: 80 # we do need to expose 2222 to be able to access this port via # the tcp-services - containerPort: 2222 hostPort: 2222 args: - /nginx-ingress-controller - --default-backend-service=$(POD_NAMESPACE)/default-http-backend - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-configmap-ssh