DEV Community

Rümeysa Öz
Rümeysa Öz

Posted on • Updated on

Kubernetes Üzerinde Hyperledger Fabric Ağının Kurulumu

Not: Bu rehberde belirttiğim komutların ve yapılandırmaların doğrudan çalışması için gerekli olan portların (80 ve 443) kullanılmadığından emin olun. Eğer bu portlar zaten kullanılıyorsa, bu rehber çalışmayacaktır.

1. Docker Kurulumu

sudo nano /etc/fstab
Enter fullscreen mode Exit fullscreen mode

Image description

sudo swapoff -a
Enter fullscreen mode Exit fullscreen mode
sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sudo sysctl --system
Enter fullscreen mode Exit fullscreen mode

Docker'ın Apt Deposunu Kurma:

Bir makinede ilk defa Docker Engine'i kurmadan önce Docker deposunu kurmanız gerekmektedir. Bu işlemden sonra Docker'ı bu depodan kurabilir ve güncelleyebilirsiniz.

1. Docker'ın Apt Deposunu Ayarlama:

a. Docker'ın resmi GPG anahtarını ekleyin:

Bu anahtar, Docker paketlerinin doğrulamasında kullanılır.

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
Enter fullscreen mode Exit fullscreen mode

Yukarıdaki komutlar, Docker'ın resmi anahtarını eklemek için gereken bazı paketleri kurar.

sudo install -m 0755 -d /etc/apt/keyrings
Enter fullscreen mode Exit fullscreen mode

Bu komutla /etc/apt/keyrings adında bir dizin oluşturulur.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Enter fullscreen mode Exit fullscreen mode

Bu komut, Docker'ın resmi GPG anahtarını indirir ve /etc/apt/keyrings/docker.gpg adlı bir dosyada saklar.

sudo chmod a+r /etc/apt/keyrings/docker.gpg
Enter fullscreen mode Exit fullscreen mode

Bu komut, oluşturduğunuz anahtar dosyasının okunabilir olduğundan emin olmak için gerekli izinleri ayarlar.

b. Deposu Apt kaynaklarına ekleyin:
Bu, Docker'ın resmi depo adresini sisteminize ekler.

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Enter fullscreen mode Exit fullscreen mode

Bu komut, sisteminizin mimarisine ve sürümüne göre Docker deposunu ekler.

sudo apt-get update
Enter fullscreen mode Exit fullscreen mode

Bu komut, depo bilgilerini günceller.

2. Docker Paketlerini Kurma:

a. En Son Sürümü Kurma:

Eğer Docker'ın en son sürümünü kurmak istiyorsanız, aşağıdaki komutu çalıştırın:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Enter fullscreen mode Exit fullscreen mode

Bu komut, Docker'ın en son sürümünü, Docker CLI'yi (Komut Satırı Arayüzü), containerd.io'yu ve bazı eklentileri kurar.

Bu adımların hepsini takip ederek Docker'ı Ubuntu sisteminize başarıyla kurmuş olacaksınız.

2. KinD Kurulumu

Linux için:

AMD64 / x86_64 için:

Bu komut, mevcut makinenizin mimarisinin x86_64 (genelde modern bilgisayarlar için) olup olmadığını kontrol eder. Eğer öyleyse, kind adlı dosyayı belirtilen URL'den indirir.

