- How to Install Helm for Kubernetes on Mac
- 1. Install and start Minikube
- 2. Install Homebrew
- 3. Install Helm with Homebrew
- 4. Initialize Helm
- Learn Kube Faster. Get the #1 guide.
- Meet the Author
- Установка и начало работы с Helm
- Требования
- Кластер Kubernetes
- Настройки безопасности
- 1: Общие сведения
- Установка Helm
- Инициализация Helm и установка Tiller
- Установка тестового чарта
- Просмотр релизов
- Удаление релизов
- 2: Установка Helm
- Установка Helm из бинарного релиза
- Установка Helm в macOS с помощью Homebrew
- Установка Helm с помощью скрипта
- Канареечные сборки
- Установка Helm из исходного кода в Linux и macOS
- 3: Установка Tiller
- Простая установка Tiller в кластере
- Установка канареечной сборки Tiller
- Локальный запуск Tiller
- Обновление Tiller
- Удаление или переустановка Tiller
- 4: Продвинутые функции
- Флаг –node-selectors
- Флаг –override
- Флаг –output
- Бэкэнды хранения
How to Install Helm for Kubernetes on Mac
Here are the steps you need to install and initialize Helm to be used on a Mac running macOS Mojave or High Sierra.
1. Install and start Minikube
Install Minikube on your Mac using our guide.
You can use a different Kubernetes cluster if preferred – anything should work.
2. Install Homebrew
Check that you’ve got Homebrew installed by running brew —version . If you get a Homebrew version number back, you’re good to go.
If you don’t have Homebrew, run this in your Terminal
/usr/bin/ruby -e «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)»
3. Install Helm with Homebrew
Run the following Homebrew command to install Helm on your local macOS operating system.
brew install kubernetes-helm
4. Initialize Helm
The last step is to initialize the Helm command-line tool and install the Helm server (Tiller) onto your Kubernetes cluster (Minikube, in our case).
Run helm init and you’ll see something like the following.
Done! You’ve successfully installed Helm on your Mac.
You can now use Helm to easily package and deploy your Kubernetes applications. You’ll get simple rollbacks and great release management.
Learn Kube Faster.
Get the #1 guide.
Get my book on Kubernetes for software developers, used by engineers at Google, Microsoft, and IBM.
Meet the Author
Matthew Palmer is a software developer and author. He’s created popular desktop apps, scaled SaaS web services, and taught Computer Science students at the University of New South Wales.
Источник
Установка и начало работы с Helm
Этот мануал поможет быстро установить и начать работу с Helm, открытым менеджером пакетов для Kubernetes.
Примечание: Helm устанавливается вместе с клиентским сервисом Tiller.
Требования
Кластер Kubernetes
У вас должен быть установлен Kubernetes. Для последней версии Helm мы рекомендуем последнюю стабильную версию Kubernetes (в большинстве случаев это предпоследний релиз).
Вам также понадобится kubectl.
Примечание: Kubernetes до версии 1.6 или не поддерживают управления доступом на основе ролей (или поддерживают ограниченно).
Helm узнает, куда нужно установить Tiller, прочитав конфигурационный файл Kubernetes (обычно это $HOME/.kube/config). Это тот же файл, который использует kubectl.
Чтобы узнать, в какой из кластеров будет установлен Tiller, запустите kubectl config current-context или kubectl cluster-info:
$ kubectl config current-context
my-cluster
Настройки безопасности
Если вы используете Helm в кластере, который вы полностью контролируете (например, в minikube или кластере в частной сети), вам хватит простой установки по умолчанию, которая не использует конфигурацию безопасности. Чтобы получить Helm без дополнительных настроек безопасности, установите Helm и затем инициализируйте его.
Однако если ваш кластер имеет доступ к публичной сети или вы совместно используете его с другими (к этой категории относятся кластеры производства), вам нужно выполнить дополнительную настройку безопасности, чтобы предотвратить случайные или целенаправленные вредоносные действия.
Если в вашем кластере включен контроль доступа на основе ролей (RBAC), вам нужно настроить учетную запись и правила, прежде чем продолжить.
1: Общие сведения
Установка Helm
Загрузите двоичный релиз клиента Helm. Вы можете использовать инструменты типа homebrew или посетить официальную страницу релизов.
Инициализация Helm и установка Tiller
После установки Helm нужно инициализировать локальный CLI, а также установить Tiller в кластер Kubernetes:
Это установит Tiller в кластер Kubernetes, который указан в выводе команды kubectl config current-context.
Примечание: Если вы хотите установить Tiller в другой кластер, используйте флаг –kube-context.. Чтобы обновить Tiller, просто запустите helm init –upgrade.
По умолчанию после установки Tiller не имеет настроек аутентификации. Чтобы узнать больше о настройке надежной TLS-аутентификации для Tiller, обратитесь к руководству Tiller.
Установка тестового чарта
Чтобы установить чарт, нужно запустить команду helm install. Helm предлагает несколько вариантов поиска и установки чарта, но проще всего использовать официальные чаты stable.
$ helm repo update # Make sure we get the latest list of charts
$ helm install stable/mysql
Released smiling-penguin
В приведенном выше примере вы видите чарт stable/mysql, название нового релиза – smiling-penguin. Чтобы получить общее представление о функциях этого чарта MySQL, выполните команду:
helm inspect stable/mysql.
Всякий раз, когда вы устанавливаете чарт, создается новый релиз. Таким образом, один чарт можно несколько раз установить в один и тот же кластер. И каждым из них можно управлять индивидуально.
Команда helm install очень мощная и имеет много функций. Больше информации о ней вы найдете в этом руководстве.
Просмотр релизов
Релизы Helm можно легко просмотреть:
$ helm ls
NAME VERSION UPDATED STATUS CHART
smiling-penguin 1 Wed Sep 28 12:59:46 2016 DEPLOYED mysql-0.1.0
Команда helm list выводит список всех развернутых релизов.
Удаление релизов
Чтобы удалить релиз, используйте команду helm delete:
$ helm delete smiling-penguin
Removed smiling-penguin
Эта команда удалит релиз smiling-penguin из Kubernetes, но вы по-прежнему можете запрашивать информацию об этом релизе.
$ helm status smiling-penguin
Status: DELETED
.
Поскольку Helm отслеживает релизы даже после их удаления, вы можете проверять историю кластера и даже восстанавливать релизы (с помощью helm rollback).
Чтобы узнать больше о доступных командах Helm, используйте команду helm help или введите команду с флагом -h:
2: Установка Helm
Существует две части Helm: клиент (Helm) и сервер (Tiller). Этот раздел поможет установить клиент.
Важно! Если вы несете ответственность за обеспечение контроля над клсатером и его средой (особенно при совместном использовании ресурсов), настоятельно рекомендуется установить Tiller с конфигурацией безопасности.
Клиент Helm можно установить как из исходного кода, так и из предварительно собранных бинарных релизов.
Установка Helm из бинарного релиза
Каждый релиз Helm предлагает бинарные пакеты для многих операционных систем. Эти пакеты можно загрузить вручную и установить:
tar -zxvf helm-v2.0.0-linux-amd64.tgz
- В полученном каталоге найдите бинарный файл helm и переместите его:
mv linux-amd64/helm /usr/local/bin/helm
Теперь попробуйте запустить команду helm help, чтобы проверить установку.
Установка Helm в macOS с помощью Homebrew
Члены сообщества kubernetes внесли Helm в Homebrew. Эта формула, как правило, хорошо поддерживается.
brew install kubernetes-helm
Примечание: Существует также формула emacs-helm, это другой проект.
Установка Helm с помощью скрипта
У Helm есть скрипт установки, который автоматически загружает последнюю версию клиента Helm и устанавливает его локально.
Вы можете скачать этот скрипт, а затем выполнить его локально. Он хорошо документирован. Рекомендуем прочитать его и понять, что он делает, прежде чем запускать его.
$ curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh
$ chmod 700 get_helm.sh
$ ./get_helm.sh
Канареечные сборки
Канареечные сборки – это версии программного обеспечения Helm, которые собраны из последней ветки master. Они не являются официальными релизами и могут быть нестабильными. Тем не менее, они предлагают возможность протестировать самые современные функции Helm.
Бинарные файлы нестабильных сборок Helm хранятся в корзине Kubernetes Helm GCS. Вот ссылки на популярные сборки:
Установка Helm из исходного кода в Linux и macOS
Сборка Helm из исходного кода требует немного больше работы, но это лучший способ протестировать последнюю версию Helm (до ее релиза).
У вас должна быть рабочая среда Go, glide и Mercurial.
$ cd $GOPATH
$ mkdir -p src/k8s.io
$ cd src/k8s.io
$ git clone https://github.com/kubernetes/helm.git
$ cd helm
$ make bootstrap build
Цель bootstrap попытается установить зависимости, перестроить дерево vendor/ и проверить конфигурацию.
Цель build будет компилировать helm и поместит его в bin/helm. Tiller также будет скомпилирован и помещен в bin/tiller.
3: Установка Tiller
Tiller, серверная часть Helm, обычно работает внутри кластера Kubernetes. Но для разработки он устанавливается локально и взаимодействует с удаленным кластером Kubernetes.
Простая установка Tiller в кластере
Самый простой способ установить Tiller – просто запустить команду helm init. Она проверит локальную среду helm (и настроит ее в случае необходимости). Затем он подключится к кластеру, который kubectl определит по умолчанию (kubectl config view). Как только подключение будет установлено, комнада установит tiller в пространство имен kube-system.
После helm init вы сможете запустить следующую команду и посмотреть, как работает Tiller.
kubectl get pods —namespace kube-system
Команда helm init поддерживает такие флаги:
- –canary-image установит канареечную сборку.
- –tiller-image устанавливает определенный образ (версию).
- –kube-context позволяет определить кластер, в который нужно установить программу.
- –tiller-namespace определяет пространство имен.
После установки Tiller запустите:
Команда должна показывать как клиентскую, так и серверную версии. Если в выводе отображается только клиентская версия, helm не может подключиться к серверу. Используйте kubectl, чтобы проверить, не запущены ли поды tiller. Helm будет искать Tiller в пространстве имен kube-system, если не заданы параметры –tiller-namespace или TILLER_NAMESPACE.
Установка канареечной сборки Tiller
Канареечные образы собираются из ветки master. Они могут быть нестабильными, но они предлагают вам возможность попробовать последние функции Tiller.
Самый простой способ установить канареечную версию – эта команда:
$ helm init —canary-image
При этом будет использоваться последний созданный образ контейнера. Вы всегда можете удалить Tiller, удалив развертывание Tiller из пространства имен kube-system, используя kubectl.
Локальный запуск Tiller
Для разработки иногда проще установить Tiller локально и настроить его подключение к удаленному кластеру Kubernetes.
Процесс сборки Tiller мы рассмотрели выше.
После сборки Tiller просто запустите его:
$ bin/tiller
Tiller running on :44134
Когда Tiller работает локально, он пытается подключиться к кластеру Kubernetes, который указывает kubectl. Запустите kubectl config view, чтобы посмотреть, какой именно это кластер.
Вы должны указать helm, что ему нужно подключиться к новому локальному серверу Tiller, а не к одному из кластеров. Есть два способа сделать это. Первый – указать опцию –host в командной строке. Второй – установить переменную среды $HELM_HOST.
$ export HELM_HOST=localhost:44134
$ helm version # Should connect to localhost.
Client: &version.Version
Server: &version.Version
Важно отметить, что даже при локальном запуске Tiller сохранит конфигурацию релиза в ConfigMaps в Kubernetes.
Обновление Tiller
Начиная с Helm 2.2.0, Tiller можно обновлять с помощью команды:
helm init -upgrade
Для обновления Tiller на основе более старых версий Helm или для обновлений вручную вы можете использовать kubectl:
$ export TILLER_TAG=v2.0.0-beta.1 # Or whatever version you want
$ kubectl —namespace=kube-system set image deployments/tiller-deploy tiller=gcr.io/kubernetes-helm/tiller:$TILLER_TAG
deployment «tiller-deploy» image updated
Параметр TILLER_TAG=canary загрузит последний образ ветки master.
Удаление или переустановка Tiller
Поскольку Tiller хранит свои данные в Kubernetes ConfigMaps, вы можете безопасно удалить и переустановить Tiller, не опасаясь потерять какие-либо данные. Рекомендуемый способ удаления Tiller – это команды:
kubectl delete deployment tiller-deploy —namespace kube-system
#или
helm reset
Чтобы переустановить Tiller с клиента, введите:
4: Продвинутые функции
Команда helm init поддерживает много флагов для изменения манифеста развертывания Tiller перед его установкой.
Флаг –node-selectors
Флаг –node-selectors позволяет указывать метки нод, необходимые для планирования подов Tiller.
В приведенном ниже примере указанная метка создается в свойстве nodeSelector.
helm init —node-selectors «beta.kubernetes.io/os»=»linux»
Установленный манифест будет содержать метку ноды nodeSelector:
.
spec:
template:
spec:
nodeSelector:
beta.kubernetes.io/os: linux
.
Флаг –override
Флаг –override позволяет указать свойства манифеста развертывания Tiller. В отличие от команды –set, helm init –override управляет свойствами окончательного манифеста (нет файла «values»). Поэтому в манифесте развертывания вы можете указать любое допустимое значение для любого допустимого свойства.
В приведенном ниже примере мы используем –override, чтобы добавить свойство revision и установить его значение 1.
helm init —override metadata.annotations.»deployment\.kubernetes\.io/revision»=»1″
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: «1»
.
В следующем примере определяются свойства родства нод. Команды –override можно комбинировать для изменения разных свойств одного и того же элемента списка.
helm init —override «spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].weight»=»1» —override «spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].preference.matchExpressions[0].key»=»e2e-az-name»
Все объявленные свойства объединяются в первый элемент preferredDuringSchedulingIgnoredDuringExecution.
.
spec:
strategy: <>
template:
.
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
— preference:
matchExpressions:
— key: e2e-az-name
operator: «»
weight: 1
.
Флаг –output
Флаг –output позволяет пропустить установку манифеста развертывания Tiller и просто выводит манифест развертывания на стандартный вывод в формате JSON или YAML. Затем выход можно изменить с помощью таких инструментов, как jq, и установить вручную с помощью kubectl.
helm init —output json
Эта команда пропустит установку Tiller, а манифест будет выведен в stdout в формате JSON.
«apiVersion»: «extensions/v1beta1»,
«kind»: «Deployment»,
«metadata»: <
«creationTimestamp»: null,
«labels»: <
«app»: «helm»,
«name»: «tiller»
>,
«name»: «tiller-deploy»,
«namespace»: «kube-system»
>,
.
Бэкэнды хранения
По умолчанию tiller сохраняет информацию о релизах в ConfigMaps в пространстве имен, где он запущен. Начиная с Helm 2.7.0, есть бета-версия, которая использует Secrets для хранения информации о релизах. Она добавлена для дополнительной защиты чартов и релизов.
Чтобы включить бэкэнд secrets, инициируйте Tiller:
helm init —override ‘spec.template.spec.containers[0].command’=’‘
В настоящее время, если вы хотите переключиться с бэкэнда по умолчанию на бэкэнд secrets, вам придется выполнить миграцию самостоятельно. Когда этот бэкэнд выйдет из бета-версии, будет более удобный путь миграции данных.
Источник