Skip to main content

معرفی اپراتور دارکوب

علاوه بر کنسول وب می‌توانید از طریق اپراتور دارکوب اپ‌های جدید بسازید یا اپ‌های موجود خود را مدیریت کنید. هر نوع اپ دارکوبی در اپراتور در قالب یک CRD (Custom Resource Definition) با پسوند DarkubeApp است. به عنوان مثال، اپ دارکوبی postgres با crd به نام PostgresqlDarkubeApp یا اپ دارکوبی از نوع docker image با crd به نام DockerDarkubeApp تعریف شده اند. می‌توانید همانند کار با Resource های مختلف کوبرنتیز مانند Deployment, StatefulSet با DarkubeApp های خود رفتار کنید.

انواع DarkubeApp Crd که در این لحظه میتوانید از آنها استفاده کنید:

برای کار با اپراتور نیاز است که با ساختار DarkubeApp مورد نظرتان آشنا باشید. برای این کار می‌توانید مستند crd مورد نظرتان را مطالعه کنید یا می‌توانید از دستورات kubectl explain {darkube-app-type}darkubeapp و kubectl explain {darkube-app-type}darkubeapp.spec استفاده کنید.

ساخت اپ جدید

برای این کار می‌توانید darkubeapp مورد نظر خود را در قالب فایل yaml نوشته و سپس kubectl apply کنید.

به نمونه yaml زیر توجه کنید :

apiVersion: darkube.hamravesh.com/v1alpha1
kind: DockerDarkubeApp
metadata:
name: docker-app-name
namespace: darkube-staging
spec:
replicas: 1
imageRepo: nginx
imageTag: "1.25.1"
ports:
- name: main
protocol: TCP
servicePort: 80
containerPort: 80
envs:
- name: key1
value: value1
isSecret: false
- name: key2
value: value2
isSecret: true
command: "/bin/sh -c"
args: "sleep 60000"
ramLimit: "100M"
cpuRequest: "100m"
enableSSL: true
isEnabled: true
enableHttpv2: false
redirectSSL: false
externalHosts: []
disk:
sizeInGi: 1
storageClassName: rawfile-btrfs
partitions:
- displayName: data
mountPath: "/var/lib/data"
- displayName: os
mountPath: "/var/lib/os"
logAggregationConfig:
stdoutLogSourceEnabled: true


مثال بالا یک نمونه اپ از نوع DockerDarkubeApp است. field های مختلفی در darkubeapp.spec وجود دارند که می‌توانید از آن ها استفاده کنید.

تغییر اپ موجود

می‌توانید اپ‌هایی که قبلا از طریق کنسول یا اپراتور ساخته‌اید را از دو راه kubectl apply یا kubectl edit {darkube-app-type}darkubeapp app-name تغییر دهید.

در صورت نیاز می‌توانید اپ خود را با استفاده از دستور زیر refresh کنید:

kubectl annotate {darkube-app-type}darkubeapp app-name force-sync=$(date +%s) --overwrite

مشاهده وضعیت اپ

با استفاده از دستور kubectl get {darkube-app-type}darkubeapp my-app می‌توانید وضعیت اپ خود را در ستون LAST_STATE مشاهده کنید.

برای توضیحات کامل‌تر می‌توانید از دستور kubectl describe {darkube-app-type}darkubeapp my-app استفاده کرده و قسمت Status را مشاهده کنید.

همچنین با وارد کردن دستور kubectl annotate {darkube-app-type}darkubeapp operator-test-test stats=$(date +%s) --overwrite,پس از چند لحظه میتوانید نام پاد(ها)، پیشنهاد های ما برای بهبود عملکرد اپ، و هشدار های مربوط به اپ را به ترتیب در فیلد های alerts، suggestions ، pods در قسمت Status مشاهده کنید.