Academy and Foundation unixmens | Your skills, Your future
2.29K subscribers
6.67K photos
1.38K videos
1.24K files
6.16K links
@unixmens_support
@yashar_esm
[email protected]
یک کانال علمی تکنولوژی
فلسفه متن باز-گنو/لینوکس-امنیت - اقتصاد
دیجیتال
Technology-driven -بیزینس های مبتنی بر تکنولوژی
Enterprise open source
ارایه دهنده راهکارهای ارتقای سازمانی - فردی - تیمی
Download Telegram
Academy and Foundation unixmens | Your skills, Your future
Photo
ابزار gitlab ابزاری فراتر از gitlab


ا GitLab امکانات بسیاری برای اجرای کانتینرها ارائه می‌دهد که که این نوع عملیات را در محیط‌های توسعه و استقرار برنامه‌ها بسیار ساده و کارآمد می‌کند. بعضی از امکانات GitLab برای اجرای کانتینر به شرح زیر است:

1. GitLab CI/CD (Continuous Integration/Continuous Deployment):
- یکی از امکانات اصلی GitLab، CI/CD است که به شما این امکان را می‌دهد تا کدهای خود را از ریپازیتوری GitLab به صورت خودکار تست کنید، ساخته و به محیط‌های تست و پیش‌تولید منتقل کنید.

2. GitLab Container Registry:
ا - GitLab دارای یک مخزن کانتینر اختصاصی به نام GitLab Container Registry است که به شما امکان می‌دهد تصاویر Docker را ذخیره کنید و به‌صورت پیش‌فرض با پروژه‌های GitLab خود استفاده کنید.

3. GitLab Kubernetes Integration:
- این امکان به شما امکان اجرای برنامه‌های کانتینری‌شده در Kubernetes را بر روی یک خوشه Kubernetes فراهم می‌آورد. شما می‌توانید به خوشه خود متصل شوید و از امکانات Kubernetes برای مدیریت و اجرای کانتینرهای خود استفاده کنید.

4. GitLab Auto DevOps:
- این ویژگی به شما امکان می‌دهد تا فرآیند استقرار خودکار برنامه‌ها را فعال کنید. Auto DevOps با استفاده از ابزارها و الگوریتم‌های خودکار GitLab می‌تواند فرآیند اجرای کانتینرهای برنامه‌های شما را بهینه‌سازی و ساده‌تر کند.

از طریق این امکانات، GitLab به شما ابزارها و فرآیندهای لازم را فراهم می‌کند تا برنامه‌های خود را به صورت کانتینری‌شده اجرا کرده و به‌صورت موثر و کارآمدی از فناوری‌های مدرن مانند Docker و Kubernetes برای استقرار و اجرای برنامه‌های خود استفاده کنید.



Repositories Management:
ا - GitLab به شما این امکان را می‌دهد که مخازن گیت (Git repositories) خود را مدیریت کرده و تغییرات گروهی، دریافت درخواست‌های ادغام (merge requests)، و مشاهده تاریخچه تغییرات با گرافهایی مرتبط را انجام دهید.

Issue Tracking:
- این ابزار به شما این امکان را می‌دهد که مشکلات و وظایف مختلف پروژه را بصورت مرتب و سازماندهی‌شده ردیابی کنید، درخواست‌های تغییرات پذیرفته شده و وضعیت پیگیری آنها را مشاهده کنید.

Code Review:
ا - GitLab ابزارهای کارآمدی را برای بررسی کد و ادغام تغییرات به کد منبع فراهم می‌کند که این به توسعه دهندگان کمک می‌کند تا کیفیت کدهایشان را بهبود دهند.

Wiki Pages:
- این قابلیت به کاربران این امکان را می‌دهد تا صفحات wiki برای ثبت مستندات و راهنماهای مربوط به پروژه خود ایجاد کنند و با دیگر اعضای تیم به اشتراک بگذارند.

integration with Third-Party Tools:
ا - GitLab از انواع ابزارهای توسعه و خودکارسازی مانند JIRA, Jenkins, Slack و غیره پشتیبانی می‌کند تا انتقال داده‌ها و ارتباط بین سیستم‌ها اسان‌تر و موثرتر باشد.

