ArgoCd Kurulumu Ve GitHub İle Entegrasyonu

tarafından
335
ArgoCd Kurulumu Ve GitHub İle Entegrasyonu

ArgoCD Kurulumu

ArgoCD Kurulumu için aşağıdaki adımları takip edeceğiz.

Adım1:
ArgoCD github hesabında bulunan install.yaml dosyasını kullanarak gerekli nesnelerin oluşturulmasını sağlayacağız.

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
ArgoCD Kurulumu

Adım2:

Yukarıdaki adımdan sonra SelfSigned SSL sertifikası ile birlikte ingress nesnesi oluşturarak ArgoCD UI tarafına erişim sağlayacağız. Burada sistem üzerinde Ingress Controller kurulu olduğu varsayılmıştır. Ayrıca bakınız.

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /tmp/tls_key.key -out /tmp/tls_crt.crt -subj "/CN=argocd.<your_ip_address>.nip.io"

Şimdi yukarıdaki adımda oluşturduğumuz key ve crt dosyaları ile aşağıdaki şekilde secret oluşturma dımına devam edelim. Secret nesnesi ile sertifikamıza ait key ve crt dosyalarını tutacağız. Bu sayede ingress nesnesi içerisinde bu değerleri girerek belirtiğimiz adrese güvenli olarak erişeceğiz.

kubectl create secret tls argocd-secret4ssl -n argocd --cert=/tmp/tls_crt.crt --key=/tmp/tls_key.key

Sertifika üretimden sonra aşağıdaki şekilde ingress tanımı oluşturarak uygulamaya erişim sağlayacağız.

vim ing.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server-http
  namespace: argocd
  annotations:
    kubernetes.io/ingress.class: "nginx"
    #nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
    #nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  rules:
  - http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: argocd-server
            port:
              name: https
    host: argocd.<ip_adresi>.nip.io
  tls:
  - hosts:
    - argocd.<ip_adresi>.nip.io
    secretName: argocd-secret4ssl
kubectl create -f ing.yaml

NOT: Eğer yukarıdaki ayarlardan sonra erişim sağlayamaz aşağıdaki şekilde hata alır iseniz deployment içerisine aşağıdaki satırları ekleyerek gerekli değişimleri sağlayabilirsiniz.

Aşağıdaki komutlar ile gerekli değişimleri yapabilirsiniz.

kubectl edit deploy argocd-server -n argocd

Daha sonra aşağıdaki satırları ilgili alana eklemeli ve kaydedip dosyayı kapatabilirsiniz. Aşağıdaki ayarlar ile insecure connection aktif edilerek tanımlanmamış sertifika ile gelen erişimler başarılı bir şekilde geçecektir.

HAFİF BİLGİ: Burada üretilen sertifika tamamen self signed bir sertfika olması nedeniyle tanımlanmamış yada tanınmamış bir otorite sebebi ile sayfaya erişim bakımından hata vermektedir. Biz alttaki satırları ekleyerek bağlantı yapmış olacağız. Allta sadece “– –insecure” satırını eklememiz yeterli olacaktır.

- --repo-server
- argocd-repo-server:8081
- --insecure

Bu adımlardan sonra ARGOCD tarafına başarılı bir şekilde erişim sağlayabiliriz. Aşağıdaki şekilde secret içerisinden gerekli paraloyı alarak ArgoCD için login olabiliriz.

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

Aşağıdaki şekilde yukarıdaki bilgiler ile login olabiliriz.

Şimdi aşağıdaki şekilde GitHub üzerinden gerekli reponun eklenmesini sağlayarak işleme devam edelim. Aşağıda örnek olarak verilmiş yaml dosyasını repo üzerine ekleyeceğim ve örnek uygulamanın oluşmasını sağlayacağım. Aşağıdaki repo bilgisini oluşturacağınız argocd application kısmına ekleyebilirsiniz. Aşağıdaki repo tanımı ile PV, PVC, Deployment, Servis Ve Ingress oluşmasını sağlayacağız.

Ayrıca basit bir şekilde index.html şeklinde basit bir web sayfası oluşturulmasını sağlayalım.

cd /opt/WhiteFANG
vim index.html
Test Page for ArgoCD Application
https://github.com/hafifbilgiler/ARGOCD.git

Yukarıdaki eklemeleri yaptıktan sonra kontrol ederek gerekli uygulamaların oluşup oluşmadığına bakalım

Daha sonra oluşan uygulamaya tıkladıktan sonra aşağıdaki şekilde oluşan yapıları görmemiz mümkün olacaktır.

Şimdi aynı yaml dosyası içerisinde image versiyonunu güncelleyelim ve sonuca bakalım.

Yukarıdaki görselde görüldüğü üzere yeni image versiyonu ile deployment nesnesi güncellenmiştir. Ayrıca ingress nesnesi ile bağlantıyı test edebiliriz.

Görüldüğü üzere ArgoCD ile Repomuzda var olan yaml dosyaları ile gerekli komponentlerin oluşturulmasını sağlayabilir ve günceleme olduğunda aktif olarak bunu sisteme yansıtabiliriz.