kubernetes, как получить кластерный домен (например, svc.cluster.local) внутри модуля? - PullRequest
0 голосов
/ 28 сентября 2018

Я развернул прокси-сервер squid в каждом пространстве имен, потому что я хочу получить доступ к сервисам извне через прокси-сервер squid, поэтому мне нужно добавить строку ниже в squid.conf, чтобы я мог обращаться к сервисам только с помощью имен сервисов:

append_domain .${namespace}.svc.cluster.local

Вот моя проблема:
Я могу получить ${namespace} через metadata.namespace внутри модуля, но как я могу получить кластерный домен?Возможно ли это?
Я пытался это сделать, но при создании модуля он выдавал ошибку:

  - name: POD_CLUSERDOMAIN
    valueFrom:
      fieldRef:
        fieldPath: metadata.clusterName

Спасибо за помощь.

Ответы [ 2 ]

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

Хорошо, не удалось получить текущий NAMESPACE внутри модуля, но я нахожу другой способ достичь точки - извлечь весь домен хоста из search domian в resolv.conf.

Вотподробнее:

  • сохранить Dockerfile без изменений
  • добавить элемент command в deploy.yaml

    image: squid:3.5.20
    command: ["/bin/sh","-c"]
    args: [ "echo append_domain .$(awk -v s=search '{if($1 == s)print $2}' /etc/resolv.conf) >> /etc/squid/squid.conf; /usr/sbin/squid -N" ]
    

Thisдобавим строку типа append_domain .default.svc.cluster.local в конец файла /etc/squid/squid.conf, после чего мы сможем получить доступ к сервисам извне через прокси-сервер squid, просто используя service имя.

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

Кластерный домен настраивается из параметров kubelet, он должен быть одинаковым для всего кластера, поэтому вы не можете получить его из метаданных модуля, просто используйте его как есть: svc.cluster.local

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