Pipeline Editor:
ا - GitLab توانایی ایجاد و مدیریت فرایندهای CI/CD را با استفاده از ویرایشگر Pipeline به کاربران خود ارائه می‌دهد. این ابزار امکان مشاهده و ویرایش فایل‌های YAML برای ساخت پایپلاین‌های CI/CD را فراهم می‌کند.

Code Quality Analysis:
ا - GitLab ابزارهایی برای ارزیابی کیفیت کد ارائه می‌دهد که به توسعه‌دهندگان کمک می‌کند تا خطاها، کد تکراری، یا مشکلات کیفیتی دیگر در کدهایشان را شناسایی و بهبود بخشند.

Security Scanning:
- توسعه‌دهندگان می‌توانند با استفاده از ابزارهای امنیتی GitLab به دنبال آسیب‌پذیری‌ها، نقاط ضعف امنیتی، و شناسایی مشکلات احتمالی امنیتی در کدهای خود بگردند.

Web IDE:
ا - GitLab دارای یک محیط توسعه یکپارچه وب نیز می‌باشد که به توسعه‌دهندگان امکان می‌دهد کدهای خود را بصورت آنلاین در مرورگر ویرایش کرده و تغییرات را اعمال کنند.

Project Management Tools:
ابزارهای مدیریت پروژه همچون گانت‌چارت، میل‌استون، و بوردهای چندگانه را برای برنامه‌ریزی و پیگیری پیشرفت پروژه‌ها ارائه می‌دهد.

Compliance and Audit Trail:
قابلیت‌هایی برای پیگیری و تایید تغییرات، ثبت فعالیت‌های کاربران، و ایجاد مسیرهای بررسی برای افراد مسئول را فراهم می‌کند.


#gitlab #container #devops #ci #cd

https://t.iss.one/unixmens
1🤣1
توسعه پروژه‌های بزرگ و پیچیده می‌تواند حتی توانایی برنامه‌نویسان ماهر را به چالش کشاند. یکی از روش‌هایی که در گذشته متداول بود، کار بر روی یک پروژه به صورت نوبتی بود. اما این روش نیز محدودیت‌های خود را داشت، زیرا تعداد محدودی از برنامه‌نویسان مجاز به انجام کار بر روی پروژه بودند. از آن زمان شرکت‌های توسعه نرم‌‌افزار تصمیم گرفتند که هر بحش از پروژه را به یک فرد خاص واگذار کنند. با این حال، به دلیل عدم همگامی بعد از اتمام پروژه، این روش معمولاً به موفقیت نهایی نمی‌رسید. آن‌گاه در سال 2005، پروژه Git به وجود آمد که gitlab از آن استفاده میکند.

این پروزه دارای امکانات زیادی است . در این بخش به بررسی gitlab Snippets میپردازیم :


ا GitLab Snippets یک ابزار قدرتمند در GitLab است که اجازه می‌دهد تا بخش‌های کد، فرمت‌های مختلف مانند متن، کد، لینک، تصویر و... را به صورت مجزا ذخیره و به اشتراک بگذارید. امکانات و دلایل استفاده از GitLab Snippets زیاد هست که ما به بررسی بخشی از آن می پردازیم :



ذخیره‌سازی اطلاعات :
- با استفاده از Snippets، می‌توانید بخش‌های مهم کد، پیوندها، متن، فایل‌ها و غیره را در یک محیط مرتب و قابل دسترس ذخیره کرده و به اشتراک بگذارید.



بهبود همکاری :
- با داشتن اطلاعات مهم در Snippets، همکاری و تبادل اطلاعات بین اعضای تیم یا اعضای پروژه بهبود می‌یابد و هماهنگی بیشتری بر روی کدها و منابع صورت می‌گیرد.

مدیریت آسان کدها :
ا - Snippets به شما امکان می‌دهد تا کدهای مورد نیاز و مهم را به آسانی مدیریت کنید و قابلیت تغییر و به‌روزرسانی را داشته باشید.

اشتراک‌گذاری جامع :
- با استفاده از Snippets، می‌توانید کدها و اطلاعات مهم را با اعضای تیم یا افراد خاص به راحتی به اشتراک بگذارید و همکاری را تسهیل کنید.



