VK Cloud logo

Kube Prometheus Stack аддонын жаңарту

Cloud Containers сервисінде жасайтын Kubernetes кластерлерінде Kube Prometheus Stack аддонының бірнеше нұсқасы қолжетімді. Бұл аддонды VK Cloud құралдарымен жаңарту қолжетімсіз, бірақ аддонды қолмен жаңартуға болады.

Kube Prometheus Stack аддонын 36.2.0 нұсқасынан 54.2.2 нұсқасына жаңарту үшін аддонның ағымдағы нұсқасын жойып, содан кейін жаңа нұсқасын орнату қажет. Сондықтан жаңарту процесі аддонның ағымдағы нұсқасының ортасын сақтап, кейін оны аддонның жаңа нұсқасымен қайта пайдалану үшін дайындауды қамтиды.

Дайындық қадамдары

  1. Егер Cloud Containers сервисінде жаңарту қажет Kube Prometheus Stack аддоны бар бұрыннан бар Kubernetes кластері болса, бұл қадамды өткізіп жіберіңіз.

    Әйтпесе, аддонды жаңарту орындалатын тестілік кластер жасаңыз:

    1. 1.26.5 нұсқасындағы Kubernetes кластерін жасаңыз.

      Кластерді жасау кезінде Сыртқы IP тағайындау опциясын таңдаңыз. Кластердің қалған параметрлерін өз қалауыңыз бойынша таңдаңыз.

    2. Кластерге 36.2.0 нұсқасындағы Kube Prometheus Stack аддонын орнатыңыз.

      Аддонды жылдам орнатуды орындаңыз (аддон баптауының кодын өңдеусіз).

  2. kubectl көмегімен кластерге қосыла алатыныңызға көз жеткізіңіз.

    Қосылу үшін VK Cloud жеке кабинетінен жүктелген кластер конфигурациясы файлын (kubeconfig) пайдаланыңыз.

  3. Аддонның қолжетімді және жұмыс істеп тұрғанын тексеріңіз. Ол үшін Grafana веб-интерфейсіне қол жеткізіңіз.

  4. Егер утилита әлі орнатылмаған болса, Helm 3.0.0 немесе одан жоғары нұсқасын орнатыңыз.

    Орнату үшін кластермен үйлесімді Helm нұсқасын таңдаңыз.

  5. Кластер үшін kubeconfig-ті көрсететін орта айнымалысын орнатыңыз. Бұл аддонды жаңарту кезінде kubectl және helm құралдарымен жұмыс істеуді жеңілдетеді.

    kubeconfig файлдарыңызға дейінгі жол төмендегі мысалдан өзгеше болуы мүмкін.

    export KUBECONFIG="/home/user/.kube/kubernetes-cluster-1234_kubeconfig.yaml"

1. Аддонды жаңарту үшін қажетті ақпаратты алыңыз

  1. Аддонды баптау кодының өңдеу режиміне өтіңіз.

    Аддонды баптау кодын өзгертпеңіз.

    Келесі мәліметтерді жазып алыңыз:

    1. Қолданба атауы (әдепкі бойынша kube-prometheus-stack).
    2. Аттар кеңістігінің атауы (әдепкі бойынша prometheus-monitoring).
    3. Аддонды баптаудың толық коды.
  2. Қолданба мен аттар кеңістігінің осы атауларын көрсететін орта айнымалыларын орнатыңыз. Бұл жаңарту кезінде кейінгі жұмысты жеңілдетеді.

    Айнымалыларыңыздың мәндері төмендегі мысалдан өзгеше болуы мүмкін.

    export CHART_NAME="kube-prometheus-stack"export NAMESPACE="prometheus-monitoring"
  3. Аддон пайдаланатын Persistent Volume Claims (PVCs) және тұрақты томдар (persistent volumes, PVs) туралы ақпарат алыңыз. Олар жиналатын метрикаларды, сондай-ақ аддонның жұмысына қажет басқа деректерді сақтау үшін қолданылады.

    kubectl -n $NAMESPACE get pvc

    Команда шығысында томдардың өлшемі (CAPACITY) көрсетілген PVCs (NAME) және оларға сәйкес PVs (VOLUMES) тізімі болады. Бұл ақпаратты жазып алыңыз, ол кейін қажет болады.

