<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های shiva.Ganji</title>
        <link>https://virgool.io/feed/@shivaganji</link>
        <description>کارشناس DevOps و علاقمند به یادگیری</description>
        <language>fa</language>
        <pubDate>2026-06-10 13:04:05</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/990057/avatar/ffdWc3.jpeg?height=120&amp;width=120</url>
            <title>shiva.Ganji</title>
            <link>https://virgool.io/@shivaganji</link>
        </image>

                    <item>
                <title>مقدمه و نصب Kubernetes، مرحله به مرحله</title>
                <link>https://virgool.io/@shivaganji/%D9%85%D9%82%D8%AF%D9%85%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1-kubernetes-ojsujbgkbyya</link>
                <description>اول از همه بگیم kubernetes چیه؟اگر اجرای یک ارکستر رو دیده باشید، متوجه شدید که یک نفر رو به روی نوازندگان قرار میگیره و با تکان دادن دست، نوازندگان رو رهبری می کنه.کوبرنتیز رو هم میتونیم تقریبا رهبر یک ارکستر در نظر بگیریم!کوبرنتیز، یک برنامه متن باز و محصول شرکت گوگل بوده و الان توسط CNCF (Cloud Native Computing Foundation)، ارائه می شود.کلاستری که توسط kubernetes اجرا میشه، میتونه 2 نوع، Node داشته باشه:Master (Control Plain)Slave (Worker)*** ولی به دلایل منع برده داری، کوبرنتیز در تلاش هست که این اسم ها رو تغییر بده و از اسم های داخل پرانتز استفاده کند!هر وقت دیدید که کسی کوبرنتیز رو اینجوری نوشته --&gt;  K8S، منظورش همون Kubernetes هست ولی 8 حرف بین k و s رو مخفف کرده و نوشته k8s !اجزای KubernetesetcdAPI serverSchedulerController ManagerCloud Controller ManagerKubeletKube-Proxyتعاریف Pod - Container - Node - Volume در کوبرنتیزهر node می تواند یک یا چند pod درون خود داشته باشد. برای تصور بهتر یک node را یک ماشین مجازی (virtual machin)، در نظر بگیرید. (البته یک node می تواند یک سرور فیزیکی (Bare-Metal) هم باشد.)کوچکترین واحد که توسط Kubernetes مدیریت می شود، pod است. کل pod تنها یک IP دارد و بین تمام اجزای یک pod این ip مشترک است.هر pod می تواند یک یا چند volume داشته باشد و این volume(s) بین تمام اجزای pod مشترک است.هر pod می تواند از یک یا چند container تشکیل شده باشد و یا فقط یک container داشته باشد.نصب Cluster در Kubernetes:الان که دارم این  پست رو می نویستم در سال 2021 هستیم:)فعلا به داستان منقضی شدن داکر فکر نکنید. ما داکر ورژن  19.3 و کوبرنتیز ورژن 1.18 رو نصب می کنیم که با هم تناسب دارند. روش نصب هم برای آموزش و آموختن هست.1- نیازمندی ها:     1-1 - نصب Docker به عنوان Runtime     1-2 - نصب kubeadm: جزئی که باعث راه اندازی خودکار cluster می شود. (حواسش به کلاستر شما هست)     1-3 - نصب kubectl: رابط بین شما و Cluster (جزئی که توسط اون میتوانید با cluster صحبت کنید!)     1-4 - نصب kubelet: جزئی است که روی تمام ماشین های شما وجود دارد و باعث راه اندازی Container و cluster می شود.1-1- نصب داکر:sudo apt update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fSsL https://download.docker.com/linux/ubuntu/gpg| sudo apt-key add - sudo add-apt-repository &quot;deb [arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs) stable&quot;sudo apt-get update sudo apt-cache policy docker-cesudo apt-get install -y docker-ce=5:19.03.15~3.0~ubuntu-focalمراحل بعدی رو یکجا توضیح می دهم (1-2 تا 1-4):برای چک نمودن network adapter کامند های زیر را بزنید:cat &lt;&lt;EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat &lt;&lt;EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sudo sysctl --systemبرای update و نصب نیازمندی های، کامندهای زیر را بزنید:sudo apt-get updatesudo apt-get install -y apt-transport-https ca-certificates curlبرای دریافت کلید از گوگل، کامند زیر را بزنید:sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpgبرای اضافه کردن منبع (repository) کامند زیر را بزنید:echo &amp;quotdeb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main&amp;quot | sudo tee /etc/apt/sources.list.d/kubernetes.list یکبار پکیج های دانلود شده را آپدیت کنید:sudo apt-get updateدانلود ورژن مورد kubeadm, kubectl, kubelet : (اگر ورژ دیگه ای مدنظرتون هست بجای 1.18.20-00 ، ورژن مد نظر خود را بزنید)sudo apt-get install -y kubelet=1.18.20-00 kubeadm=1.18.20-00 kubectl=1.18.20-00برای اینکه ورژن kubeadm, kubectl, kubelet تغییر نکند، کامند زیر را بزنید:sudo apt-mark hold kubelet kubeadm kubectl *احتمالا بخاطر تحریم های گوگل اندکی در دانلود موارد بالا اذیت شده اید. که پیشنهاد من اینکه که بصورت دستی  image های مورد نیاز برای کوبرنتیز رو دانلود کنید.این کامند برای نصب و اجرای یک کلاستر است:(التبه می توانید از سوئیچ های بیشتری استفاده کنید که با کامند kubeadm -h به شما نشان داده می شود)kubeadm init --apiserver-cert-extra-sans Your_Node_IPچند نکته کوتاه:حتما باید swap مموری خود را خاموش کنید:sudo swapoff -v /swap.imgوارد مسیر زیر شوید و خط مربوط به swap را کامنت کنید:sudo nano /etc/fstabحالا swap.img را پاک کنید:sudo rm /swap.imgتنظیمات را جابجا کنید:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configبرای برقرای شبکه بین container ها و podها، نیاز به podی برای مدیریت داریم.برای این کار من Calico رو انتخاب کردم.نصب Calico:برای دانلود فایل .yaml کامند زیر را بزنید:curl https://docs.projectcalico.org/manifests/calico.yaml -Oبرای نصب pod مربوط به calico توسط kubectl کامند زیر را بزنید:kubectl apply -f calico.yamlمنابعhttps://kubernetes.io/

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises</description>
                <category>shiva.Ganji</category>
                <author>shiva.Ganji</author>
                <pubDate>Wed, 11 Aug 2021 16:12:52 +0430</pubDate>
            </item>
                    <item>
                <title>Docker Registry (اضافه کردن صفحه ui )</title>
                <link>https://virgool.io/@shivaganji/%D8%AF%D8%A7%DA%A9%D8%B1-%D8%B1%D8%AC%DB%8C%D8%B3%D8%AA%D8%B1%DB%8C-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D8%B5%D9%81%D8%AD%D9%87-ui-hf4hdilkmpzc</link>
                <description>1- مقدمه1-1- چرا docker-registry نصب کنیم؟یک منبع (repository) برای ایمیج های داکری است.وقتی شما به صورت local اقدام به راه اندازی docker-registry کنید، مشکل تحریم ها و لاگین در docker Hub را نخواهید داشت. همچنین ترافیک کمتری برای دریافت image ها مصرف خواهید کرد و هربار برای دانلود از اینترنت استفاده نخواهید کرد.2- پیشنیازها نصب2-1- نصب dockerبرای نصب docker در ubuntu (توزیع Debian) دستورات زیر را بزنیدsudo apt update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fSsL https://download.docker.com/linux/ubuntu/gpg| sudo apt-key add -