گسترش امکانات GitLab :
ا - Snippets به عنوان یکی از ویژگی‌های سامانه GitLab، امکانات دیگری مانند بررسی و تغییرات، رهگیری باگ‌ها و ایجاد Pipeline‌های CI/CD را با یکپارچه‌سازی با این ابزار فراهم می‌سازد.


#devops #gitlab #Snippets


https://t.iss.one/unixmens
🔻آسیب‌پذیری در GitLab دسترسی به توکن‌ها را ممکن می‌کند

🔹یک آسیب‌پذیری با شناسه CVE-2024-8114 و شدت 8.2 (بالا) در نرم‌افزار GitLab CE/EE کشف شده است که به مهاجم اجازه می‌دهد به توکن دسترسی شخصی (Personal Access Token - PAT) کاربر دسترسی پیدا کند.

🔹مهاجم با این کار می‌تواند سطح دسترسی خود را افزایش دهد و در نهایت به مجوز‌های بیشتری دست ‌یابد.

🔹نسخه‌های آسیب‌پذیر گیت‌لب شامل نسخه‌های 17.4.1 تا 17.4.5، 17.5.1 تا 17.5.3 و 17.6.1 تا 17.6.5 هستند که مشکل آنها با به‌روزرسانی به نسخه‌های 17.4.6، 17.5.4 و 17.6.6 برطرف می‌شود.

#security #gitlab
@unixmens
چگونه gitlab ominibus را نصب کنیم :


https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh



https://packages.gitlab.com/gitlab/gitlab-ee


در حقیقت GitLab یکی از محبوب‌ترین پلتفرم‌های DevOps Lifecycle Management است که تمام مراحل توسعه نرم‌افزار شامل مدیریت سورس‌کد، CI/CD، امنیت، مانیتورینگ و دپلویمنت را در یک بستر یکپارچه ارائه می‌دهد.
برای ساده‌سازی نصب و مدیریت این ابزار بزرگ، شرکت GitLab بسته‌ای به نام Omnibus GitLab عرضه کرده است. این بسته شامل تمام اجزای موردنیاز GitLab (مانند دیتابیس، وب‌سرور، Redis، Nginx و غیره) در یک پکیج واحد است و امکان راه‌اندازی سریع و مدیریت آسان را فراهم می‌سازد

ابزار GitLab Omnibus چیست؟

این ساختار Omnibus GitLab یک بسته‌ی all-in-one است که به جای نصب تک‌تک سرویس‌های موردنیاز، همه‌ی اجزا را در یک بسته‌ی مجتمع قرار داده است.
مزایای آن:

نصب سریع تنها با یک دستور (apt-get install gitlab-ee یا yum install gitlab-ee)

مدیریت ساده توسط ابزار gitlab-ctl

کاهش پیچیدگی در پیکربندی

قابلیت به‌روزرسانی یکپارچه


اجزای اصلی GitLab Omnibus

در واقع Omnibus GitLab شامل چندین سرویس حیاتی است که با هم برای اجرای کامل GitLab همکاری می‌کنند:

1. GitLab Rails (Core Application)

بخش اصلی اپلیکیشن که شامل GitLab Web، API و Backend است.



2. Nginx

به عنوان reverse proxy برای مدیریت درخواست‌های HTTP/HTTPS.



3. PostgreSQL

پایگاه‌داده اصلی برای ذخیره‌سازی کاربران، پروژه‌ها، issueها، pipelineها و داده‌های متنی.



4. Redis

برای cache و queue (Background Jobs و Sidekiq).



5. Sidekiq

برای اجرای پردازش‌های غیرهمزمان مانند pipeline jobs و ایمیل‌ها.



6. Gitaly

سرویس مدیریت repositoryها (جایگزین direct Git access).



7. Praefect (در معماری توزیع‌شده)

برای مدیریت replication در محیط‌های با چندین Gitaly.



8. GitLab Shell

مدیریت کلیدهای SSH و دسترسی Git.



9. Prometheus + Grafana

برای مانیتورینگ و مشاهده‌ی متریک‌


ویژگی‌های کلیدی معماری Omnibus

1. یکپارچگی → همه اجزا در یک پکیج و با حداقل وابستگی خارجی.