2. Аддон ортасын жаңартуға дайындаңыз

Егер сақтау класына қатысты өзгерістер аддонды баптау кодына енгізілмесе, әдепкі бойынша аддонға арналған томдар босату саясатын Retain қолдана отырып жасалады. Сондықтан аддонды жай ғана жойсаңыз, деректері бар тұрақты томдар жойылады. Бұл аддон жұмыс істеген уақыт ішінде жиналған метрикалардың, сондай-ақ аддонның жұмысына қажет басқа деректердің жоғалуына әкеледі.

Бұған қоса, аддон пайдаланатын келесі Kubernetes ресурстары да аддонның жаңа нұсқасын орнатуға кедергі келтіруі мүмкін:

  • Аддонның жұмысына қажет Custom Resource Definitions (CRDs) жиынтығы.
  • Аддонға тұрақты томдарды пайдалануға мүмкіндік беретін Persistent Volume Claims (PVCs) жиынтығы.

Аддонды жаңартпас бұрын, ол пайдаланатын тұрақты томдарды жойылудан қорғаңыз, сондай-ақ төменде келтірілген тәсілдердің бірімен аталған Kubernetes ресурстарын жойыңыз.

  1. Скрипт коды бар файл жасаңыз:

    Скрипт келесі әрекеттерді орындайды:

    1. Аддон орнатылған аттар кеңістігінде жасалған PVCs-пен байланысқан тұрақты томдарды анықтайды. Осы тұрақты томдар үшін скрипт Retain босату саясатын орнатады. Бұл ағымдағы аддон нұсқасы жойылғанда осы томдар жойылмауы үшін қажет.
    2. Аддонның ағымдағы нұсқасының Helm-чартын (chart) жояды. Бұл аддон пайдаланатын PVCs және CRDs жиынтықтарын сәтті жою үшін қажет.
    3. Аддон орнатылған аттар кеңістігінен PVCs жиынтығын жояды. Бұл PVs-ті PVCs-тен ажыратып, кейін осы PVs-ті аддонның жаңа нұсқасымен қайта пайдалану үшін қажет.
    4. Осы PVCs-пен байланысқан тұрақты томдардағы жойылған PVCs-ке сілтемелерді тазартады. Бұл тұрақты томдар байланысу үшін қолжетімді болады (PVs күйі: Available) және орнатылғаннан кейін оларды аддонның жаңа нұсқасы қайта пайдаланады.
    5. Аддон пайдаланған CRDs жиынтығын жояды.
    6. Егер скрипт осы аттар кеңістігі үшін іске қосылса, prometheus-monitoring аттар кеңістігін жояды.
  2. Скрипт коды бар файлды орындалатын етіңіз:

    chmod +x prepare-for-addon-update.sh
  3. Скрипт қандай параметрлермен орындалатынын анықтаңыз:

    bash prepare-for-addon-update.sh -h

    Қолданыстағы параметрлер мен олардың әдепкі мәндері көрсетілетін анықтама шығарылады:

    • -h: анықтаманы шығару.
    • -k: kubeconfig файлына дейінгі жол. Әдепкі мәні $KUBECONFIG орта айнымалысынан алынады, егер ол орнатылған болса.
    • -c: кластермен жұмыс істеу кезінде пайдаланылатын kubeconfig контекстінің атауы. Әдепкі мәні: бос жол.
    • -n: аддон орнатылған аттар кеңістігінің атауы. Әдепкі мәні: prometheus-monitoring.
    • -r: аддон орнатылған қолданбаның атауы. Аддонға арналған Helm-чарт атауымен сәйкес келеді. Әдепкі мәні: kube-prometheus-stack.
    • -d: kubectl үшін --dry-run аргументінің мәні. Әдепкі мәні: none. Скриптті сынақ режимінде іске қосу үшін server немесе client пайдаланыңыз: кластерге ешқандай өзгеріс енгізілмейді.
  4. Скриптті іске қосыңыз.

    Қажетті параметрлерді көрсете отырып, команданы орындаңыз. Егер параметрдің әдепкі мәні сізге сәйкес келсе, оны көрсетпеуге болады.

    bash prepare-for-addon-update.sh \    -k <путь к файлу kubeconfig> \    -c <название контекста kubeconfig> \    -n <название пространства имен> \    -r <название приложения> \    -d <значение аргумента --dry-run для kubectl>

    Скрипт жұмысы туралы егжей-тегжейлі хабарламалар шығарылады. Соның ішінде шығыста келесі хабарламалар болуы тиіс:

    Setting retain policy for the Prometheus PVs...Deleting Prometheus chart...Deleting Prometheus PVCs...Clearing Prometheus PV claim references...Clearing Prometheus CRDs...Deleting Prometheus namespace...Completed!

