Accessing kubernetes headless service over ambassador

5/20/2019

I have deployed my service as headless server and did follow the kubernetes configuration as mentioned in this link (http://vertx.io/docs/vertx-hazelcast/java/#_using_this_cluster_manager). My service is load balanced and proxied using ambassador. Everything was working fine as long as the service was not headless. Once the service changed to headless, ambassador is not able to discover my services. Which means it was looking for clusterIP and it is missing now as the services are headless. What is that I need to include in my deployment.yaml so these services are discovered by ambassador.

Error I see " upstream connect error or disconnect/reset before headers. reset reason: connection failure"

I need these services to be headless because that is the only way to create a cluster using hazelcast. And I am creating web socket connection and vertx eventbus.

apiVersion: v1
kind: Service
metadata:
  name: abt-login-service
  labels:
    chart: "abt-login-service-0.1.0-SNAPSHOT"
  annotations:
    fabric8.io/expose: "true"
    fabric8.io/ingress.annotations: 'kubernetes.io/ingress.class: nginx'

    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      name:  login_mapping
      ambassador_id: default
      kind: Mapping
      prefix: /login/
      service: abt-login-service.default.svc.cluster.local
      use_websocket: true
spec:
  type: ClusterIP
  clusterIP: None
  selector:
    app: RELEASE-NAME-abt-login-service
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
    name: http
  - name: hz-port-name
    port: 5701
    protocol: TCP```


```Deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: RELEASE-NAME-abt-login-service
  labels:
    draft: draft-app
    chart: "abt-login-service-0.1.0-SNAPSHOT"
spec:
  replicas: 2
  selector:
    matchLabels:
     app: RELEASE-NAME-abt-login-service
  minReadySeconds: 30
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        draft: draft-app
        app: RELEASE-NAME-abt-login-service
        component: abt-login-service
    spec:
      serviceAccountName: vault-auth
      containers:
      - name: abt-login-service
        env:
        - name: SPRING_PROFILES_ACTIVE
          value:  "dev"
        - name: _JAVA_OPTIONS
          value:  "-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2 -Dsun.zip.disableMemoryMapping=true -XX:+UseParallelGC -XX:Min
HeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dhazelcast.diagnostics.enabled=true
"
        image: "draft:dev"
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
        ports:
        - containerPort: 5701
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 60
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        readinessProbe:
          httpGet:
            path: /health
            port: 8080
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources:
            limits:
              cpu: 500m
              memory: 1024Mi
            requests:
              cpu: 400m
              memory: 512Mi

      terminationGracePeriodSeconds: 10```

How can I make these services discoverable by ambassador?
-- bcsshdha
envoyproxy
headless
kubernetes

0 Answers