Helm paket yöneticisini daha önceden kurmadıysanız aşağıdaki yazım üzerinden ilk olarak kurulumu gerçekleştirin.

Longhorn reposunu helm’e ekleyelim.

helm repo add longhorn https://charts.longhorn.io

Repoyu update edelim

helm repo update

Longhorn’u kubernetes üzerinde kaldıralım

helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace

Kurulum biraz vakit alacaktır. Tüm podların sorunsuz çalıştığından emin olalım.

kubectl -n longhorn-system get pod
NAME                                        READY   STATUS    RESTARTS   AGE
csi-attacher-5f46994f7-cg5km                1/1     Running   0          31s
csi-attacher-5f46994f7-kkhmq                1/1     Running   0          31s
csi-attacher-5f46994f7-rhhrw                1/1     Running   0          31s
csi-provisioner-6ccbfbf86f-crfgg            1/1     Running   0          31s
csi-provisioner-6ccbfbf86f-p47ch            1/1     Running   0          31s
csi-provisioner-6ccbfbf86f-tl7mp            1/1     Running   0          31s
csi-resizer-6dd8bd4c97-22ztk                1/1     Running   0          30s
csi-resizer-6dd8bd4c97-2x6ft                1/1     Running   0          30s
csi-resizer-6dd8bd4c97-k24ns                1/1     Running   0          30s
csi-snapshotter-86f65d8bc-5nltl             1/1     Running   0          30s
csi-snapshotter-86f65d8bc-fwnns             1/1     Running   0          30s
csi-snapshotter-86f65d8bc-wf4fv             1/1     Running   0          30s
engine-image-ei-fa2dfbf0-6qs77              1/1     Running   0          72s
engine-image-ei-fa2dfbf0-mnmdm              1/1     Running   0          72s
engine-image-ei-fa2dfbf0-pb8g2              1/1     Running   0          72s
instance-manager-e-0a4ba5f6                 1/1     Running   0          70s
instance-manager-e-62515edc                 1/1     Running   0          52s
instance-manager-e-ab0f896a                 1/1     Running   0          71s
instance-manager-r-4f7e39d9                 1/1     Running   0          70s
instance-manager-r-763043d8                 1/1     Running   0          71s
instance-manager-r-7f4dde11                 1/1     Running   0          52s
longhorn-csi-plugin-9f7w5                   2/2     Running   0          30s
longhorn-csi-plugin-fcbfw                   2/2     Running   0          30s
longhorn-csi-plugin-swwr5                   2/2     Running   0          30s
longhorn-driver-deployer-6db849975f-tnq8r   1/1     Running   0          98s
longhorn-manager-2fhct                      1/1     Running   0          98s
longhorn-manager-5w4b8                      1/1     Running   0          98s
longhorn-manager-648w9                      1/1     Running   1          98s
longhorn-ui-6f547c964-frvxr                 1/1     Running   0          98s

Daha sonra uygulamanın dashboard kısmını webden görüntülemek için Ingress oluşturun.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    field.cattle.io/publicEndpoints: '[{"addresses":["10.0.0.100"],"port":80,"protocol":"HTTP","serviceName":"longhorn-system:longhorn-frontend","ingressName":"longhorn-system:longhorn","hostname":"longhorn.sezer.test","path":"/","allNodes":true}]'
  creationTimestamp: "2022-02-26T11:05:03Z"
  generation: 2
  managedFields:
  - apiVersion: networking.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:field.cattle.io/publicEndpoints: {}
      f:spec:
        f:ingressClassName: {}
        f:rules: {}
    manager: agent
    operation: Update
    time: "2022-02-26T11:06:15Z"
  - apiVersion: networking.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        f:loadBalancer:
          f:ingress: {}
    manager: nginx-ingress-controller
    operation: Update
    time: "2022-02-26T11:06:15Z"
  name: longhorn
  namespace: longhorn-system
  resourceVersion: "13646754"
  uid: 6c6e63ca-5575-4bb3-95a5-fc8a52c49a5f
spec:
  ingressClassName: nginx
  rules:
  - host: longhorn.sezer.test
    http:
      paths:
      - backend:
          service:
            name: longhorn-frontend
            port:
              number: 80
        path: /
        pathType: Prefix
status:
  loadBalancer:
    ingress:
    - ip: 10.0.0.100
image 13

NOT: Ayrıca longhorn front-end kısmı herhangi bir auth gerektirmeden giriş yapılabildiği için ingress içerisine basic auth ekleyebilirsiniz.

Basic Auth

Öncelikle aşağıdaki komutu kendimize göre düzenleyelim. “foo kullanıcı adı bar şifre olarak aşağıdaki komutta yer almakta”

USER=foo; PASSWORD=bar; echo "${USER}:$(openssl passwd -stdin -apr1 <<< ${PASSWORD})" >> auth

Komut auth adlı dosyaya bilgileri yazacaktır.

cat auth
foo:$apr1$FnyKCYKb$6IP2C45fZxMcoLwkOwf7k0

Auth dosyasını longhorn secret ‘a ekleyelim

kubectl -n longhorn-system create secret generic basic-auth --from-file=auth
secret/basic-auth created

Ardından ingress’e annotations kısmına aşağıdaki değişkenleri ekleyelim

  annotations:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/ssl-redirect: 'false'
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required '
    nginx.ingress.kubernetes.io/proxy-body-size: 10000m

Artık front-end kısmına giriş yaptığınız zaman kullanıcı adı – şifre soracaktır.

image 14