Kamis, 08 Agustus 2024

GITOPS-docker

 

Menghadirkan Infrastruktur Cloud dengan Cara GitOps dengan Crossplane dan ArgoCD


  • Go to the profile of  F.Azhim
·12 min read
Menghadirkan Infrastruktur Cloud dengan Cara GitOps dengan Crossplane dan ArgoCD
Photo by Jacob Miller / Unsplash

https://zhmmcloud.blog/cara-menemukan-log-docker-anda/


Di blog ini, kami akan memandu Anda melalui langkah-langkah memanfaatkan Crossplane dan ArgoCD untuk menghadirkan infrastruktur dengan cara GitOps.infrastruktur sebagai kode (IaC) dan kolaborasi ke dalam kontrol versi, sebuah metodologi yang menghadirkan prinsip GitOps. Perlu diketahui bahwa blog ini menandai awal dari seri Crossplane + ArgoCD.

Pada artikel ini, kita akan mempelajari konfigurasi dasar yang diperlukan untuk menerapkan infrastruktur menggunakan pendekatan GitOps. Postingan blog selanjutnya akan memberikan wawasan yang lebih komprehensif tentang berbagai konsep.

Prasyarat

  • Buruh pelabuhan (Docker)
  • kind, ada banyak cara untuk menginstal kind, silakan merujuk ke tautan untuk menginstal sesuai keinginan Anda.
  • kubectl, kita akan menggunakan ini untuk berinteraksi dengan cluster.
  • akun Github
  • Helm untuk memasang grafik lintas bidang
  • Akun AWS seperti di blog ini kita akan membuat sumber daya SQS di AWS.

Apa yang akan kita buat/amati?

Pada tingkat tinggi kami akan melakukan hal berikut -

  • Penyiapan Repositori Github Pribadi dengan ArgoCD
  • Cluster Kubernetes dengan Crossplane dan ArgoCD
  • Buat antrean AWS SQS dengan cara GitOps
  • Impor antrean AWS SQS yang ada dengan cara GitOps
  • Hapus sumber daya dari cluster kubernetes dan amati bahwa ArgoCD mengembalikannya
  • Hapus sumber daya dari Konsol AWS dan amati bahwa Crossplane mengembalikannya

Buat Repositori GitHub Pribadi


Dengan asumsi Anda sudah memiliki akun GitHub. Langkah-langkah berikut akan membuat repositori GitHub dan menghasilkan token akses pribadi. ArgoCD akan mengawasi repositori ini untuk menyinkronkan sumber daya di cluster Kubernetes.

Buat repositori GitHub pribadi baru seperti yang ditunjukkan pada tangkapan layar di bawah, kami akan menamainya sebagai xargocd-gitops, jika tidak tersedia Anda dapat menggunakan nama apa pun -

buat repositori github pribadi
buat repositori github pribadi

Setelah pembuatan repositori berhasil maka akan terlihat seperti di bawah ini -

pembuatan repo yang sukses
pembuatan repo yang sukses

Buat token akses Pribadi (klasik) dengan cakupan , catat tokennya, kita memerlukan ini sambil mengonfigurasi ArgoCD untuk menonton repo git pribadi kami -repo seperti di bawah ini dan klik tombol Generate Token

menyiapkan token github
menyiapkan token github

Buat cluster Kubernetes menggunakan KIND

Saya telah menjelaskan secara detail di blog sebelumnya cara mengatur cluster Kubernetes yang fungsional menggunakan KIND, oleh karena itu kami tidak akan membahasnya secara detail lagi. Silakan baca blog untuk detail tentang KIND.

Buat cluster KIND seperti di bawah ini -

kind create cluster --config - <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: "platformwale"
# configure cluster with containerd registry config dir enabled
containerdConfigPatches:
- |-
  [plugins."io.containerd.grpc.v1.cri".registry]
    config_path = "/etc/containerd/certs.d"
nodes:
- role: control-plane
  image: "kindest/node:v1.27.3"
EOF

Pastikan konteks kubectl mengarah ke cluster jenis yang dibuat di atas -

# set the context as below
kubectl config use-context kind-platformwale

# validate as below
kubectl config current-context

Instal dan Konfigurasi ArgoCD