sudo add-apt-repository &amp;quotdeb [arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs) stable&amp;quot
sudo apt-get update
sudo apt-cache policy docker-ce
sudo apt-get install -y docker-ce2-2- نصب gitبرای دریافت پروژه از پیش طراحی شده از گیت استفاده می کنیم.برای نصب git در ubuntu (توزیع Debian) دستور زیر را بزنیدsudo apt-get install -y git*حالا شما باید از بین شماره های 3 و 4، یکی از روش ها را برای نصب انتخاب کنید*3- مراحل نصب بصورت Containerهای مجزا3-1- نصب Authentication Container3-1-1- یک دایرکتوری برای ذخیره پسوردها بسازیدsudo mkdir auth3-1-2- دستور زیر را برای ساخت کانتینر بزنید (می توانید Username و Password مورد نظر را جایگزین کنید)docker run --entrypoint htpasswd httpd:2 -Bbn testuser testpassword &gt; auth/htpasswd3-2- نصب Registry Container3-2-1- برای ساخت کانتینر registry کامند زیر را بزنید (environment variable ها به دلیل احراز هویت است)docker run -d -p 5000:5000  --name registry --restart=always --network registry-net  --restart always -v &amp;quot$(pwd)&amp;quot/auth:/auth -e &amp;quotREGISTRY_AUTH=htpasswd&amp;quot -e &amp;quotREGISTRY_AUTH_HTPASSWD_REALM=Registry Realm&amp;quot -e &amp;quotREGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd&amp;quot -v /images/registry:/var/lib/registry registry:2*-p برای اتصال پورت هاست و کانتینر*-v برای mount یک دایرکتوری به کانتینر *- e برای شناساندن متغییرهای محیطی به کانتینر3-2-2- مراحل دریافت image از docker-hub و ارسال به Docker-registry خودتانsudo docker pull hello-world      ##pull image frome Docker-Hub
sudo docker tag hello-world localhost:5000/myhello     ##tag image
sudo docker push localhost:5000/myhello    ##push image to docker-registry3-2-3- برای ارتباط با داکر رجیستری (ارتباط سیستم ها با  Docker-registry)- برای اینکه سیستم های دیگر بتوانند از Docker-registry شما استفاده کنند، باید یک فایل .json در سمت سرور docker-registry، ایجاد شوددر مسیر زیر/etc/docker/daemon.json          ##for Docker-registry serverمحتویات زیر را درون فایل ایجاد شده کپی کنید{
  &amp;quotallow-nondistributable-artifacts&amp;quot: [&amp;quotlocalhost:5000&amp;quot]
 }- همچنین باید در سیستم هایی که میخواهند image دریافت کنند نیز یک فایل .json ایجاد شود- متناسب با سیستم عامل در یکی از مسیر های زیرC:\ProgramData\docker\config\daem.json            ##for windows/etc/docker/daemon.json             ##for linux- محتویات زیر را درون فایل ایجاد شده کپی کنید (IP سرور Docker-registry را جایگزین کنید){
