Sobes.tech
Middle+

Ինչպե՞ս եք կառավարում զգայուն տվյալները GitLab CI-ում: Ինչպե՞ս է տեղի ունենում դրանց փոխանցումը։

sobes.tech AI

Պատասխան AI-ից

Կառավարում եմ զգայուն տվյալներով GitLab CI-ում հիմնականում օգտագործելով նախապես սահմանված շրջակա միջավայրի փոփոխականներ, CI/CD խմբերի փոփոխականներ և Kubernetes գաղտնիքներ:

Տրանսմիսիան տեղի է ունենում հետևյալ կերպ՝

  • Նախապես սահմանված փոփոխականներ: Ավտոմատ տրամադրվում են GitLab Runner-ով՝ պայլայնի կատարման ժամանակ: Դրանք ներառում են նախագծի ID, ճյուղի անուն, կառուցման կարգավիճակ և այլն: Որոշները կարող են լինել զգայուն (օրինակ՝ ծառայողական տոքեններ, եթե դրանք կարգավորել են): Դասական հասանելիությունը սահմանափակ է առաջադրանքի կոնտեքստով:
  • CI/CD փոփոխականներ: Դրանք սահմանվում են GitLab նախագծի կամ խմբի կարգավորումներում և կարող են նշվել որպես "Protected" (միայն հասանելի են պաշտպանված ճյուղերում և տեգերում) և "Masked" (թողարկման ժամանակ թաքնված են լոգերում): Դրանք կարող են պարունակել գաղտնաբառեր, API բանալիներ և այլն: Թույլատրվում է փոխանցել ծածկագրված տեսքով:
  • Կազմի CI/CD խմբեր: Դրանք թույլ են տալիս կենտրոնական կառավարում փոփոխականների՝ մի քանի նախագծերի համար խմբում: Հարմար է ընդհանուր գաղտնիքների համար: Աշխատում են նույն կերպ՝ փոխանցման և պաշտպանության տեսանկյունից:
  • Kubernetes գաղտնիքներ: Եթե նախագիծը տեղակայված է Kubernetes կլաստերում, զգայուն տվյալները կարող են պահվել K8s Secrets-ում: GitLab CI-ն կարող է կարգավորվել այդ գաղտնիքներին մուտք ունենալու համար՝ .gitlab-ci.yml ֆայլում նշելով:
variables:
  MY_SECRET_VAR: $MY_SECRET_VARIABLE_FROM_SETTINGS # Նախագծի կարգավորումներից փոփոխական

# Օրինակ՝ փոփոխականների օգտագործում սցրիպտում
script:
  - echo $MY_SECRET_VAR # Փոփոխականը փոխանցվում է կոնտեյների շրջակա միջավայրին
test_job:
  image: ubuntu:latest
  variables:
    MY_PROTECTED_VAR: "this is a protected secret"
  rules:
    - if: '$CI_COMMIT_BRANCH == "master"' # Օրինակ՝ կանոն օգտագործելու համար պաշտպանված փոփոխականի
  script:
    - echo "Running on branch: $CI_COMMIT_BRANCH"
    - echo "My protected variable: $MY_PROTECTED_VAR" # Փոփոխականը հասանելի է

Այս բոլոր փոփոխականների փոխանցումը կատարվում է ծածկագրված ձևով՝ GitLab Runner-ից կատարման միջավայր՝ կոնտեյներ կամ վիրտուալ մեքենա: Դրանք հասանելի են որպես շրջակա միջավայրի փոփոխականներ՝ ներսում կատարման միջավայրում: Կարևոր է նվազեցնել դրանց արտածումը լոգերում և օգտագործել մասկեր։ Անհրաժեշտ է նաև կանոնավոր կերպով կատարել մուտքի վերահսկում՝ այս փոփոխականների և գաղտնիքների նկատմամբ։