Mari kita instal rilis stabil ArgoCD di cluster KIND yang kita buat di atas. Pada saat blog ini ditulis, rilis stabil ArgoCD berada pada versi v2.8.0.

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

Pastikan semua pod argocd berjalan seperti di bawah ini -

$ kubectl get po -n argocd
NAME                                                READY   STATUS    RESTARTS   AGE
argocd-application-controller-0                     1/1     Running   0          49s
argocd-applicationset-controller-74bd4b8497-5bfcd   1/1     Running   0          49s
argocd-dex-server-6c6dfb6597-twwnw                  1/1     Running   0          49s
argocd-notifications-controller-6786586cb-87nxc     1/1     Running   0          49s
argocd-redis-b5d6bf5f5-xbqc5                        1/1     Running   0          49s
argocd-repo-server-6658f8b96d-6jmwt                 1/1     Running   0          49s
argocd-server-5fff657769-nnqwm                      1/1     Running   0          49s

Instal ArgoCD CLI seperti yang disarankan dalam tautan, dalam kasus saya, saya bekerja di Mac dan menginstal CLI seperti di bawah ini -

brew install argocd

Port forward layanan argocd sehingga Anda dapat mengakses UI argocd di http://localhost:8080 seperti di bawah ini -

kubectl port-forward svc/argocd-server -n argocd 8080:443

Ubah rahasia awal untuk UI argocd dengan menjalankan perintah berikut di terminal lain -

# open another terminal

# make sure your kubecontext is pointing to the cluster you created above
kubectl config use-context kind-platformwale

# this will stdout the initial password, copy that, you will need it for the command below
argocd admin initial-password -n argocd

# login using the password from above command, the Username will be `admin` and Password will be the one you copied above
argocd login localhost:8080

# update password; it will ask for current password, which is the one from command above and provide a new password
argocd account update-password

# delete the secret holding initial argocd password
kubectl delete secret -n argocd argocd-initial-admin-secret

Pastikan Anda dapat menggunakan kata sandi baru dan masuk ke UI argocd http://localhost:8080 menggunakan Username: admin

layar aplikasi argocd
Tampilan aplikasi argocd

Konfigurasikan ArgoCD untuk melihat repositori GitHub pribadi

Sekarang kita akan mengkonfigurasi ArgoCD untuk melihat Repositori Github Pribadi yang kita buat di bagian di atas. Dengan asumsi Anda telah menyalin token akses pribadi, Anda perlu mengganti di bawah dan menerapkan manifes -

GITHUB_PRIVATE_ACCESS_TOKEN=<your token>
YOUR_PRIVATE_GITHUB_REPO_URL=<e.g. https://github.com/piyushjajoo/xargocd-gitops>
YOUR_GITHUB_USERNAME=<e.g. piyushjajoo>

kubectl apply -f - <<EOF
---
# setup argocd secret for private gitops repository
apiVersion: v1
kind: Secret
metadata:
  name: xargocd-gitops-credentials
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
type: Opaque
stringData:
  name: xargocd-gitops
  url: ${YOUR_PRIVATE_GITHUB_REPO_URL}
  username: ${YOUR_GITHUB_USERNAME}
  password: ${GITHUB_PRIVATE_ACCESS_TOKEN}
EOF

Pastikan rahasianya berhasil dibuat -

$ kubectl get secrets -n argocd xargocd-gitops-credentials
NAME                         TYPE     DATA   AGE
xargocd-gitops-credentials   Opaque   4      4m1s

Konfigurasikan CR AppProject ArgoCD

AppProject CR berikut memungkinkan penerapan CR Aplikasi ArgoCD hanya ke argocd namespace dalam kluster KIND -


SOURCE_REPO=<e.g. https://github.com/piyushjajoo/xargocd-gitops>

kubectl apply -f - <<EOF
# The 'applications-project' AppProject allows a non-admin user to deploy 
# only Application resources in the 'argocd' namespace.
---
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: applications-project
  namespace: argocd
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
  description: Project for argocd applicatons
  sourceRepos:
  - ${SOURCE_REPO}

  #
  # Allow this project to deploy only to 'argocd' namespace
  #
  destinations:
  - namespace: argocd
    server: https://kubernetes.default.svc
  #
  # Deny all namespace-scoped resources from being created, except for Application
  #
  namespaceResourceWhitelist:
  - group: 'argoproj.io'
    kind: Application