[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-linux-amd64
Enter fullscreen mode Exit fullscreen mode

İndirilen kind dosyasını çalıştırılabilir yapmak için:

chmod +x ./kind
Enter fullscreen mode Exit fullscreen mode

Son olarak, kind dosyasını global olarak erişilebilir bir konuma taşıyın:

sudo mv ./kind /usr/local/bin/kind
Enter fullscreen mode Exit fullscreen mode
curl -LO "https://dl.k8s.io/release/v1.23.5/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv ./kubectl /usr/local/bin/
Enter fullscreen mode Exit fullscreen mode

Bu adımları takip ederek kind ve kubectl'i Linux sisteminize başarıyla kurmuş olacaksınız.

3. Kubernetes Kümesini Oluşturma

cat << EOF > kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  image: kindest/node:v1.25.8
  extraPortMappings:
  - containerPort: 30949
    hostPort: 80
  - containerPort: 30950
    hostPort: 443
EOF

Enter fullscreen mode Exit fullscreen mode

Yukarıda verdiğiniz kind-config.yaml dosyasını kullanarak Kubernetes kümesini oluşturabilirsiniz. Eğer bu dosya zaten oluşturulmuşsa, aşağıdaki komutu çalıştırarak kümeyi başlatın:

kind create cluster --config=./kind-config.yaml
Enter fullscreen mode Exit fullscreen mode

4. Helm Kurulumu

Helm, Kubernetes için bir paket yöneticisidir.

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Enter fullscreen mode Exit fullscreen mode

Daha sonra belirttiğiniz Helm depo adresini ekleyin ve operatörü yükleyin:

helm repo add kfs https://kfsoftware.github.io/hlf-helm-charts --force-update
helm install hlf-operator kfs/hlf-operator --version=1.9.0
Enter fullscreen mode Exit fullscreen mode

Bu adımların ardından, Fabric için Kubernetes operatörü kurulmuş olacaktır. Operatörün doğru bir şekilde kurulduğunu kontrol etmek için:

kubectl get pods
Enter fullscreen mode Exit fullscreen mode

komutunu çalıştırarak hlf-operator pod'unun çalışıp çalışmadığını kontrol edebilirsiniz. Ayrıca, CRD'lerin doğru bir şekilde kurulup kurulmadığını kontrol etmek için:

kubectl get crds | grep hlf.kungfusoftware.es
Enter fullscreen mode Exit fullscreen mode

komutunu çalıştırabilirsiniz. Bu, Fabric ile ilgili CRD'lerin listesini döndürecektir.

5. Kubectl ve Krew Kurulumu

Krew, kubectl için bir eklenti yöneticisidir.

Öncelikle kubectl kurmalısınız:


sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
Enter fullscreen mode Exit fullscreen mode

Sonra Krew'i kurabilirsiniz:

(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/download/v0.4.4/krew-linux_amd64.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./"${KREW}" install krew
)
Enter fullscreen mode Exit fullscreen mode
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
Enter fullscreen mode Exit fullscreen mode

Eklentiyi kurun:


kubectl krew install hlf
Enter fullscreen mode Exit fullscreen mode

6. Istio Kurulumu

Öncelikle Istio'nun ikili dosyalarını indirin:


curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.16.1 TARGET_ARCH=x86_64 sh -
export PATH="$PATH:$PWD/istio-1.16.1/bin"
istioctl install --set profile=default -y
kubectl get svc -n istio-system
kubectl get pods -n istio-system
Enter fullscreen mode Exit fullscreen mode

Kubernetes'e Istio'yu yüklemek için:

kubectl create namespace istio-system

istioctl operator init

kubectl apply -f - <<EOF
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  name: istio-gateway
  namespace: istio-system
spec:
  addonComponents:
    grafana:
      enabled: false
    kiali:
      enabled: false
    prometheus:
      enabled: false
    tracing:
      enabled: false
  components:
    ingressGateways:
      - enabled: true
        k8s:
          hpaSpec:
            minReplicas: 1
          resources:
            limits:
              cpu: 500m
              memory: 512Mi
            requests:
              cpu: 100m
              memory: 128Mi
          service:
            ports:
              - name: http
                port: 80
                targetPort: 8080
                nodePort: 30949
              - name: https
                port: 443
                targetPort: 8443
                nodePort: 30950
            type: NodePort
        name: istio-ingressgateway
    pilot:
      enabled: true
      k8s:
        hpaSpec:
          minReplicas: 1
        resources:
          limits:
            cpu: 300m
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi
  meshConfig:
    accessLogFile: /dev/stdout
    enableTracing: false
    outboundTrafficPolicy:
      mode: ALLOW_ANY
  profile: default

EOF
Enter fullscreen mode Exit fullscreen mode

Top comments (0)