Добрый день,
может информация немного устарела. НО на данном этапе жизни - она мне помогла. Могу сказать, что это работает не только с 7,17, но и 7,18 версией CRM.
Год назад понадобилось настроить Exchange Listener для нашей CRM. Дали инструкцию https://academy.creatio.com/docs/7-17/user/on_site_deployment/containerized_components/exchange_listener_synchronization_service. Решили делать на Ubuntu. Но для виндовс администратора, который не сталкивался ранее с докерами и кубернетес оказалось сложно. Появилось масса вопросов.
Нашла инструкцию, который выложил Вильшанский Дмитрий https://community.terrasoft.ua/articles/1-realnyy-primer-po-razvertyvaniyu-servisa-exchange-listener-s-ispolzovaniem-kubernetes. Очень помогла. Спасибо. Но в ней масса пакетов устарело и часть ссылок не работало уже на тот момент. Поэтому я немного видоизменила ее выкладываю сюда.
Прошу не быть строгими судьями, если где-то недочеты, то пишите - исправим.
1. Устанавливаем чистую Ubuntu 20.04 LTS (c 22.04 возникли проблемы, поэтому пока остановилась на старой версии) БЕЗ свап раздела
2. Обновляем пакеты и ядро до последней доступной версии
sudo apt-get dist-upgrade
3. не обязательно, но я меняю для своего удобства временную зону, что бы время отображалось правильно
sudo timedatectl set-timezone Europe/Riga
проверить можно командой timedatectl
4. Нужно обязательно отключить SWAP, если это не было сделано при установки ОС
sudo swapoff -a
проверить можно, что свап отключен через команду
sudo free -h
для того что бы свап раздел не появился после перезагрузки нужно зайти в файл /etc/fstab и закоментировать строку, относящуюся к разделю свап
5. Для удобства я доставляю пакеты mc, mlocate. Но это не обязательно. Без этого все будет работать.
sudo apt-get install mc mlocate
6. Устанавливаем докер
sudo apt install -y docker.io
и для того, что бы не вылезла ошибка
#Как вылечить сообщение [WARNING Service-Docker]: docker service is not enabled, please run 'systemctl enable docker.service'
systemctl enable docker.service
добавим в файл следующие опции
sudo nano /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
после этого нужно перезапустить докер
sudo service docker restart
7.
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo nano /etc/apt/sources.list.d/kubernetes.list
В 22й убунту вылезает warning связанный с ключами (3я строка). Я заменяла этой командой
sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/cloud.google.gpg
4я с трока позваляет отредактировать файл kubernetes.list. В него надо добавить следующий репозиторий
deb http://apt.kubernetes.io/ kubernetes-xenial main
К сожалению, репозиторий под 18ю убунту xenial. Под 20ю Focal Fossa и 22ю Jammy Jellyfish - я не нашла.
8. Устанавливаем kubernates
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl kubernetes-cni
я еще добавляю опцию в файл, связанный со свапом
sudo nano /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --fail-swap-on=false"
9. Далее выполняем команду:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Именно 10.244.0.0/16! Вводим ровно то что написано.
Процесс может занять минуту или более в зависимости от вашего интернет-соединения.
результат выполнения команды будет следующим
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.хх.хх:6443 --token 0dwb03.figdfjkghgjdkmvbn \
--discovery-token-ca-cert-hash sha256:86bfd668e671a0e2f7f94f08377515b2e29442c34e7966ae47435456jklfgkjfjh
нижние 2 строчки можно сохранить, если вы будете объединять в кластер машины. У меня одна и мне не актуально.
10. Дальше нужно запустить
sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
11. Проверяем, какой контейнер у нас поднят
adminka@l-creatio-el-stage:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
l-creatio-el-stage Ready control-plane 7h52m v1.25.4
Обратите внимение на роль, в моем случае control-plane. Машину, которую устанавливала больше года назад была master. Почему так - не знаю. По идеи роль можно поменять, но у меня заработала и с этой.
12. Поэтому в зависимости от роли команда для возможности запуска контейнеров на текущей машине может отличаться:
kubectl taint nodes --all node-role.kubernetes.io/master-
или
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
результат должен быть
node/l-creatio-el-stage untainted
минус в конце дает untainted, без него tainted
13. Устанавливаем Flannel:
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
namespace/kube-flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created
Скачиваем файл
wget https://raw.githubusercontent.com/coreos/flannel/v0.8.0/Documentation/kube-flannel-rbac.yml
в нем не верная стоит версия. Перед инсталией скаченный файл нужно отредактировать и заменить в 2х местах v1beta1 на v1. После этого файл нужно установить.
kubectl apply -f kube-flannel-rbac.yml
14. Проверяем состояние подов:
adminka@l-creatio-el-stage:~$ kubectl -n kube-system get pods
NAME READY STATUS RESTARTS AGE
coredns-565d847f94-t2fbn 1/1 Running 0 105s
coredns-565d847f94-tstts 1/1 Running 0 105s
etcd-l-creatio-el-stage 1/1 Running 0 116s
kube-apiserver-l-creatio-el-stage 1/1 Running 0 116s
kube-controller-manager-l-creatio-el-stage 1/1 Running 0 116s
kube-proxy-9xptw 1/1 Running 0 105s
kube-scheduler-l-creatio-el-stage 1/1 Running 0 116s
15. Скачаем и установим helm
wget https://get.helm.sh/helm-v3.10.1-linux-amd64.tar.gz
tar xzvf helm-v3.10.1-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
16. Добавляем репозиторий
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo list
helm repo update
17. Устанавливаем редис
helm install --namespace default --set auth.enabled=false --set=slave.persistence.enabled=false --set master.persistence.enabled=false --set cluster.enabled=false redis bitnami/redis
18. Нужно узнать ИП адресс для redis-master
adminka@l-creatio-el-stage:~$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2m53s
redis-headless ClusterIP None <none> 6379/TCP 5s
redis-master ClusterIP 10.103.135.150 <none> 6379/TCP 5s
redis-replicas ClusterIP 10.99.52.153 <none> 6379/TCP 5s
19. Скачаем и установим сам ExchangeListener
опция env.host = IP redis-master
wget https://academy.creatio.com/sites/default/files/documents/downloads/ExchangeListener/exchangelistener-0.8.39.tgz
helm install --set env.host=10.103.135.150 --set service.type=NodePort --set service.nodePort=30001 --set apiVersion=apps/v1 --namespace default elistener exchangelistener-0.8.39.tgz
В документации дана ссылка на старую версию ExchangeListener 0.8.39
По ссылке https://hub.docker.com/r/bpmonline/exchangelistener/tags видим, что есть более новые версии для докера. Как их можно использовать? Они ставятся без параметров, в отличии от нашего случая в примере. Поэтому я оставила старую версию пакета. Просто скачать более новую версию у меня не получилось.
У меня все заработало.
После этого можно зайти по ИП машины, который присвоили при установке ОС
http://192.168.хх.хх:30001/api/listeners/status
Затем нужно добавить в сам црм, что бы он его увидел.
Подключала к версии црм 7,18 и у меня все заработало.
Разберусь как поставить новый вариант - добавлю сюда. С 22й версией убунту пока тоже есть вопросы. Не все работает как мне бы хотелось.