EOF

AppProject CR berikut memungkinkan untuk menerapkan SQS sumber daya AWS apa pun dari sqs.aws.upbound.io API ke namespace mana pun dalam kluster KIND -


SOURCE_REPO=<e.g. https://github.com/piyushjajoo/xargocd-gitops>

kubectl apply -f - <<EOF
# 'sqs-project' is used for actual SQS crossplane resources
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: sqs-project
  namespace: argocd
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
  description: Project for deploying crossplane resources to the cluster
  sourceRepos:
  - ${SOURCE_REPO}

  # can deploy to any namespace but within the kind cluster only
  destinations:
  - namespace: '*'
    server: https://kubernetes.default.svc   

  # can deploy any SQS resources
  clusterResourceWhitelist:
  - group: 'sqs.aws.upbound.io'
    kind: '*'
EOF

Pastikan AppProject CR berhasil diinstal seperti di bawah ini -

$ kubectl get appprojects.argoproj.io -A
NAMESPACE   NAME                   AGE
argocd      applications-project   24s
argocd      default                60m
argocd      sqs-project            12s

Siapkan Aplikasi ArgoCD

Mari kita konfigurasikan CR Aplikasi argocd untuk menginstal sumber daya SQS apa pun di bawah direktori sqs-queues di bawah xargocd-gitops repositori pribadi, kita akan membuat direktori setelahnya Crossplane telah terpasang.


REPO_URL=<e.g. https://github.com/piyushjajoo/xargocd-gitops>

kubectl apply -f - <<EOF
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: sqs-queues
  namespace: argocd
  finalizers:
    - resources-finalizer.argocd.argoproj.io   
spec:
  project: sqs-project
  source:
    repoURL: ${REPO_URL}
    targetRevision: HEAD
    path: ./sqs-queues
  destination:
    server: https://kubernetes.default.svc
    namespace: crossplane-system
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - SyncWaveOrder=true
    retry:
      limit: 1
      backoff:
        duration: 5s 
        factor: 2 
        maxDuration: 1m
EOF

Pastikan aplikasi argocd berhasil dibuat seperti di bawah ini -

$ kubectl get applications -A
NAMESPACE   NAME         SYNC STATUS   HEALTH STATUS
argocd      sqs-queues   Unknown       Healthy

$ argocd app list
NAME               CLUSTER                         NAMESPACE          PROJECT      STATUS   HEALTH   SYNCPOLICY  CONDITIONS       REPO                                           PATH          TARGET
argocd/sqs-queues  https://kubernetes.default.svc  crossplane-system  sqs-project  Unknown  Healthy  Auto-Prune  ComparisonError  https://github.com/piyushjajoo/xargocd-gitops  ./sqs-queues  HEAD

Mari kita perbaiki ComparisonError untuk saat ini, hal ini karena direktori sqs-queues belum ada di repositori, kesalahannya akan hilang setelah kita mengatur direktori di bagian selanjutnya.

Buat direktori bernama sqs-queues dan tambahkan file teks tiruan apa pun misalnya. dummy ke direktori dan komit ke git repo. Ini akan memperbaiki aplikasi argocd.

$ argocd app list
NAME               CLUSTER                         NAMESPACE          PROJECT      STATUS  HEALTH   SYNCPOLICY  CONDITIONS  REPO                                           PATH          TARGET
argocd/sqs-queues  https://kubernetes.default.svc  crossplane-system  sqs-project  Synced  Healthy  Auto-Prune  <none>      https://github.com/piyushjajoo/xargocd-gitops  ./sqs-queues  HEAD

Instal Crossplane dan Konfigurasikan Penyedia AWS

Di bagian ini, kita akan menginstal inti Crossplane dan pengontrol Penyedia AWS Crossplane untuk sumber daya SQS.

Instal Crossplane Core, pada saat penulisan blog ini, kami versi Crossplane v1.13.2 -

# add crossplane helm repo
helm repo add \
crossplane-stable https://charts.crossplane.io/stable

# update the added helm repo
helm repo update

# to check the current version of the crossplane core
helm search repo crossplane-stable

# install crossplane core helm chart
helm install crossplane \
crossplane-stable/crossplane \
--namespace crossplane-system \
--create-namespace

