Как назначить имя кластера, пространства имен и модуля в переменной среды файла kubernetes yaml - PullRequest
0 голосов
/ 06 октября 2018

У меня есть требование передать кластер, пространство имен и имя модуля агенту AppDynamics из моего контейнера, развернутого в кластере Kubernetes.

Я пробовал что-то, как показано ниже, но это не работает.

containers:
      - env:
        - name: JAVA_OPTS
          value: -Dappdynamics.agent.nodeName=$HOST-$spec.nodeName-spec.PodName

и

- name: appdynamics.agent.nodeName
  value= $HOST-$spec.nodeName-spec.PodName

Может ли кто-нибудь помочь мне здесь, как собрать детали и передать в AppD.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Мне помог формат ниже, предложенный ewok2030 и Praveen.Только одна вещь, чтобы убедиться, что переменная должна быть объявлена ​​до того, как она будет использована как JAVA_OPTS.

контейнеры:

   - env:

    - name: APPD_NODE_NAME
       valueFrom: 
        fieldRef:
          fieldPath: spec.nodeName
    - name: APPD_POD_NAMESPACE
      valueFrom:
        fieldRef:
          fieldPath: metadata.namespace
    - name: APP_POD_NAME
      valueFrom: 
        fieldRef:
          fieldPath: metadata.name
    - name: JAVA_OPTS
      value: -Xmx712m -Xms556m -Dpdp.logging.level=WARN -Dappdynamics.agent.nodeName=$(APPD_NODE_NAME)-$(APPD_POD_NAMESPACE)-$(APP_POD_NAME)
0 голосов
/ 06 октября 2018

Вы можете получить POD_NAME и POD_NAMESPACE, передав их как переменные окружения через fieldRef.

apiVersion: v1
kind: Pod
metadata:
  name: test-env
spec:
  containers:
    - name: test-container
      image: my-test-image:latest
      env:
        - name: MY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: MY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: MY_POD_SERVICE_ACCOUNT
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
        - name: REFERENCE_EXAMPLE
          value: "/$(MY_NODE_NAME)/$(MY_POD_NAMESPACE)/$(MY_POD_NAME)/data.log"
  restartPolicy: Never

РЕДАКТИРОВАТЬ : Добавлен пример env REFERENCE_EXAMPLE, чтобы показать, как ссылаться на переменные.Благодаря этому ответу за указание на интерполяцию $().

Вы можете сослаться на supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, как упомянуто в документации здесь .

Однако CLUSTERNAME не является стандартным доступным свойством.В соответствии с этим PR # 22043 , CLUSTERNAME должен вводиться в поле .metadata при использовании GCE.

В противном случае вам придется указать CLUSTERNAME вручную вполе .metadata, а затем используйте fieldRef для внедрения его в качестве переменной среды.

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