&amp;quotallow-nondistributable-artifacts&amp;quot: [&amp;quot$ip-address:5000&amp;quot]
}3-3- نصب UI Containerبرای ساخت کانتینر و همچنین استفاده از username و password های ساخته، دستور زیر را وارد کنید docker run -d --name registry_ui  --network registry-net -p 8081:80 --restart always -e &quot;REGISTRY_TITLE=Private Docker Registry&quot; -e &quot;NGINX_PROXY_PASS_URL=http://registry-srv:5000&quot; -e &quot;DELETE_IMAGES=true&quot; -e &quot;SINGLE_REGISTRY=true&quot;  joxit/docker-registry-ui:latest3-4- میتوانید با مراجعه به آدرس زیر نتیجه کار خود را ببینید: http://[ip-address]:80814- مراحل نصب بصورت Docker-compose4-1- برای نصب از این روش ابتدا docker-compose را نصب کنیدsudo curl -L &amp;quothttps://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)&amp;quot -o /usr/local/bin/docker-compose4-2- برای ایجاد permision، دستور زیر را بزنیدsudo chmod +x /usr/local/bin/docker-compose4-3- برای  authentication Containerیک دایرکتوری بسازیدsudo mkdir authدستور زیر را وارد کنید (username و password مورد نظر خود را جایگزین کنید)docker run --entrypoint htpasswd httpd:2 -Bbn testuser testpassword &gt; auth/htpasswd4-4- یک فایل .yml ایجاد کنید و  برای ویرایش واردش شویدsudo touch docker-compose.ymlsudo nano docker-compose.yml4-5- محتویات زیر را داخل فایل ایجاد شده کپی کنیدversion: &#039;2&#039;
services:
  registry-srv:
    image: registry:2
    restart: always
    ports:
      - 5000:5000
    volumes:
      - /data/registry:/var/lib/registry
      - /data/auth:/auth
    - ./config.yml:/etc/docker/registry/config.yml:ro
    environment:
      - &amp;quotREGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd&amp;quot
      - &amp;quotREGISTRY_AUTH=htpasswd&amp;quot
      - &amp;quotREGISTRY_AUTH_HTPASSWD_REALM=Registry Realm&amp;quot
    networks:
      - registry-net
    container_name: registry-srv

 registry-ui:
    image: joxit/docker-registry-ui:latest
    restart: always
    ports:
      - 8081:80
    environment:
      - REGISTRY_TITLE=Private Docker Registry
      - NGINX_PROXY_PASS_URL=http://registry-srv:5000
      - DELETE_IMAGES=true
      - SINGLE_REGISTRY=true
    networks:
      - registry-net
    container_name: registry-ui
networks:
    registry-ui-net:
