首页 文章

通过Ingress通过HTTP和SSH访问Kubernetes Git容器

提问于
浏览
2

我有一个小的kubernetes(1.3)集群(基本上是一个节点),并希望在那里安装gogs . 使用Helm“安装”Gogs . 我的掌舵图中有以下模板:

  • 部署(使用图像gogs:0.9.97,具有containerPort 3000(http)以及2222(ssh)

  • Ingress(这仅适用于80号港口)

  • 服务(端口80(http)以及2222(ssh))

http-stuff配置正确,我可以通过http访问容器以及包含的git-repositories,没有任何问题 . 现在我想将ssh用于git-connections . 我尝试了nginx-ingress的--tcp-services-configmap配置,但无济于事 . Ingress Controller的日志表明,配置的服务没有任何活动 endpoints ,我觉得这很奇怪,因为http的东西正在工作 .

UPDATE

我刚刚在DNS上做了一个nmap,端口2222没有打开 . 这看起来像一个配置问题 . 端口在容器上打开(通过从ndoe连接到群集ip进行测试) .

猜测问题是Ingress Controller的日志表明配置的服务没有任何活动 endpoints .

我的服务配置是:

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" . }}

配置图是:

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

1 回答

  • 2

    回答我自己的问题 . 这个问题是一个配置问题,由我自己的错误引起 .

    基本上我没有发布Nginx-Ingress资源的ReplicationController . 这个丢失了端口2222.所以现在看起来像:

    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
    

相关问题