Kubernetes.Переменные окружения - теория. часть11

Thank you for reading this post, don't forget to subscribe!

В дан­ной ста­тье рас­смот­рим какие ресур­сы и пере­мен­ные окру­же­ния доступ­ны кон­тей­не­рам и как пере­опре­де­лять пере­мен­ные окру­же­ния для кон­тей­не­ра при запус­ке пода (Pod) в кла­сте­ре Kubernetes.

В Kubernetes запу­щен­но­му кон­тей­не­ру доступ­ны несколь­ко важ­ных ресурсов:

  • фай­ло­вая систе­ма, пред­став­ля­ю­щая собой ком­би­на­цию docker-обра­за (слои) и одно­го или несколь­ких томов;
  • инфор­ма­ция о самом контейнере;
  • инфор­ма­ция о дру­гих объ­ек­тах в кластере.

Инфор­ма­ция о самом кон­тей­не­ре обыч­но вклю­ча­ет в себя:

  • имя хоста (hostname) - это имя пода (Pod), в кото­ром рабо­та­ет кон­тей­нер. Доступ­но через коман­ду hostname или вызов функ­ции gethostname;
  • про­стран­ство имен пода (Pod) - доступ­но как пере­мен­ные окружения;
  • поль­зо­ва­тель­ские пере­мен­ные окру­же­ния из мани­фе­ста (опи­са­ния) пода (Pod) - пого­во­рим о них позже;
  • пере­мен­ные окру­же­ния, ука­зан­ные ста­ти­че­ски в docker-обра­зе (напри­мер, при сборке).

Инфор­ма­ция о дру­гих объ­ек­тах в кла­сте­ре Kubernetes доступ­на кон­тей­не­ру тоже в каче­стве пере­мен­ных сре­ды. Напри­мер, служ­ба с име­нем foo, внут­ри кон­тей­не­ра с име­нем bar будет отоб­ра­жать­ся в пере­мен­ных окру­же­ния так:

При созда­нии пода (Pod), мож­но уста­но­вить пере­мен­ные окру­же­ния для кон­тей­не­ров, кото­рые рабо­та­ют в дан­ном поде. Для это­го нуж­но доба­вить в файл кон­фи­гу­ра­ции (мани­фест) поле env или envFrom, напри­мер так:

Сохра­ним пред­ло­жен­ный мани­фест в фай­ле envars.yaml и запу­стим под в кла­сте­ре Kubernetes:

Про­ве­рим спи­сок запу­щен­ных подов:

Резуль­тат преды­ду­щей коман­ды будет при­мер­но таким:

Под­клю­ча­ем­ся к запу­щен­но­му контейнеру:

Выво­дим на экран пере­мен­ные окру­же­ния с помо­щью коман­ды printenv (вывод сокращен):

При­ме­ча­ние. Сто­ит пом­нить, что пере­мен­ные, уста­нов­лен­ные с помо­щью env или envFrom пере­опре­де­ля­ют зна­че­ния пере­мен­ных уста­нов­лен­ных в docker-образе.

Чуть боль­ше инфор­ма­ции о пере­мен­ных окру­же­ния мож­но полу­чить здесь. Кро­ме того, в отдель­ных ста­тьях мы так­же рас­смот­рим исполь­зо­ва­ние сек­ре­тов (Secrets) и кон­фиг­ма­пов (ConfigMaps) - как част­ных слу­ча­ев уста­нов­ки пере­мен­ных окру­же­ния внут­ри docker-контейнеров.