Развертывание ресурсов k8s с помощью helm

Kubernetes

helmоснован наkubernetesменеджер пакетов. этоkubernetesкакyumЭтоcentos,pipкpython,npmкjavascript

ТотhelmКак внедрение помогает управлять кластером?

  1. Более простое развертывание инфраструктуры, такой какgitlab,postgres,prometheus,grafanaЖдать
  2. Удобнее развертывать собственные приложения, настраивать Chart для внутренних проектов компании, использоватьhelmВ сочетании с CI развертывание приложений в k8s выполняется так же просто, как одна строка команд.

КонечноhelmБольший эффект заключается в разделении обязанностей операторов и разработчиков..

Нереально позволить разработчикам писать файлы конфигурации ресурсов k8s.

  1. Не все разработчики понимают k8s или очень мало, трудно писать файлы развертывания конфигурации ресурсов без понимания k8s
  2. Основная функция разработки по-прежнему в бизнесе

тогдаhelmВремя от времени выходите, напишите файлы конфигурации для эксплуатации и обслуживания и заполните несколько параметров для файлов конфигурации для разработки.

В этой статье в основном рассказывается, как установить helm и как использовать helm для развертывания основных служб и предприятий.

Если вы новичок, в Alibaba Cloud действуют скидки на покупку машин, вы можете нажатьСсылка на сайтКупить. вы можете следить за моими заметкамиРуководство по эксплуатации и обслуживанию серверачтобы начать обслуживание сервера и создание приложения.

вводить

  • Chart: Именование серии коллекций ресурсов k8s, которая содержит серию шаблонов и параметров файлов конфигурации ресурсов k8s для гибкой настройки.
  • release: когда диаграмма развертывается и создается выпуск, диаграмма/выпуск аналогичны изображению/контейнеру в докере.
  • repo: То есть репозиторий чартов, там много чартов на выбор, например официальнаяhelm/charts

использоватьhelm createСоздайте диаграмму, чтобы понять структуру каталогов простого диаграммы

Обратитесь к следующему разделу о том, как установить helm

# 创建一个 chart
$ helm create todo
Creating todo

$ cd todo

# 打印 chart 目录,主要文件有 Chart.yaml 与 values.yaml
# --dirsfirst 先打印文件夹名称
$ tree --dirsfirst
.
├── charts
├── templates
│   ├── tests
│   │   └── test-connection.yaml
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── deployment.yaml
│   ├── ingress.yaml
│   └── service.yaml
├── Chart.yaml
└── values.yaml

3 directories, 8 files

Просмотр двух основных файловых каталогов

  • templates/: это шаблон файла конфигурации, написанный братом по эксплуатации и обслуживанию.Примером является конфигурация ресурсов самого простого приложения, но сложное приложение также будет иметь pvc, роль, учетную запись службы и т. д.
  • values.yaml: Это необязательный параметр, написанный для брата-разработчика, но большинство параметров встроены братом по эксплуатации и обслуживанию.

Развертывание базовых сервисов с помощью helm

Реальные кейсы можно найти в других главах моего цикла статей

Вот несколько общих шагов по развертыванию базовых служб. Предположим, нам нужно развернуть Redis

здесь используется helm v3, синтаксис может немного отличаться от v2

01 Найдите связанные графики

использоватьhelm search hub

$ helm search hub redis
URL                                                     CHART VERSION   APP VERSION     DESCRIPTION
https://hub.helm.sh/charts/bitnami/redis                9.5.0           5.0.5           Open source, advanced key-value store. It is of...
https://hub.helm.sh/charts/hephy/redis                  v2.4.0                          A Redis database for use inside a Kubernetes cl...
https://hub.helm.sh/charts/incubator/redis-cache        0.5.0           4.0.12-alpine   A pure in-memory redis cache, using statefulset...

02 Выберите Chart и следуйте официальной документации Chart

мы выбираемstable/redisэтот график.

Отслеживайте официальные документы, устанавливайте соответствующие параметры и сохраняйте какvalues-production.yaml

# Production configuration
$ helm install stable/redis --values values-production.yaml

Репо будет добавлено при необходимости:helm repo add

# helm repo add stable https://kubernetes-charts.storage.googleapis.com/