3. Аддонды жаңа нұсқаға жаңартыңыз

  1. VK Cloud интерфейстерін пайдаланып, аддонның ағымдағы нұсқасын жойыңыз.

  2. Кластерге 54.2.2 нұсқасындағы Kube Prometheus Stack аддонын орнатыңыз.

    Стандартты орнатуды келесі түрде орындаңыз:

    1. Аддонның алдыңғы нұсқасын орнату кезінде пайдаланылған қолданба мен аттар кеңістігінің сол атауларын беріңіз.

    2. Бұрын алынған аддонның алдыңғы нұсқасының баптау кодын зерттеңіз. Аддонның келесі компоненттері үшін сақтау орнын баптауға жауап беретін код фрагменттерін табыңыз:

      grafana:  ...  persistence:    enabled: true    storageClassName: "csi-ceph-hdd-gz1"    accessModes:    - ReadWriteOnce    size: 1Gi  ...
    3. Орнату жоспарланған аддонның жаңа нұсқасының баптау кодын зерттеңіз.

      Егер сақтау орнын баптауға жауап беретін код фрагменттері бұрын алынғандардан өзгеше болса, оларды түзетіңіз. Grafana, Alert Manager және Prometheus үшін сақтау орнының баптаулары аддонның алдыңғы нұсқасында пайдаланылған ұқсас баптаулармен дәл сәйкес келуі тиіс.

    4. (Опционалды түрде) Аддонды баптау кодына басқа өзгерістер енгізіңіз.

      Егер аддонның алдыңғы нұсқасын орнату кезінде grafana.adminPassword өрісінде Grafana-ға кіру құпиясөзін көрсеткен болсаңыз, оны қайта көрсету қажет емес. Аддонның жаңа нұсқасы сақтау орны ретінде бұрынғы PVs-ті пайдаланады, сондықтан құпиясөз өзгеріссіз қалады. Бұл өрісті бос қалдырсаңыз да, аддонның жаңа нұсқасын орнату Grafana-ға кіру құпиясөзін өзгертпейді: Grafana үшін құпиясөзі бар secret жасалады, бірақ ол пайдаланылмайды.

    5. Аддонды орнатыңыз.

      Орнату процесі ұзақ уақыт алуы мүмкін. Оның аяқталуын күтіңіз.

  3. Аддон пайдаланатын Persistent Volume Claims (PVCs) және тұрақты томдар (persistent volumes, PVs) туралы ақпарат алыңыз:

    kubectl -n $NAMESPACE get pvc

    Команда шығысы аддонның алдыңғы нұсқасы үшін бұрын орындалған команданың шығысына ұқсас болуы тиіс. Мысалы, alertmanager... PVC-і бұрын Alert Manager пайдаланған сол PV-пен байланысқан болуы тиіс. Prometheus пен Grafana үшін де дәл солай.

4. Жаңартудан кейін аддонның жұмысқа қабілеттілігін тексеріңіз

Grafana веб-интерфейсіне қол жеткізіңіз. Қосылу үшін аддонның алдыңғы нұсқасымен пайдаланылған сол құпиясөзді қолданыңыз. Егер Grafana құпиясөзін ұмытып қалсаңыз, оны қалпына келтіріңіз.

Grafana-ға сәтті қосылу аддонның сәтті жаңартылғанын көрсетеді.

Пайдаланылмайтын ресурстарды жойыңыз

Жұмыс істеп тұрған кластер тарификацияланады және есептеу ресурстарын тұтынады. Егер сіз кластерді тестілеу мақсатында жасап, ол енді қажет болмаса: