Mattermost - это решение для обмена сообщениями с открытым исходным кодом, созданное для современных компаний и управляемое с помощью Kubernetes. Mattermost предназначен для одновременного обслуживания десятков тысяч пользователей, распределенных по всему миру. Однако в таких масштабах управление через Kubernetes может стать сложным, поэтому команда Mattermost создала K8s оператор, который помогает автоматизировать процессы установки, обновления и восстановление после сбоев.
С момента своего первого появления в июне 2014 года Kubernetes стал чем-то вроде имени нарицательного, по крайней мере, в кругу администраторов и разработчиков. Платформа для оркестрации контейнеров с открытым исходным кодом позволяет легко решать такие задачи, как балансировка нагрузки, управление секретами и переносимость ПО, и упрощает оркестрацию больших, масштабируемых и распределенных систем.
Далее мы расскажем о том, как установить Mattermost на Kubernetes всего за несколько минут и увидеть, каково это - иметь, по сути, облачного инженера Mattermost, работающего в вашем собственном кластере Kubernetes и управляющего инстансом Mattermost за вас.
Установка Mattermost на Kubernetes
Необходимые условия:
- Кластер Kubernetes.
- kubectl, установленный локально. Подключите kubectl к удаленному кластеру с помощью соответствующей CLI команды. Например, используется кластер на Google Kubernetes Engine:
gcloud container clusters get-credentials cluster-test --zone us-west1-a --project mattermost-test
1. Создайте YAML файл, который будет выступать в роли лицензии для установки.
Это будет общий opaque-тип Kubernetes Secret с определяемой пользователем строкой данных:
Вставьте следующий фрагмент в файл и сохраните его:
apiVersion: v1
kind: Secret
metadata:
name: mattermost-license
type: Opaque
stringData:
license: "foo"
2. Создайте файл манифеста установки
Это второй YAML файл, который будет содержать информацию, необходимую для установки.
vi mattermost-installation.yml
Вставьте следующий фрагмент в файл и сохраните его:
apiVersion: installation.mattermost.com/v1beta1
kind: Mattermost
metadata:
name: mm-demo
spec:
size: 50users
ingressName: example-mm-install
ingressAnnotations:
kubernetes.io/ingress.class: nginx
version: 5.31.0
licenseSecret: "mattermost-license"
Примечание: Далее следуют шаги по созданию отдельных пространств имен для различных ресурсов в кластере Kubernetes.
3. Установите NGINX контроллер
Первым ресурсом, который необходимо установить, является NGINX контроллер, что можно сделать, выполнив следующую команду:
kubectl apply -f
https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.46.0/deploy/static/provider/cloud/deploy.yaml
4. Используйте Mattermost оператор
Далее следует Mattermost оператор. Создайте пространство имен для Mattermost оператора с помощью следующей команды:
kubectl create ns mattermost-operator
В этом пространстве имен установите пользовательский оператор с помощью данной команды:
kubectl apply -n mattermost-operator -f
https://raw.githubusercontent.com/mattermost/mattermost-operator/master/docs/mattermost-operator/mattermost-operator.yaml
5. Установите базу данных
Любая инсталляция Mattermost требует наличия базы данных. В данном случае будет использоваться база данных MySQL. Чтобы установить ее, сначала создайте пространство имен:
kubectl create ns mysql-operator
Затем установите сам оператор с помощью этой команды:
kubectl apply -n mysql-operator -f
https://raw.githubusercontent.com/mattermost/mattermost-operator/master/docs/mysql-operator/mysql-operator.yaml
6. Установите MinIO
Поскольку в инструменте для совместной работы происходит обмен большим количеством файлов, для хранения и извлечения данных требуется объектное хранилище. Для этого мы установим MinIO, который является нативным объектным хранилищем Kubernetes.
Сначала создайте пространство имен, в котором будет производиться установка:
kubectl create ns minio-operator
Затем установите его с помощью следующей команды:
kubectl apply -n minio-operator -f
https://raw.githubusercontent.com/mattermost/mattermost-operator/master/docs/minio-operator/minio-operator.yaml
7. Создайте пространство имен для Mattermost
Наконец, создайте пространство имен для установки Mattermost с помощью следующей команды:
kubectl create ns mattermost
8. Примените лицензию
Далее выполните применение файла лицензии, созданного в шаге №1, с помощью следующей команды:
kubectl apply -n mattermost -f
/home/ram/mattermost-demo/mattermost-license-secret.yml
9. Завершите установку
Завершите установку, применив манифест установки Mattermost, созданный в Шаге №2, с помощью этой команды:
kubectl apply -n mattermost -f
/home/ram/mattermost-demo/mattermost-installation.yml
Подождите несколько минут до завершения установки. Наблюдение за ходом установки лучше всего осуществлять с помощью k9s. Скриншоты, отображающие ход выполнения каждого шага установки, были сделаны этим инструментом.
10. Доступ к установке
Чтобы получить доступ к установке, настройте перенаправление портов с пода на локальную машину с помощью этой команды:
kubectl -n mattermost port-forward svc/mm-demo 8065:8065
Теперь используйте браузер и введите localhost:8065 для доступа к установке.
Все готово! Вот скриншот первых шагов с новой установкой Mattermost, запущенной на удаленном кластере Kubernetes.
Заключение
Хотите узнать больше о Mattermost на Kubernetes?
Чтобы обсудить эту тему, зайдите на портал нашего сообщества.
Если вы хотите узнать больше о том, как присоединиться к проекту Mattermost с открытым исходным кодом, узнайте о множестве способов внести свой вклад.
Этот пост написан в связи с 7-й годовщиной начала проекта Kubernetes. За этот короткий промежуток времени он стал вторым после Linux по популярности проектом с открытым исходным кодом! Мы искренне надеемся, что этот пост вдохновит вас на внедрение более открытой и безопасной инфраструктуры для вашей компании - как для вычислений, так и для совместной работы.