Pastikan semua pod crossplane berhasil diinstal -

$ kubectl get po -n crossplane-system
NAME                                       READY   STATUS    RESTARTS   AGE
crossplane-8697f8cff4-mw5j6                1/1     Running   0          35s
crossplane-rbac-manager-6f8dbd9ffd-tkcb9   1/1     Running   0          35s

Instal Penyedia AWS Crossplane seperti di bawah ini, pada saat penulisan blog ini, provider-aws-sqs berada pada versi < aku=3> -v0.38.0

cat <<EOF | kubectl apply -f -
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-aws-sqs
spec:
  package: xpkg.upbound.io/upbound/provider-aws-sqs:v0.38.0
EOF

Pastikan Penyedia AWS berhasil diinstal seperti di bawah ini -

$ kubectl get providers
NAME                          INSTALLED   HEALTHY   PACKAGE                                               AGE
provider-aws-sqs              True        True      xpkg.upbound.io/upbound/provider-aws-sqs:v0.38.0      29s
upbound-provider-family-aws   True        True      xpkg.upbound.io/upbound/provider-family-aws:v0.38.0   25s

Pastikan juga api-resources untuk SQS tersedia -

$ kubectl api-resources | grep sqs.aws.upbound.io
queuepolicies                                        sqs.aws.upbound.io/v1beta1             false        QueuePolicy
queueredriveallowpolicies                            sqs.aws.upbound.io/v1beta1             false        QueueRedriveAllowPolicy
queueredrivepolicies                                 sqs.aws.upbound.io/v1beta1             false        QueueRedrivePolicy
queues                                               sqs.aws.upbound.io/v1beta1             false        Queue

Buat Pengguna IAM dengan izin SQS

Crossplane memerlukan Izin AWS IAM untuk dapat membuat antrean SQS, dalam kasus penggunaan kami, kami cukup membuat Peran IAM dengan izin SQSFullAccess seperti di bawah ini dari Konsol AWS.

  • Buka IAM > Konsol pengguna di AWS UI
  • Buat Pengguna IAM, Anda dapat memilih nama apa pun yang Anda inginkan, di layar berikutnya pilih Attach policies directly dan cari AmazonSQSFullAccess dan buat Pengguna IAM.< /span>
  • Setelah pengguna dibuat, klik View User dan buka tab Security Credentials dan gulir ke bawah ke bagian Access Keys.
  • Klik Create access key dan pastikan untuk menyalin nilainya sebelum Anda menekan Done atau setidaknya unduh file .csv , karena kita memerlukan kredensial ini untuk menyiapkan ProviderConfig untuk Penyedia AWS seperti yang ditunjukkan di bawah ini.
CATATAN: ada berbagai cara untuk mengonfigurasi kredensial untuk Penyedia AWS, tetapi untuk blog ini, kami akan menggunakan kredensial Pengguna IAM, di blog mendatang kami akan membahas cara lain, misalnya. Identitas yang Disuntikkan. Berbagai cara otentikasi untuk Penyedia AWS disebutkan dalam dokumen ini.

Konfigurasi Penyedia Pengaturan

Di bagian ini, kita akan menyiapkan ProviderConfig untuk Penyedia AWS, ini adalah cara untuk membuat pengontrol AWS penyedia membuat sumber daya di Akun AWS yang Anda inginkan.

Buat file aws-credentials.txt dengan kredensial Pengguna IAM yang Anda salin pada bagian di atas, pastikan untuk mengganti nilainya -

[default]
aws_access_key_id = REPLACE_ME_AWS_ACCESS_KEY_ID
aws_secret_access_key = REPLACE_ME_AWS_SECRET_ACCESS_KEY

Buat rahasia kubernetes seperti di bawah ini -

kubectl create secret \
generic aws-secret \
-n crossplane-system \
--from-file=creds=./aws-credentials.txt

Buat ProviderConfig seperti di bawah ini -

cat <<EOF | kubectl apply -f -
apiVersion: aws.upbound.io/v1beta1
kind: ProviderConfig
metadata:
  name: default
spec:
  credentials:
    source: Secret
    secretRef:
      namespace: crossplane-system
      name: aws-secret
      key: creds
EOF

Ini adalah cara untuk mengonfigurasi default ProviderConfig untuk penyedia-aws, yaitu jika providerConfigRef tidak disebutkan dalam sumber daya lintas bidang yang sedang dibuat, maka akan dilakukan dengan default pilih default ProviderConfig.


Validasi pengaturan crossplane dan penyedia aws

Selesai, sekarang kita siap membuat komitmen ke git dan melihat sumber daya dibuat. Atau mungkin validasi terakhir sebelum kami menghadirkan infrastruktur melalui GitOps.

Kirimkan sumber daya Queue berikut menggunakan kubectl dan validasi jika antrian dibuat di Akun AWS yang Anda inginkan di wilayah yang diinginkan, perhatikan pada contoh di bawah ini kami secara eksplisit menentukan providerConfigRef -> default, namun ini akan berfungsi meskipun kami tidak menyebutkan default ProviderConfig -

kubectl apply -f - <<EOF
apiVersion: sqs.aws.upbound.io/v1beta1
kind: Queue
metadata:
  name: demo-queue
spec:
  forProvider:
    name: demo-queue
    region: us-west-2
  providerConfigRef:
    name: default
EOF

Tunggu beberapa detik sumber daya sqs-queue akan dibuat, Anda juga dapat memvalidasi di Konsol AWS -

$ kubectl get queues.sqs.aws.upbound.io
NAME         READY   SYNCED   EXTERNAL-NAME                                                 AGE
demo-queue   True    True     https://sqs.us-west-2.amazonaws.com/xxxxxxxxx/demo-queue   37s

Hapus antrian sebagai berikut dan pastikan antrian tersebut dihapus -

$ kubectl delete queues.sqs.aws.upbound.io demo-queue
queue.sqs.aws.upbound.io "demo-queue" deleted

$ kubectl get queues.sqs.aws.upbound.io
No resources found

Lihat keajaiban GitOps + Crossplane + ArgoCD

Kami siap melihat Crossplane dan ArgoCD beraksi. Inilah arsitekturnya -

Arsitektur
Arsitektur

Buat Antrean SQS baru

Buat komit dengan manifes YAML berikut di direktori sqs-queues di repositori github yang Anda buat sebelumnya, ini adalah direktori yang telah Anda konfigurasikan sebelumnya dengan ArgoCD. Dalam skenario ini, kami membuat sumber daya baru melalui GitOps.

apiVersion: sqs.aws.upbound.io/v1beta1
kind: Queue
metadata:
  name: platformwale-queue
spec:
  forProvider:
    name: platformwale-queue
    region: us-west-2

Repo GitHub Anda akan terlihat seperti di bawah ini -

gambar

Buka UI argocd ke aplikasi sqs-queues Anda dan tekan tombol dibuat di Wilayah AWS yang ditentukan dalam Akun AWS yang dikonfigurasi.Refresh jika argocd belum menyinkronkan repo secara otomatis, tunggu beberapa detik dan Anda akan melihat bahwa repo telah disinkronkan seperti di bawah ini, validasi juga bahwa platformwale-queue

gambar
$ kubectl get queues.sqs.aws.upbound.io
NAME                 READY   SYNCED   EXTERNAL-NAME                                                         AGE
platformwale-queue   True    True     https://sqs.us-west-2.amazonaws.com/xxxxxxx/platformwale-queue   6m48s

Impor Antrean SQS yang ada

Mari kita lakukan sebaliknya, mari kita buat Antrean dari Konsol AWS, sebut saja platformwale-queue2 di < wilayah i=2> dan mari kita coba mengimpornya.us-west-2

Buat antrian platformwale-queue2 di us-west-2 dengan semua nilai default dan salin nilai bidang URL. Misalnya - https://sqs.us-west-2.amazonaws.com/xxxxx/platformwale-queue2

Kirimkan manifes di bawah ini ke git repo pada direktori sqs-queues seperti sebelumnya, kali ini Anda akan melihat bahwa, ia akan berhasil mengimpor sumber daya yang ada dan tidak akan mencoba membuat ulang sumber daya tersebut.< /span>

apiVersion: sqs.aws.upbound.io/v1beta1
kind: Queue
metadata:
  name: platformwale-queue2
  annotations:
    crossplane.io/external-name: https://sqs.us-west-2.amazonaws.com/xxxxx/platformwale-queue2