# 列出所有 repo
$ helm repo list
NAME            URL
stable          https://kubernetes-charts.storage.googleapis.com/
apphub          https://apphub.aliyuncs.com
jetstack        https://charts.jetstack.io

03 Проверить статус развертывания

Это связано с ресурсами, которые необходимо развернуть, но обычно делится наService,PodиPVC

установить руль

Обратитесь к официальной документации здесьустановить штурвал

helmВ helm v2 он разделен на две части: клиентскую (helm client, то есть средство командной строки) и серверную (helm server), которые также вызываются на стороне сервера.Tiller,УстановитьTillerПри развертывании в кластереPod.

helmНа данный момент выпущена v3, которая удаляетTiller, для более конкретной ссылки на изменениеhelm v3 FAQ

Установить клиент (клиент helm)

Клиент helm должен быть установлен на любом сервере, где вы можете получить доступ к кластеру k8s, напримерkubectl, а вообще, нужно устанавливать в двух местах

  1. Мастер-узел кластера K8S
  2. Ваш собственный ПК / Mac

В helm v3 просто установите клиент helm

Установить на Mac

$ brew install kubernetes-helm

установить на линукс

$ curl -LO https://git.io/get_helm.sh
$ chmod 700 get_helm.sh
$ ./get_helm.sh

Рекомендуется устанавливать по пакету исходных кодов (ведь могут быть сетевые проблемы с двумя вышеуказанными решениями), что касается того, как использоватьrsyncСм. шаги установки ниже

Использует скрипты для установки в стране будут проблемы с сетью, нужно установить и использовать прокси узелrsyncилиscpперейти к целевому местоположению

Выбор примера2.14.3установить,helmПоследняя версия может ссылаться наhelm/helm Releases.

Вы можете установить версию 3.0+, в настоящее время последняя версияHelm v3.0.0-rc.1 (2019/11/01)

# 下载 MAC 上适用的软件包
# -L: 追踪重定向链接
# -O: 保存到本地
# -S: 打印错误
$ curl -SLO https://get.helm.sh/helm-v2.14.3-darwin-amd64.tar.gz 

# 下载 CentOS 上适用的软件包
$ curl -SLO https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz

# 如果有网络问题,请在代理节点下载并 rsync 到目标节点,如果没有,跳过此步
$ rsync -avhzP proxy:/root/helm-v2.14.3-linux-amd64.tar.gz .

# 如果在 mac 上
$ tar -zxvf helm-v2.14.3-darwin-amd64.tar.gz 

# 如果在 centos 上
$ tar -zxvf helm-v2.14.3-linux-amd64.tar.gz

# 进入相应目录,移至 /bin 目录
$ mv linux-amd64/helm /usr/local/bin/helm

Установите румпель (сервер HELM)

Если вы используете Helm v3, вам не нужно устанавливать румпель.

01 Скачать зеркало

зеркальное отображение румпеляgcr.io/kubernetes-helm/tiller:v2.14.3На gcr.io это означает, что домашнюю сеть необходимо сначала загрузить на прокси-узел, а затем переместить в целевое местоположение. Конкретные шаги см. в предыдущих главах.

02 Установка румпеля

при установкеhelmПосле инструмента командной строки используйтеhelm initУстановить румпель. Установитьtillerразвернет pod на k8s.

$ helm init
Creating /root/.helm
Creating /root/.helm/repository
Creating /root/.helm/repository/cache
Creating /root/.helm/repository/local
Creating /root/.helm/plugins
Creating /root/.helm/starters
Creating /root/.helm/cache/archive
Creating /root/.helm/repository/repositories.yaml
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
$HELM_HOME has been configured at /root/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation

Судя по подсказке, на данный момент установка прошла успешно, и проверьте статус Pod.

# 查看 tiller 是否出在运行状态
$ kubectl get pods --all-namespaces

# 查看 helm 与 tiller 版本
$ helm version
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}

больше статей


Я Shanyue, программист, мечтающий бегать и лазать, буду регулярно выкладывать full-stack статьи в личном паблике, добро пожаловать в общение

欢迎关注公众号山月行,我会定期分享一些前后端以及运维的文章