volumes:
    storage:
      driver: local4-5- اجرای Docker-compose sudo docker-compose up -d4-6- میتوانید با مراجعه به آدرس زیر نتیجه کار خود را ببینید: http://[ip-address]:80815- منابع:https://hub.docker.com/https://docs.docker.com/engine/install/ubuntu/https://github.com/Joxit/docker-registry-ui/blob/1c88ad57f8339f3b9ad27dc46aef6e4769f1de7c/examples/issue-88/docker-compose.yml</description>
                <category>shiva.Ganji</category>
                <author>shiva.Ganji</author>
                <pubDate>Sun, 18 Jul 2021 15:07:05 +0430</pubDate>
            </item>
                    <item>
                <title>نصب NetBox به وسیله  Docker-compose (مدیریت دیوایس ها، ماشین های مجازی و ...)</title>
                <link>https://virgool.io/@shivaganji/%D9%86%D8%B5%D8%A8-netbox-%D8%AF%D8%B1-%D8%AF%D8%A7%DA%A9%D8%B1-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%AF%DB%8C%D9%88%D8%A7%DB%8C%D8%B3-%D9%87%D8%A7-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D9%87%D8%A7%DB%8C-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-%D9%88-jpntjlq8ssyj</link>
                <description>معرفی Netboxنت باکس یک برنامه مدل سازی منابع زیرساختی (infrastructure resource modeling (IRM)) است. بطور خاص برای رفع نیاز های مهندسان شبکه و زیرساخت، توسعه داده شده است. یک برنامه open source است که تحت لایسنس apache2 در دسترس قرار گرفته است.ویژگی های Netboxمدیریت آی پی ها (IPAM (IP address management))مدیریت تجهیزات سخت افزاری (Devices)مدیریت منابع مجازی سازی (Virtualization)مدیریت اتصالات فیزیکی (Connections)مدیریت تجهیزات و جانمایی های رک های دیتاسنتر (Equipment racks)مدیریت شناسه های رمزنگاری شده حساب های کاربری (Secrets)نصب سرویس Netbox با Docker-compose1- نصب پیشنیازهای netbox:1-1- نصب gitبرای نصب git در ubuntu (توزیع Debian) دستور زیر را بزنیدsudo apt-get install -y git1-2- نصب docker- برای نصب docker در ubuntu (توزیع Debian) دستورات زیر را بزنیدsudo apt update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fSsL https://download.docker.com/linux/ubuntu/gpg| sudo apt-key add -
sudo add-apt-repository &amp;quotdeb [arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs) stable&amp;quot
sudo apt-get update
sudo apt-cache policy docker-ce
sudo apt-get install -y docker-ce1-3- نصب docker-compose- برای نصب دستور زیر را بزنیدsudo curl -L &quot;https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose- برای ایجاد permision، دستور زیر را بزنیدsudo chmod +x /usr/local/bin/docker-compose2- نصب سرویس netbox:2-1 - پروژه Netbox-Community را از گیت، Clone بگیرید:git clone -b release https://github.com/netbox-community/netbox-docker.git2-2- به دایرکتوری دانلود شده netbox-docker بروید:cd netbox-docker2-3- با این کامند مشخص کنید که netbox شما روی چه پورتی سرویس دهی کند. (می توانید بجای پورت هایلایت شده زیر، پورت مورد نظر را ثبت کنید):tee docker-compose.override.yml &lt;&lt;EOFversion: &#x27;3.4&#x27;services:  netbox:    ports:      - 8000:8080EOF2-4- تنظیمات پورت را در فایل زیر می توانید مشاهده کنید:sudo nano /netbox-docker/docker-compose.override.ymlمحتویات زیر را به شما نمایش می دهد:version: &#039;3.4&#039;
services:
  netbox:
    ports:
      - 8000:80802-5- با استفاده از دستور زیر imageهای مورد استفاده سرویس netbox را دانلود می کنیم:docker-compose pull2-6- کامند زیر را برای ساختن Containerها (up کردن Docker-compose) بزنید:docker-compose up -d2-7- بعد از مدت اندکی سرویس netbox شما در دسترس خواهد بود. شما می توانید آدرس netbox خود را در مرورگر وارد کنید:http://[IP-Addresses]:80002-8- بر روی دکمه login کلیک کنید و شروع به تنظیمات نمایید:2-9- نام کاربری و رمز عبور پیش فرض:Username: adminPassword: adminمنابع:https://netbox.readthedocs.io/en/stable/https://github.com/netbox-community/netbox-docker</description>
                <category>shiva.Ganji</category>
                <author>shiva.Ganji</author>
                <pubDate>Tue, 06 Jul 2021 12:28:24 +0430</pubDate>
            </item>
            </channel>
</rss>