RHEL 8.4 veya RHEL 8.6 Üzerine Offline Apinizer Kurulumu
İndirilecek Dosya
offlineApinizerInstallation-RedHat86.tar (1.61 GB)
https://drive.google.com/file/d/1nTcklCjpmVhPRjSiPMo-XK7nsTNtHv5o/view?usp=share_link
Sonraki adımlarda bulunan yönergeler ilgili dosyaların içinde de mevcut olup, internete kısıtlı erişimi olabilecek sunucular için burada da açık şekilde paylaşılmıştır.
Dosyaları çıkarmak için "tar xvzf dosyaAdi.tar" veya "tar xf dosyaAdi.tar" komutlarını kullanabiliriz.
Öncelikle otomatik abonelik hatası almamak için ilk once asagıdaki satıra gidilip enabled 0 yapılır.
vim /etc/yum/pluginconf.d/subscription-manager.conf
enabled=0
net-tools-2.0-0.52.20160912git.el8.x86_64.rpm'in olduğu klasöre gidilir.
net-tools paketi yüklenir.
yum install -y --cacheonly --skip-broken --disablerepo=* *.rpm
Apinizer kullanıcısı oluşturulur
adduser apinizer
usermod -aG wheel apinizer
passwd apinizer
Güvenlik duvarı kapatılır
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Selinux kapatılır
Sunuculardaki iletişim sorunlarını önlemek için SELinux'u devre dışı bırakalım.
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
Swap devre dışı bırakılır
Node'lardaki iletişim sorunlarını önlemek için swap'i devre dışı bırakalım. Bunun için aşağıdaki adımlar yapılır. ve /etc/fstab dosyası içindeki swap satırı silinir.
sudo swapoff -a
sudo vi /etc/fstab
IP Tables ayarlaması
Daha sonra vi dosyası kapatılır (:wq).
sudo vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
net.ipv4.tcp_max_syn_backlog=40000
net.core.somaxconn=40000
net.core.wmem_default=8388608
net.core.rmem_default=8388608
net.ipv4.tcp_sack=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_fin_timeout=15
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_moderate_rcvbuf=1
net.core.rmem_max=134217728
net.core.wmem_max=134217728
net.ipv4.tcp_mem=134217728 134217728 134217728
net.ipv4.tcp_rmem=4096 277750 134217728
net.ipv4.tcp_wmem=4096 277750 134217728
net.core.netdev_max_backlog=300000
Değişiklikler kaydedilir
sudo modprobe br_netfilter
sudo sysctl --system
br_netfilter Modülü Yüklenir (→ Reboot)
sudo lsmod | grep br_netfilter
sudo reboot
Docker Kurulumu
Docker kurulumuna başlamadan önce aşağıdaki paketlerin silinmesi gerekmektedir.
yum remove podman* -y
yum remove buildah* -y
cd apinizerOffline/docker
rpm -ivh --replacefiles --replacepkgs *.rpm
# Create required directories
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo mkdir /etc/docker
sudo vi /etc/docker/daemon.json
# Create daemon json config file
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
# Start and enable Services
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
sudo usermod -aG docker apinizer
Kubernetes Kurulumu
apinizerOffline/kubernetes klasörüne gidilir ve rpm'ler çalıştırılır.
cd apinizerOffline/kubernetes
rpm -ivh --replacefiles --replacepkgs *.rpm
(Master ve Worker Sunucular üzerinde)
.tar halindeki kubernetes imajları docker'a yüklenir.
docker load < kube-apiserver_v1.18.20.tar
docker load < kube-proxy_v1.18.20.tar
docker load < kube-controller-manager_v1.18.20.tar
docker load < kube-scheduler_v1.18.20.tar
docker load < pause_3.2.tar
docker load < etcd_3.4.3-0.tar
docker load < coredns.tar
docker load < flannel_v0.13.1-rc2.tar
docker load < rancher.tar
docker load < rancher2.tar
docker load < metricserver.tar
systemctl enable kubelet && systemctl start kubelet
(Master Node üzerinde)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<MASTER_SERVER_IP_ADDRESS> --kubernetes-version=v1.18.20
(Master Node üzerinde)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown -R $(id -u):$(id -g) $HOME/.kube
kubectl apply -f kube-flannel.yml
Tek sunucu hem master hem de worker olarak çalışacaksa aşağıdaki kod çalıştırılır.
kubectl taint nodes --all node-role.kubernetes.io/master-
Çoklu sunucu olacaksa aşağıdaki kodun çıktısı diğer sunucularda çalıştırılır.
sudo kubeadm token create --print-join-command
Kubernetes klasöründeyken /apinizerOffline/kubernetes aşağıdaki komutlar çalıştırılır.
kubectl apply -f service.yaml
kubectl apply -f adminuser.yaml
kubectl create clusterrolebinding permissive-binding --clusterrole=cluster-admin --user=admin --user=kubelet --group=system:serviceaccounts
kubectl create clusterrolebinding kubernetes-dashboard -n kube-system --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
MongoDB Kurulumu
cd apinizerOffline/mongodb
yum install -y --cacheonly --skip-broken --disablerepo=* *.rpm
rpm -ivh --replacefiles --replacepkgs *.rpm
/etc/mongod.conf dosyasının içerisinde belirtilen alanlar aşağıdaki gibi değiştirilir.
sudo vi /etc/mongod.conf
--
port: 25080
ip 0.0.0.0
--
replication:
replSetName: apinizer-replicaset
security:
authorization: "enabled"
setParameter:
transactionLifetimeLimitSeconds: 300
--
sudo systemctl start mongod
sudo systemctl enable mongod
ReplicaSet Konfigürasyonu ve Yetkili Kullanıcı Tanımı
mongo mongodb://localhost:25080
#Bu aşamada eğer bağlantı hatası verirse /etc/hosts altına server adresi ile sunucu adı eklenmeli ve 127.0.0.1 ifadesinin değerlerinden biri de localhost mu diye bakılmalı
rs.initiate()
rs.status()
use admin
db.createUser(
{
user: 'apinizer',
pwd: '<YOUR_PASSWORD>',
roles: [ { role: 'root', db: 'admin' } ],
}
);
exit;
Şifre değiştirilmek istenirse;
|
Aşağıdaki komut satırını kullanarak MongoDB'ye bağlanılır ve düzgün çalıştığını kontrol etmek için bazı test komutları yürütülür.
mongo mongodb://localhost:25080 --authenticationDatabase "admin" -u "apinizer" -p
cfg = rs.conf()
cfg.members[0].host = "<MONGO_IP_ADDRESS>:25080"
rs.reconfig(cfg)
rs.status()
exit;
Elasticsearch Kurulumu
Elasticsearch sistem yapılandırması yapılır.
sudo adduser elasticsearch
sudo passwd elasticsearch
sudo usermod -aG wheel elasticsearch
sudo ulimit -n 65535
sudo vi /etc/security/limits.conf
elasticsearch - nofile 65535
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
sudo sysctl -w vm.swappiness=1
sudo sysctl -w vm.max_map_count=262144
sudo vi /etc/sysctl.conf
vm.max_map_count=262144 elasticsearch
sudo sysctl -p
sudo sysctl vm.max_map_count
Elasticsearch'in kurulum dosyalarının ve logların tutulacağı klasörler oluşturulup yetki verilir.
sudo mkdir /opt/elasticsearch
sudo mkdir /mnt/elastic-data/
sudo mkdir /mnt/elastic-snapdata/
sudo chown -Rf elasticsearch:elasticsearch /opt/elasticsearch
sudo chown -Rf elasticsearch:elasticsearch /mnt/elastic-*/
sudo chmod -Rf 775 /opt/elasticsearch
sudo chmod -Rf 775 /mnt/elastic-*/
Elasticsearch kullanısına geçilir ve apinizerOffline/elasticsearch klasöründeki dosya /opt/elasticsearch/ klasörüne kopyalanır.
su elasticsearch
sudo cp ~/apinizerOffline/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar /opt/elasticsearch/
cd /opt/elasticsearch
sudo tar -xzf elasticsearch-7.9.2-linux-x86_64.tar.gz
Makinenizdeki kaynaklara göre aşağıdaki komutla belirtilen güncelleme yapılarak Java-memory ayarları yapılmalıdır.
-Xms8g
-Xmx8g
sudo vi /opt/elasticsearch/elasticsearch-7.9.2/config/jvm.options
Kurulum klasöründeki dosyalar kopyalanır ve yetki verilir.
sudo cp ~/apinizerOffline/elasticsearch/elasticsearch.yml /opt/elasticsearch/elasticsearch-7.9.2/config/elasticsearch.yml
sudo cp ~/apinizerOffline/elasticsearch/elasticsearch-service.sh /opt/elasticsearch/elasticsearch-7.9.2/bin/elasticsearch-service.sh
sudo cp ~/apinizerOffline/elasticsearch/elasticsearch.service /etc/systemd/system/elasticsearch.service
sudo chown -Rf elasticsearch:elasticsearch /opt/elasticsearch/*
sudo chmod -Rf 775 /opt/elasticsearch/*
Elasticsearch.yml 'ın içerisindeki belirli alanlar "ELASTICSEARCH_IP_ADDRESS" kendi private ip adresinizle değiştirilir.
cluster.name: ApinizerEsCluster
node.name: "<ELASTICSEARCH_IP_ADDRESS>"
node.master: true
node.data: true
network.host: <ELASTICSEARCH_IP_ADDRESS>
http.port: 9200
cluster.initial_master_nodes: ["<ELASTICSEARCH_IP_ADDRESS>"]
discovery.seed_hosts: []
path.data: /mnt/elastic-data/
path.repo: /mnt/elastic-snapdata/
bootstrap.memory_lock: true
http.cors.enabled : true
http.cors.allow-origin : "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length
Servisler çalıştırılır.
sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
sudo systemctl enable elasticsearch
Apinizer Imagelarının Kubernetes'e Yüklenmesi
Apinizer imagelarının olduğu klasöre gidilir ve aşağıdaki komutlar çalıştırılır.
cd apinizerOffline/apinizerImages
docker load < manager_2024.xx.1.tar
docker load < worker_2024.xx.1.tar
docker load < cache_2024.xx.1.tar
docker load < integration_2024.xx.1.tar
KURULUM KONFİGÜRASYON AYARLARI
Bütün araçları kurduktan sonra son olarak Deploy aşamasına geçilmesi gerekmektedir.
Önce kubernetes klasörünün içerisine girilir ve deployment.yaml içerisindeki belirli alanlar düzenlendikten sonra deploy edilir.
cd apinizerOffline/kubernetes
vi apinizer-deployment.yaml
apiVersion: v1
kind: Namespace
metadata:
name: apinizer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: manager
namespace: apinizer
spec:
replicas: 1
selector:
matchLabels:
app: manager
version: 'v1'
template:
metadata:
labels:
app: manager
version: 'v1'
spec:
containers:
- name: manager
image: apinizercloud/manager:<APINIZER_VERSION>
imagePullPolicy: IfNotPresent
env:
- name: SPRING_PROFILES_ACTIVE
value: prod
- name: SPRING_DATA_MONGODB_DATABASE
value: apinizerdb
- name: SPRING_DATA_MONGODB_URI
value: 'mongodb://<MONGO_USERNAME>:<MONGO_PASSWORD>@<MONGO_IP>:<MONGO_PORT>/?authSource=admin&replicaSet=apinizer-replicaset'
- name: JAVA_OPTS
value: ' -Xmx2400m -Xms2400m -Dlog4j.formatMsgNoLookups=true'
resources:
requests:
memory: '3Gi'
cpu: '1'
limits:
memory: '3Gi'
cpu: '1'
ports:
- name: http
containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: manager
namespace: apinizer
labels:
app: manager
spec:
selector:
app: manager
type: NodePort
ports:
- name: http
port: 8080
nodePort: 32080
apinizer-deployment.yaml dosyası hazırlandıktan sonra aşağıdaki komut satırı Kubernetes Master sunucusu üzerinde çalıştırılır.
kubectl apply -f apinizer-deployment.yaml
Bu işlem sonrasında oluşturulan pod'u takip etmek ve logunu incelemek için aşağıdaki ilk kodu çalıştırıp pod ismi alınır ve ikinci kodda kullanılır.
kubectl get pods -n apinizer
kubectl logs PODADI -n apinizer
Apinizer imajları Kubernetes ortamına deploy edildikten sonra Apinizer tarafından size verilen Lisans Anahtarını'nın veri tabanına eklenmesi gerekmektedir.
Apinizer tarafından size verilen Lisans Anahtarını aşağıdaki gibi bir .js dosyasında güncelleyip veri tabanındaki lisans bilgisi güncellenebilir.
vi license.js
db.general_settings.updateOne(
{"_class":"GeneralSettings"},
{ $set: { licenseKey: '<LICENSE_KEY>'}}
)
Oluşturulan license.js dosyası çalıştırılır. Matched = 1 şeklinde bir sonuç görülmesi beklenir.
mongo mongodb://<MONGO_IP>:<MONGO_PORT>/apinizerdb --authenticationDatabase "admin" -u "apinizer" -p "<PASSWORD>" < license.js