Lewati ke isi

Deployment dan Pemeliharaan / Deployment Helm

Dokumen ini terutama memperkenalkan cara men-deploy DataFlux Func melalui Helm.

1. Persyaratan Sistem dan Lingkungan

Sebelum menginstal DataFlux Func, pastikan lingkungan memenuhi persyaratan berikut.

1.1 Persyaratan Sistem

Cluster yang menjalankan DataFlux Func harus memenuhi persyaratan berikut:

  • Kubernetes > 1.14
  • Helm >= 3.8
  • Bandwidth jaringan >= 10Mbps
  • Kapasitas memori >= 4GB
  • Inti CPU >= 2
  • Saat menggunakan MySQL eksternal, versi MySQL harus 5.7 atau lebih tinggi, aktifkan parameter innodb_large_prefix, dan encoding database harus utf8mb4
  • Saat menggunakan Redis eksternal, versi Redis harus 5.0 atau lebih tinggi, dengan setidaknya 1 GB memori yang tersedia, versi non-cluster

Penyimpanan DataFlux Func sebaiknya menggunakan penyimpanan bersama (shared storage); hostPath memiliki kekurangan

2. Deployment melalui Baris Perintah

2.1 Mendapatkan Storage Class Cluster

Jalankan perintah:

Bash
1
kubectl get sc

Output sebagai berikut:

Text Only
1
2
NAME         PROVISIONER                                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client   cluster.local/nfs-subdir-external-provisioner   Delete          Immediate           true                   77d

2.2 Memeriksa Versi Helm

Jalankan perintah:

Bash
1
helm version

2.3 Melakukan Instalasi

Bash
1
2
3
helm upgrade -i {Release Name} oci://pubrepo.dataflux-func.com/dataflux-func/func -n {Namespace} --create-namespace \
    --set storage.pvc.enabled=true,storage.pvc.storageClass="{Storage Class}" \
    --set ingress.enabled=true,ingress.hostName="{Host Name}"

{Release Name} adalah alias Helm, {Namespace} akan dibuat jika belum ada, {Storage Class} adalah nama Storage Class dari langkah pertama, {Host Name} adalah nama domain ingress, instalasi berhasil memungkinkan akses

Deployment Helm secara default menginstal MySQL dan Redis. Anda juga dapat menggunakan MySQL dan Redis eksternal. Metode deployment terperinci dapat ditemukan dalam dokumen README di dalam paket charts

2.4 Verifikasi Instalasi

Jalankan perintah:

Bash
1
helm ls -n {Namespace}

STATUS yang menunjukkan deployed menandakan keberhasilan

Anda juga dapat mengakses {Host Name} yang ditentukan melalui browser.

2.5 Inisialisasi Sistem

Akses domain ingress yang telah diatur melalui browser, Anda dapat menginisialisasi dengan konfigurasi default, menyesuaikan pengaturan Anda, atau menyimpan dan menginisialisasi database dengan pengaturan default.

setup-page.png

3. Upgrade Func

3.1 Mendapatkan konfigurasi values

Jalankan perintah:

Bash
1
2
helm get values {Release Name} -n {Namespace} -o yaml > values.yaml
cat values.yaml

3.2 Mendapatkan Versi Func Saat Ini

Jalankan perintah:

Bash
1
helm ls -n {Namespace}

3.3 Upgrade Func

Jalankan perintah:

Bash
1
2
3
helm upgrade {Release Name} oci://pubrepo.dataflux-func.com/dataflux-func/func \
    -n {Namespace} \
    -f values.yaml

3.4 Verifikasi Hasil Upgrade

Jalankan perintah:

Bash
1
helm ls -n {Namespace}

4. Masalah Lainnya

4.1 Browser Mengembalikan 502

Jika status Helm menunjukkan deployed, lakukan pemecahan masalah sesuai langkah-langkah berikut:

Memeriksa Apakah Ingress Berhasil Dibuat

Periksa informasi ingress:

Bash
1
kubectl get ing -n {Namespace}

Memeriksa Status Pod

Umumnya disebabkan oleh kegagalan pembuatan pvc, selesaikan berdasarkan situasi aktual

Periksa status pod:

Bash
1
kubectl get pods -n {Namespace}

Output sebagai berikut:

Text Only
1
2
3
4
5
6
7
8
9
NAME                                READY   STATUS    RESTARTS   AGE
func-mysql-575d576db7-zclcr         1/1     Running   0          13m
func-redis-fc8f8b95f-c27b2          1/1     Running   0          13m
func-server-7d44fc4dc6-d4gp8        1/1     Running   0          13m
func-worker-0-cb64778bc-q6vts       1/1     Running   2          13m
func-worker-1-6-597668777f-lnmbb    1/1     Running   2          13m
func-worker-7-8f976bfd9-fz7jf       1/1     Running   2          13m
func-worker-8-9-656fdb9bd9-rcbph    1/1     Running   1          13m
func-worker-beat-67c995968c-znq2r   1/1     Running   1          13m

Periksa status PVC:

Bash
1
kubectl get pvc -n {Namespace}

Output sebagai berikut:

Text Only
1
2
3
func-mysql       Pening    pvc-0a3db9c5-0b60-428b-9b19-4ff827d155fe   50G    RWX    nfs-client    15m
func-redis       Pening    pvc-cfceb581-c711-4e1d-9ae9-8063ca1ee1a9   10G    RWX    nfs-client    15m
func-resources   Bound     pvc-0cc6f1df-666c-4512-bea9-baa40461c81c   10G    RWX    nfs-client    15m

4.2 Error "cannot re-use a name that is still in use"

Jika Anda mengalami error "cannot re-use a name that is still in use" selama deployment, itu berarti sudah ada {Release Name} di namespace saat ini.

Anda dapat menghapus {Release Name} yang lama sebelum instalasi, atau mengubah {Release Name}.

4.3 Error "Connection to Connector Timed Out"

Jika Anda menemukan error "Connection to Connector Timed Out" saat membuat konektor, harap restart semua pod yang terkait dengan func.

Berikut adalah deployment yang terkait dengan func:

  • func-server
  • func-worker-0
  • func-worker-1-6
  • func-worker-7
  • func-worker-8-9
  • func-worker-beat

Func dari func-server adalah {Release Name}, yang berubah mengikuti {Release Name}

5.4 Ekstensi variabel lingkungan mendukung referensi Secret

Untuk variabel lingkungan, silakan lihat Deployment dan Pemeliharaan / File Konfigurasi, DFF_ + Item Konfigurasi. Misalnya, MYSQL_HOST berkorespondensi dengan variabel lingkungan DFF_MYSQL_HOST.

Membuat Secret Kubernetes

Bash
1
2
3
4
5
6
7
8
kubectl create ns {Namespace}
kubectl create secret generic func \
  --from-literal=DFF_MYSQL_HOST=<your-host> \
  --from-literal=DFF_MYSQL_PORT=<your-port> \
  --from-literal=DFF_MYSQL_USER=<your-user> \
  --from-literal=DFF_MYSQL_PASSWORD=<your-password> \
  --from-literal=DFF_MYSQL_DATABASE=<your-database> \
  -n {Namespace}

Memodifikasi values.yaml

Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
extraBackendEnvs:
# baca selengkapnya di halaman readme untuk referensi secret
- name: DFF_MYSQL_HOST
  valueFrom:
    secretKeyRef:
      name: func
      key: DFF_MYSQL_HOST
- name: DFF_MYSQL_PORT
  valueFrom:
    secretKeyRef:
      name: func
      key: DFF_MYSQL_PORT
- name: DFF_MYSQL_USER
  valueFrom:
    secretKeyRef:
      name: func
      key: DFF_MYSQL_USER
- name: DFF_MYSQL_PASSWORD
  valueFrom:
    secretKeyRef:
      name: func
      key: DFF_MYSQL_PASSWORD
- name: DFF_MYSQL_DATABASE
  valueFrom:
    secretKeyRef:
      name: func
      key: DFF_MYSQL_DATABASE

Upgrade atau Instal

Bash
1
2
3
helm upgrade {Release Name} func --repo https://pubrepo.dataflux-func.com/chartrepo/func \
    -n {Namespace} \
    -f values.yaml