2. ماژولار → هر سرویس (Redis، PostgreSQL، Nginx و غیره) به صورت جداگانه قابل مدیریت است.


3. مقیاس‌پذیری → در نسخه‌های Advanced (مانند GitLab EE + Omnibus Cluster) می‌توان اجزا را جدا و روی سرورهای مختلف توزیع کرد.


4. امنیت → به صورت پیش‌فرض HTTPS، پیکربندی firewall و hardening‌های امنیتی فراهم است.


5. مانیتورینگ داخلی → با Prometheus و Grafana، متریک‌ها به‌صورت داخلی جمع‌آوری می‌شوند

گیتلب Omnibus ابزاری استراتژیک برای تیم‌های DevOps است که می‌خواهند بدون دغدغه نصب و پیکربندی اجزای مختلف، به سرعت یک محیط کامل GitLab را راه‌اندازی کنند.
معماری سطح بالای آن نشان می‌دهد که چگونه اجزای مختلف (وب‌سرور، دیتابیس، کش، مدیریت ریپازیتوری و مانیتورینگ) به صورت یکپارچه عمل می‌کنند تا چرخه‌ی توسعه نرم‌افزار را بهینه سازند


وقتی سازمان رشد می‌کند، معماری Omnibus تک‌سرور دیگر پاسخ‌گو نیست. در این حالت اجزای GitLab باید روی چندین سرور توزیع شوند تا:

ا. High Availability (HA) → جلوگیری از Single Point of Failure

ا. Horizontal Scaling → توانایی مدیریت حجم بالای کاربران و pipelineها

ا. Performance Optimization → پردازش همزمان حجم زیاد jobها و commitها

اجزای کلیدی در معماری Enterprise

1. Load Balancer

ورودی کلاینت‌ها (Web/SSH/API)

توزیع درخواست‌ها بین نودهای مختلف GitLab Web و GitLab Shell



2. Application Servers (GitLab Rails)

اجرای وب و API

می‌تواند در چندین نود با load balancing اجرا شود



3. Gitaly Cluster (Repository Storage)

هر repository در Gitaly نگهداری می‌شود

برای HA از Praefect استفاده می‌شود (مدیریت replication و failover)



4. Redis Cluster

برای session storage و job queue

پیکربندی Master/Replica یا Sentinel



5. PostgreSQL Cluster

پایگاه‌داده اصلی (HA با Patroni, repmgr یا Cloud Managed DB)

پشتیبانی از replication



6. Sidekiq Cluster

اجرای jobهای pipeline و background taskها

می‌تواند به صورت توزیع‌شده روی چند نود اجرا شود



7. Monitoring & Logging (Prometheus, Grafana, ELK)

جمع‌آوری متریک‌ها، alertها و لاگ‌ها

کارگشا هست .



#gitlab #git #devops


https://t.iss.one/unixmens
ا. GitLab Kubernetes Agent چیست؟

ا. GitLab Kubernetes Agent یک کامپوننت نرم‌افزاری است که داخل کلاستر Kubernetes نصب می‌شود و به صورت دوطرفه (bi-directional) با GitLab ارتباط برقرار می‌کند.
برخلاف روش قدیمی (integration با استفاده از kubeconfig یا API مستقیم)، این Agent یک کانال ارتباطی امن و پایدار بین GitLab و کلاستر ایجاد می‌کند

وظایف و قابلیت‌های اصلی

1. ارتباط امن و پایدار با کلاستر

بجای اینکه GitLab از بیرون به API کلاستر دسترسی داشته باشد (که خطرناک است)، Agent در داخل کلاستر اجرا شده و خودش ارتباط امن (TLS + gRPC) را با GitLab برقرار می‌کند.



2. GitOps (Declarative Deployments)

ا. Agent می‌تواند تغییرات تعریف‌شده در ریپازیتوری GitLab (مثل manifestها و Helm chartها) را به‌طور خودکار با وضعیت کلاستر هماهنگ کند.

یعنی وقتی شما کدی را commit کنید که شامل تغییر در Kubernetes manifests باشد، Agent این تغییرات را به کلاستر اعمال می‌کند.



3. CI/CD Integration

امکان اجرای jobهای CI/CD که نیاز به ارتباط با کلاستر دارند (مثل deploy، تست E2E، security scans).

