Админим с Буквой
5.52K subscribers
303 photos
8 videos
59 files
1.16K links
Канал о системном администрировании, DevOps и немного Инфобеза.

По всем вопросам обращаться к @bykva. Рекламу не размещаю.
Download Telegram
Переустанавливаем gitlab с заданием root пароля

export GITLAB_ROOT_PASSWORD="pwd_>=8_chars"
export GITLAB_ROOT_EMAIL="host@example.com"

gitlab-rake gitlab:setup ${GITLAB_ROOT_PASSWORD:+GITLAB_ROOT_PASSWORD=$GITLAB_ROOT_PASSWORD} ${GITLAB_ROOT_EMAIL:+GITLAB_ROOT_EMAIL=$GITLAB_ROOT_EMAIL}


Это к вопросу, например, какого хрена у меня не логинится в gitlab, когда я поставил helm install gitlab, все же должно работать из коробки! А вот.. Длинна пароля больше 8 символов должна быть, иначе запись этого пользователя в базу даже не попадет.

#gitlab #helm #kubernetes
helm Blah-blah-blah already exists

Возникла ошибка при установке хелма, что какой-то компонент уже существует. Поскольку как оказалось такая проблема не только у меня была, решил сделать об этом заметку. Действительно, хелм ругается неспроста. В этой ситуации нужно убедиться, что у вас действительно нет дубликатов этого компонента, например уже развернутого в кластере, или, как в мом случае, текстовый редактор сделал backup файла в папке templates с именем <компонент>.yaml.save и хелм его начал спокойно обрабатывать.

#helm #troubleshooting
helm upgrade... the fucking resource already exists

хелм на данный момент все еще сырой продукт. И ведет он себя довольно-таки странно в некоторых ситуациях. При добавлении нового ресурса можно получить ошибку... что ресурс, мать его, не найден! Мало того что ресурс не найден, так если запросить kubectl, оказалось что helm все прекрасно создал!

как workaround мне повезло решить проблему так:
1) разделить все ресурсы по отдельным yaml'ам (я добавил новый ресурс - ingress+secrets два в одном)
2) удалить все эти ресурсы, на которые ругается helm
3) запустить upgrade заново и надеяться что вам повезет.

Мне - повезло, а вы?

#troubleshooting #helm #kubernetes #fucking_fuck
Jenkins heartbeat error

err:
wrapper script does not seem to be touching the log file in xxxxx
(JENKINS-48300: if on a laggy filesystem, consider -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.HEARTBEAT_CHECK_INTERVAL=300)


В моем случае jenkins находится в k8s, катал его с помощью helm. В качестве решения в values.yaml:

Master:
JavaOpts: "-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.HEARTBEAT_CHECK_INTERVAL=3600"


#jenkins #kubernetes #helm #troubleshooting
Обновляем Gitlab 10.8 -> 11.x установленный через helm

нужно изменить переменную git_data_dir в templates/configmap.yaml на следующее:

git_data_dirs['default']['path'] = '/gitlab-data/git-data';

Ошибка:

Chef Client finished, 274/445 resources updated in 04 minutes 26 seconds

Deprecations:

Your git_data_dir settings are deprecated.
Please update it to the following:

git_data_dirs({
"default" => {
"path" => "/gitlab-data/git-data"
}
})

Please refer to https://docs.gitlab.com/omnibus/settings/configuration.html#storing-git-data-in-an-alternative-directory for updated documentation.

#helm #kubernetes #gitlab
helm 2.10 released!

Для тех кто им пользуется постоянно наверное это не новость, но для меня, как человека почти 3 недели гонявшего в отпуска это таки новость=)

changelog: https://github.com/helm/helm/releases/tag/v2.10.0

#helm
заставляем git использовать указанный ssh ключ при деплое чужого контейнера в k8s

Решал задачу по внедрению поисковика по коду: https://github.com/etsy/hound.

Hound is an extremely fast source code search engine. The core is based on this article (and code) from Russ Cox: Regular Expression Matching with a Trigram Index. 


В рамках этой задачи было принято решение написать helm пакет для уже готового docker на docker hub. Сам helm можно потыкать здесь: https://github.com/bykvaadm/hound-helm-chart

Отдельно в этой заметке хотел бы отметить небольшую проблему, решаемую в рамках задачи: научить hound ходить в приватные репозитории по указанному приватному ключу. При этом не хотелось ни модифицировать контейнер автора, ни делать persistent volume, ни какой либо init-контейнер.

Способов заставить git ходить с указанным ключом довольно много, но большинство из них подразумевает что вы правите какой-то конфиг или модифицируете строку запуска git. Ни того ни другого делать в чужом контенере не хотелось. В итоге как один из наиболее простых способов был взят вариант с использованием wrapper. wrapper - это скрипт, который будет вызван git'ом при запуске ssh, вместо запуска ssh. Таким образом внутри wrapper можно писать любую логику, подставляя в зависимости от ситуации нужные параметры. на выходо wrapper должен заменять собой вызов ssh с какими-то параметрами. В моем случае так сложно делать не надо и wrapper скрипт получился такой:

#!/bin/sh
ssh -o StrictHostKeyChecking=no -i /etc/ssh-key/id_rsa $@


Здесь я указываю чтобы не чекался fingerprint и путь к конкретному ключу. В итоге для helm пишется configmap и secret. один кладет wrapper, а другой - приватный ключ.

Теперь все что остается - задать в deployment переменную окружения GIT_SSH, в которой указать путь к wrapper.

#git #helm #kubernetes
Helm - how to call helper functions in a loop

Several of the Go templating constructs change the meaning of . to be the thing that's being looped over, and you need to use $ to refer to the initial value. Most of your template correctly refers to e.g. $.Release.Name, but when you invoke the helper template, it's using the current context rather than the root value.

i.e. put this

chart: {{ template "myapp-on-kube.chart" $ }}

instead of this:
chart: {{ template "myapp-on-kube.chart" . }}


#helm
Удобная конструкция для установки хелма ансиблом

  - name: install helm
unarchive:
src: https://storage.googleapis.com/kubernetes-helm/helm-{{ helm_version }}-linux-amd64.tar.gz
dest: /usr/local/bin
remote_src: yes
extra_opts:
- --strip-components=1
- linux-amd64/helm
creates: /usr/local/bin/helm


#helm #ansible
Helm v3 и terraform

Несколько дней назад наконец-то вышел релиз провайдера для терраформа который уже умеет в 3-й хелм. Ура-ура.

https://github.com/terraform-providers/terraform-provider-helm/releases/tag/v1.0.0

#terraform #helm