天天看點

k3s部署思源并用流水線同步筆記

背景:思源筆記中的一些文檔想要分享給其他人看,是以考慮部署思源筆記服務,将本地筆記推送到git倉庫通過流水線自動釋出。

實際操作過程中發現通常流水線都會将原檔案打包到鏡像中,然後部署新的鏡像,考慮到筆記的特性,不想将其打包到鏡像中。

感覺資料更新後觸發流水線重新整理Pod資料卷中的資料應該就行了,研究一翻發現流水線可以使用kubectl将原檔案拷貝到Pod中。

但又在實際操作中發現思源筆記啟動後将資料鎖定了,不能直接拷貝。

為了解決這個問題,想到一個曲線救國的方法

  1. 啟動兩個不同名的Pod,一個PodA運作思源筆記,另一個媒介PodB(git)與思源筆記共享資料卷
  2. 删除思源筆記的Pod,
  3. 使用kubectl通過PodB将資料檔案拷貝到資料卷上
  4. 重新部署思源筆記
ps: 思源筆記的Pod挂載子目錄

siyuan/showNote

,gitPod挂載資料卷的根目錄,這樣思源的資料出問題了還可以通過gitPod進去看資料的情況。

拷貝筆記檔案到

/siyuan/showNote/data

目錄中

流水線配置檔案大概如下:

stages:
  - 部署到cva

部署到cva:
  stage: 部署到cva
  image:
    name: bitnami/kubectl:1.23
    entrypoint: [""]
  script:
    - curl ~/rancher-cq-kubeconfig -o ~/.kube/config
    - kubectl get po -n siyuanspace | awk '{print $1}' | grep git > gitPod
    - cat gitPod
    - kubectl delete -f SiyuanKube.yml
    - kubectl cp ./data siyuanspace/$(cat gitPod):/siyuan/showNote/data
    - kubectl apply --insecure-skip-tls-verify -f SiyuanKube.yml
           

腳本說明:

curl ~/rancher-cq-kubeconfig -o ~/.kube/config

這是k3s上的一個權限認證配置,有了這個配置才能使用kubectl操作資源,我這裡的路徑是修改過的,需要根據自己的實際情況擷取到配置,并寫到

~/.kube/config

檔案中。

登入賬戶可以擷取到配置檔案:

k3s部署思源并用流水線同步筆記

- kubectl get po -n siyuanspace | awk '{print $1}' | grep git > gitPod

擷取到媒介Pod的資訊,往pod拷貝檔案的時候要指定這個資訊。

kubectl cp ./data siyuanspace/$(cat gitPod):/siyuansVm/siyuan/showNote/data

将檔案媒介Pod中

kubectl apply --insecure-skip-tls-verify -f SiyuanKube.yml

部署思源筆記的Pod,

SiyuanKube.yml

中配置了資源資訊,它與媒介Pod共享的資料卷:

volumeMounts:
            - mountPath: /home/siyuan/Documents/SiYuan
              name: vol1
              subPath: siyuan/showNote
           

繼續閱讀