دسترسی به کلاستر بدون نیاز به اشتراک‌گذاری kubeconfig در pipeline.



4. Cluster Observability

ا. Agent اطلاعات وضعیت کلاستر (nodes, pods, workloads) را به GitLab گزارش می‌دهد.

این کار امکان monitoring و visualization مستقیم از داخل GitLab UI را فراهم می‌کند.



5. Multi-cluster Management

با یک GitLab می‌توان چندین کلاستر را مدیریت کرد (Dev, Staging, Prod).

هر کلاستر ایجنت خودش را دارد و در GitLab به‌عنوان یک entity مجزا دیده می‌شود.



6. Policy Enforcement و Security

می‌توان policyهایی تعریف کرد (مثلاً فقط برخی namespaceها یا resourceها قابل دسترسی باشند).

این باعث می‌شود امنیت نسبت به روش قدیمی kubeconfig خیلی بالاتر باشد.

مشکلات روش kubeconfig قدیمی نسبت به GitLab Kubernetes Agent

امنیت :
نیاز به ذخیره kubeconfig در GitLab (ریسک نشت) ارتباط gRPC امن از داخل کلاستر
ا. GitOps محدود : پشتیبانی کامل (Pull-based deployment)
مقیاس‌پذیری سخت : (برای چندین کلاستر) اما در اجنت ساده تر است . (هر کلاستر Agent خودش را دارد)
ا Observability محدود : اما در اجنت یکپارچه با GitLab UI
مدیریت Policy دستی و پشتیبانی داخلی

#devops #gitlab #kubernetes #k8s #grpc #security #linux #cluster

https://t.iss.one/unixmens
👍2
DevOps has transformed how organizations deliver software by introducing automation, collaboration, and continuous integration/continuous delivery (CI/CD). Yet, databases have traditionally lagged behind in this transformation. Database changes are often managed manually, leading to slow deployments, risks of errors, and lack of visibility. "Database DevOps" aims to close this gap by applying DevOps principles directly to the database lifecycle.

One powerful approach to enabling Database DevOps is combining GitLab CI/CD with Liquibase, a database schema change management tool. This integration allows teams to automate, version, and safely deploy database changes alongside application code.

What is Database DevOps?

Database DevOps (or Database CI/CD) is the practice of managing database schema and data changes with the same rigor as application code. The core principles include:

Version control for database migrations.

Automation of deployment and rollback processes.

Continuous testing of schema and data integrity.

Drift detection to prevent environment inconsistencies.

Collaboration between developers, DBAs, and operations.

Auditing and traceability for compliance and governance.


Elite DevOps teams are 3.4x more likely to adopt database change management practices than low performers, underlining its importance

GitLab and Liquibase Integration

In the GitLab article "How to Bring DevOps to the Database with GitLab and Liquibase", the authors show how Liquibase can be seamlessly integrated into GitLab pipelines to enable full database CI/CD.

Key Components:

1. Liquibase – A tool for managing database migrations through versioned "changesets."


2. GitLab CI/CD – Automates pipelines for building, testing, and deploying database changes.


3. SQL Server (example DB) – The article demonstrates with SQL Server, but the approach applies to other databases too.


Example Pipeline Stages

The tutorial outlines a sample GitLab pipeline with these stages:

Build – Validate Liquibase properties and configurations.

Test – Run Liquibase updateSQL and checks run to ensure safe changes.

Deploy – Apply migrations (liquibase update) to environments (DEV → QA → PROD).

Compare – Use liquibase diff to detect drift between environments.

Post – Create schema snapshots with liquibase snapshot for auditing.

Benefits

1. Automation – Database changes run through the same CI/CD pipeline as code.

2. Validation & Checks – Prevents dangerous operations (DROP, TRUNCATE, etc


3. Rollback Support – Enables reverting last applied updates where possible

4. Drift Detection – Identifies schema inconsistencies between environments

5. Auditing – Snapshots and logs ensure traceability of changes

6. Collaboration – Developers and DBAs work together via version control and merge requests



https://about.gitlab.com/blog/how-to-bring-devops-to-the-database-with-gitlab-and-liquibase/


#database #devops #ci #cd #gitlab
https://t.iss.one/unixmens
unixmens