Сделать внешний API хит из kubernetes - PullRequest
0 голосов
/ 01 сентября 2018

У меня запущена служба Kubernetes, и у нас есть внешний API, зависящий от этой службы.

Мы хотели бы получить уведомление о перезапуске службы. Есть ли возможность попадания на конечную точку API при каждом перезапуске службы?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Расширение комментария enzian об использовании initContainers . Вот пример, использующий initContainer на основе Curl и монтирующий метаданные для передачи в вызове переменной среды:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: some-service
  namespace: the-project
  labels:
    app: some-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: some-service
  template:
    metadata:
      labels:
        app: some-service
    spec:
      initContainers:
      - name: service-name-init
        image: txn2/curl:v3.0.0
        - name: SOME_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        command: [
          "/bin/sh",
          "-c",
          "/usr/bin/curl -sX GET example.com/notify/$(SOME_NAME)"
        ]
      containers:
      - name: ok
        image: txn2/ok
        imagePullPolicy: Always
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: SERVICE_ACCOUNT
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
        ports:
        - name: ok-port
          containerPort: 8080
0 голосов
/ 01 сентября 2018

Привет и добро пожаловать в сообщество!

Есть несколько способов достичь этого. Действительно простой (как указал Томас) - это Инициативный Контейнер. Обратитесь к документам Kubernetes , чтобы узнать, как их запустить! Этот контейнер инициализации будет делать только отправку HTTP-запроса на внешний API после запуска модуля и его немедленного завершения.

Другой способ намного сложнее и потребует от вас написания кода самостоятельно. Что вам нужно сделать, это написать свой собственный контроллер, который наблюдает за сущностями через API Kubernetes и уведомляет вашу внешнюю службу, когда модуль переносится, убивается, умирает и т. Д. (Тем не менее, вы можете использовать внешний сервис именно для этого, поэтому напрямую обращаетесь к kube-api ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...