spec:
  forProvider:
    name: platformwale-queue2
    region: us-west-2

Keajaiban terjadi melalui crossplane.io/external-name anotasi yang kami tentukan dalam manifes kami. Ini adalah anotasi yang diubah oleh bidang silang setelah sumber daya dibuat dan bidang silang memvalidasi apakah sumber daya ada dengan nilai yang ditentukan dalam anotasi, jika ya, ia hanya mencoba mengimpor sumber daya.

$ kubectl get queues.sqs.aws.upbound.io
NAME                  READY   SYNCED   EXTERNAL-NAME                                                          AGE
platformwale-queue    True    True     https://sqs.us-west-2.amazonaws.com/xxxxx/platformwale-queue    16m
platformwale-queue2   True    True     https://sqs.us-west-2.amazonaws.com/xxxxx/platformwale-queue2   15s

Kami akan membahas impor sumber daya secara rinci di blog kami yang akan datang. Itu dia!! Di sana Anda memiliki cara GitOps yang fungsional dalam menyediakan infrastruktur menggunakan Crossplane + ArgoCD.


Deteksi Melayang Otomatis

Mari kita berambisi dan menghapus sumber daya dari cluster, Anda akan melihat bahwa suatu saat argocd akan disinkronkan ulang dan sumber daya akan kembali -

# delete the queue
$ kubectl delete queues platformwale-queue
queue.sqs.aws.upbound.io "platformwale-queue" deleted

# queue is gone and you see it being recreated, you can also valdiate in AWS Console
$ kubectl get queues
NAME                 READY   SYNCED   EXTERNAL-NAME   AGE
platformwale-queue   False   True                     2s

Mari menjadi sangat ambisius dan hapus sumber daya dari Konsol UI AWS, Anda akan melihatnya suatu saat nanti (bagi saya itu adalah ~10 menit, saya yakin ini dapat dikonfigurasi) sumber daya akan kembali -

$ kubectl describe queues platformwale-queue
....
....
....
    Normal   CreatedExternalResource          16s (x3 over 22m)  managed/sqs.aws.upbound.io/v1beta1, kind=queue  Successfully requested creation of external resource

Membersihkan

Ini sangat penting, Anda tidak ingin melihat biaya tak terduga dalam tagihan AWS Anda. GitOps membuatnya lebih lancar untuk dibersihkan. Cukup hapus file YAML yang dibuat di direktori sqs-queues lalu jalankan argocd app sync sqs-qeueues --prune, ini akan menghapus sumber daya yang manifesnya baru saja Anda hapus.

$ kubectl get queues
No resources found
Semua antrian dihapus
Semua antrian dihapus

Pastikan untuk menghapus Pengguna IAM yang Anda buat sebelumnya dari Konsol AWS.

Selain itu, jika Anda tidak lagi memerlukan repositori GitHub pribadi, Anda dapat menghapus repositori tersebut. Pastikan juga untuk menghapus token akses pribadi yang Anda buat jika Anda tidak ingin terus menggunakannya. Silakan manfaatkan UI GitHub untuk membersihkannya.

Terakhir, jika Anda sudah selesai menggunakan kind cluster, hapus seperti di bawah ini, mohon jangan menghapus cluster sebelum menghapus sumber daya cloud, jika tidak, Anda perlu membersihkan sumber daya cloud secara manual -

kind delete cluster --name platformwale

## validation
$ kind delete cluster --name platformwale
Deleting cluster "platformwale" ...
Deleted nodes: ["platformwale-control-plane"]

Kesimpulan

Oleh karena itu, kami telah mengamati bagaimana Crossplane dan ArgoCD dapat dimanfaatkan untuk mengimplementasikan metodologi GitOps dalam menyediakan infrastruktur. Kemampuan ini memiliki potensi besar baik bagi tim pengembang internal maupun tim platform. Kemampuan bawaan untuk mendeteksi penyimpangan dan melakukan rekonsiliasi menawarkan keuntungan luar biasa yang akan dengan antusias ditawarkan oleh setiap insinyur platform kepada kelompok pengembang internal mereka.

Sekian Terimakasih....

Tidak ada komentar:

Posting Komentar