通过HTTP访问Kubernetes Git Container以及SSH和SSH

问题描述:

我有一个小型kubernetes(1.3)集群(基本上是一个节点),并且希望在那里安装gogs。 Gogs是使用Helm“安装”的。我有以下模板在我执掌图表:通过HTTP访问Kubernetes Git Container以及SSH和SSH

  • 部署(使用图像视护目镜:0.9.97,有containerPort 3000(HTTP)和2222(SSH)
  • 入口(这只是针对端口80)
  • 服务(端口80(HTTP)以及2222(SSH))

HTTP的东西被正确配置,我可以通过http访问容器以及所包含的GIT中的资料库,而不任何麻烦现在我想使用ssh作为git-connections。我尝试了--tcp-services-configmap confi对nginx-ingress的看法,但无济于事。入口控制器的日志表明,配置的服务没有任何活动端点,我发现这很奇怪,因为http的东西正在工作。

UPDATE

我只是做了对DNS和端口2222的NMAP不开。这看起来像一个konfiguration问题。端口在容器上打开(通过从ndoe连接到集群ip进行测试)。

猜测问题是入口控制器的日志表明配置的服务没有任何活动端点。

我的服务onfiguration是:

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" 
+0

你试过生成你的SSH密钥,并上传到GIT回购?当你使用ssh作为git时会得到什么错误? – prabodhprakash

+0

我想通过“常用”方式访问git-repository(git clone ssh://[email protected]:2222/username/test-master.git),并且我已经将我的密钥添加到gogs 。不工作。 – triplem

回答我的问题。这个问题是一个配置问题,是由我自己的错误造成的。

基本上我没有发布Nginx-Ingress Resource的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