يوفر هذا العميل إمكانية الوصول إلى واجهات برمجة التطبيقات Kubernetes & OpenShift REST الكاملة عبر خط المشترك الرقمي (DSL) بطلاقة.
الوحدة النمطية | مافين سنترال | جافادوك |
---|---|---|
kubernetes-client | ||
openshift-client |
ملحقات | مافين سنترال | جافادوك |
---|---|---|
عميل محلي | ||
عميل تكتون | ||
Chaosmesh-client | ||
Volumesnapshot-client | ||
عميل بركان | ||
istio-client | ||
إدارة الكتلة المفتوحة للعميل |
أسهل طريقة لإنشاء عميل هي:
KubernetesClient client = new KubernetesClientBuilder (). build ();
يقوم DefaultOpenShiftClient
بتنفيذ كل من واجهة KubernetesClient
و OpenShiftClient
لذلك إذا كنت بحاجة إلى ملحقات OpenShift، مثل Build
s، وما إلى ذلك، فما عليك سوى القيام بما يلي:
OpenShiftClient osClient = new KubernetesClientBuilder (). build (). adapt ( OpenShiftClient . class );
سيستخدم هذا الإعدادات من مصادر مختلفة بالترتيب التالي للأولوية:
تُفضل خصائص النظام على متغيرات البيئة. يمكن استخدام خصائص النظام ومتغيرات البيئة التالية للتكوين:
خاصية / متغير البيئة | وصف | القيمة الافتراضية |
---|---|---|
kubernetes.disable.autoConfig / KUBERNETES_DISABLE_AUTOCONFIG | تعطيل التكوين التلقائي (لن يبحث KubernetesClient في ~/.kube/config أو ServiceAccount المثبت أو متغيرات البيئة أو خصائص النظام لمعلومات مجموعة Kubernetes) | false |
kubernetes.master / KUBERNETES_MASTER | عنوان URL الرئيسي لـ Kubernetes | https://kubernetes.default.svc |
kubernetes.api.version / KUBERNETES_API_VERSION | نسخة API | v1 |
openshift.url / OPENSHIFT_URL | عنوان URL الرئيسي لـ OpenShift | قيمة عنوان URL الرئيسي لـ Kubernetes |
kubernetes.oapi.version / KUBERNETES_OAPI_VERSION | إصدار OpenShift API | v1 |
kubernetes.trust.certificates / KUBERNETES_TRUST_CERTIFICATES | ثق بجميع الشهادات | false |
kubernetes.disable.hostname.verification / KUBERNETES_DISABLE_HOSTNAME_VERIFICATION | false | |
kubernetes.certs.ca.file / KUBERNETES_CERTS_CA_FILE | ||
kubernetes.certs.ca.data / KUBERNETES_CERTS_CA_DATA | ||
kubernetes.certs.client.file / KUBERNETES_CERTS_CLIENT_FILE | ||
kubernetes.certs.client.data / KUBERNETES_CERTS_CLIENT_DATA | ||
kubernetes.certs.client.key.file / KUBERNETES_CERTS_CLIENT_KEY_FILE | ||
kubernetes.certs.client.key.data / KUBERNETES_CERTS_CLIENT_KEY_DATA | ||
kubernetes.certs.client.key.algo / KUBERNETES_CERTS_CLIENT_KEY_ALGO | خوارزمية تشفير مفتاح العميل | RSA |
kubernetes.certs.client.key.passphrase / KUBERNETES_CERTS_CLIENT_KEY_PASSPHRASE | ||
kubernetes.auth.basic.username / KUBERNETES_AUTH_BASIC_USERNAME | ||
kubernetes.auth.basic.password / KUBERNETES_AUTH_BASIC_PASSWORD | ||
kubernetes.auth.serviceAccount.token / KUBERNETES_AUTH_SERVICEACCOUNT_TOKEN | اسم ملف الرمز المميز لحساب الخدمة | /var/run/secrets/kubernetes.io/serviceaccount/token |
kubernetes.auth.tryKubeConfig / KUBERNETES_AUTH_TRYKUBECONFIG | تكوين العميل باستخدام تكوين Kubernetes | true |
kubeconfig / KUBECONFIG | اسم ملف تكوين kubernetes المراد قراءته | ~/.kube/config |
kubernetes.auth.tryServiceAccount / KUBERNETES_AUTH_TRYSERVICEACCOUNT | تكوين العميل من حساب الخدمة | true |
kubernetes.tryNamespacePath / KUBERNETES_TRYNAMESPACEPATH | قم بتكوين مساحة اسم العميل من مسار مساحة اسم حساب خدمة Kubernetes | true |
kubernetes.auth.token / KUBERNETES_AUTH_TOKEN | ||
kubernetes.watch.reconnectInterval / KUBERNETES_WATCH_RECONNECTINTERVAL | مشاهدة الفاصل الزمني لإعادة الاتصال في مللي ثانية | 1000 |
kubernetes.watch.reconnectLimit / KUBERNETES_WATCH_RECONNECTLIMIT | عدد محاولات إعادة الاتصال (-1 لعدد لا نهائي) | -1 |
kubernetes.connection.timeout / KUBERNETES_CONNECTION_TIMEOUT | مهلة الاتصال بالمللي ثانية (0 لعدم وجود مهلة) | 10000 |
kubernetes.request.timeout / KUBERNETES_REQUEST_TIMEOUT | قراءة المهلة في مللي ثانية | 10000 |
kubernetes.upload.connection.timeout / KUBERNETES_UPLOAD_CONNECTION_TIMEOUT | انتهت مهلة اتصال تحميل الكبسولة بالمللي ثانية | 10000 |
kubernetes.upload.request.timeout / KUBERNETES_UPLOAD_REQUEST_TIMEOUT | انتهت مهلة طلب تحميل الكبسولة بالمللي ثانية | 120000 |
kubernetes.request.retry.backoffLimit / KUBERNETES_REQUEST_RETRY_BACKOFFLIMIT | عدد محاولات إعادة المحاولة (-1 لعدد لا نهائي) | 10 |
kubernetes.request.retry.backoffInterval / KUBERNETES_REQUEST_RETRY_BACKOFFINTERVAL | أعد محاولة الفاصل الزمني للتراجع الأولي بالمللي ثانية | 100 |
kubernetes.rolling.timeout / KUBERNETES_ROLLING_TIMEOUT | المتداول المهلة في مللي ثانية | 900000 |
kubernetes.logging.interval / KUBERNETES_LOGGING_INTERVAL | الفاصل الزمني للتسجيل بالمللي ثانية | 20000 |
kubernetes.scale.timeout / KUBERNETES_SCALE_TIMEOUT | مهلة القياس بالمللي ثانية | 600000 |
kubernetes.websocket.timeout / KUBERNETES_WEBSOCKET_TIMEOUT | مهلة Websocket بالمللي ثانية | 5000 |
kubernetes.websocket.ping.interval / KUBERNETES_WEBSOCKET_PING_INTERVAL | الفاصل الزمني لـ ping لـ Websocket بالمللي ثانية | 30000 |
kubernetes.max.concurrent.requests / KUBERNETES_MAX_CONCURRENT_REQUESTS | 64 | |
kubernetes.max.concurrent.requests.per.host / KUBERNETES_MAX_CONCURRENT_REQUESTS_PER_HOST | 5 | |
kubernetes.impersonate.username / KUBERNETES_IMPERSONATE_USERNAME | Impersonate-User | |
kubernetes.impersonate.group / KUBERNETES_IMPERSONATE_GROUP | Impersonate-Group | |
kubernetes.tls.versions / KUBERNETES_TLS_VERSIONS | إصدارات TLS مفصولة بـ , | TLSv1.2,TLSv1.3 |
kubernetes.truststore.file / KUBERNETES_TRUSTSTORE_FILE | ||
kubernetes.truststore.passphrase / KUBERNETES_TRUSTSTORE_PASSPHRASE | ||
kubernetes.keystore.file / KUBERNETES_KEYSTORE_FILE | ||
kubernetes.keystore.passphrase / KUBERNETES_KEYSTORE_PASSPHRASE | ||
kubernetes.backwardsCompatibilityInterceptor.disable / KUBERNETES_BACKWARDSCOMPATIBILITYINTERCEPTOR_DISABLE | تعطيل معترض BackwardsCompatibilityInterceptor | true |
no.proxy / NO_PROXY | لا ينبغي استخدام قائمة مفصولة بفواصل لوكيل ملحقات المجال | |
http.proxy / HTTP_PROXY | عنوان URL للوكيل لطلبات HTTP (راجع أسبقية الوكيل) | |
https.proxy / HTTPS_PROXY | عنوان URL للوكيل لطلبات HTTPS (راجع أسبقية الوكيل) |
وبدلاً من ذلك، يمكنك استخدام ConfigBuilder
لإنشاء كائن تكوين لعميل Kubernetes:
Config config = new ConfigBuilder (). withMasterUrl ( "https://mymaster.com" ). build ();
KubernetesClient client = new KubernetesClientBuilder (). withConfig ( config ). build ();
استخدام DSL هو نفسه بالنسبة لجميع الموارد.
قائمة الموارد:
NamespaceList myNs = client . namespaces (). list ();
ServiceList myServices = client . services (). list ();
ServiceList myNsServices = client . services (). inNamespace ( "default" ). list ();
احصل على مورد:
Namespace myns = client . namespaces (). withName ( "myns" ). get ();
Service myservice = client . services (). inNamespace ( "default" ). withName ( "myservice" ). get ();
يمسح:
Namespace myns = client . namespaces (). withName ( "myns" ). delete ();
Service myservice = client . services (). inNamespace ( "default" ). withName ( "myservice" ). delete ();
يستخدم تحرير الموارد أدوات الإنشاء المضمنة من نموذج Kubernetes:
Namespace myns = client . namespaces (). withName ( "myns" ). edit ( n -> new NamespaceBuilder ( n )
. editMetadata ()
. addToLabels ( "a" , "label" )
. endMetadata ()
. build ());
Service myservice = client . services (). inNamespace ( "default" ). withName ( "myservice" ). edit ( s -> new ServiceBuilder ( s )
. editMetadata ()
. addToLabels ( "another" , "label" )
. endMetadata ()
. build ());
بنفس الروح، يمكنك تضمين المنشئين لإنشاء:
Namespace myns = client . namespaces (). create ( new NamespaceBuilder ()
. withNewMetadata ()
. withName ( "myns" )
. addToLabels ( "a" , "label" )
. endMetadata ()
. build ());
Service myservice = client . services (). inNamespace ( "default" ). create ( new ServiceBuilder ()
. withNewMetadata ()
. withName ( "myservice" )
. addToLabels ( "another" , "label" )
. endMetadata ()
. build ());
يمكنك أيضًا تعيين apiVersion للمورد كما في حالة SecurityContextConstraints :
SecurityContextConstraints scc = new SecurityContextConstraintsBuilder ()
. withApiVersion ( "v1" )
. withNewMetadata (). withName ( "scc" ). endMetadata ()
. withAllowPrivilegedContainer ( true )
. withNewRunAsUser ()
. withType ( "RunAsAny" )
. endRunAsUser ()
. build ();
استخدم io.fabric8.kubernetes.api.model.Event
كـ T لـ Watcher:
client . events (). inAnyNamespace (). watch ( new Watcher <>() {
@ Override
public void eventReceived ( Action action , Event resource ) {
System . out . println ( "event " + action . name () + " " + resource . toString ());
}
@ Override
public void onClose ( WatcherException cause ) {
System . out . println ( "Watcher close due to " + cause );
}
});
تحدد واجهة برمجة تطبيقات kubernetes مجموعة من الامتدادات مثل daemonSets
و jobs
و ingresses
وما إلى ذلك والتي يمكن استخدامها جميعًا في extensions()
DSL:
على سبيل المثال لقائمة الوظائف ...
jobs = client.batch().jobs().list();
هناك حالات تريد فيها قراءة مورد من مصدر خارجي، بدلاً من تعريفه باستخدام خدمة DSL الخاصة بالعملاء. في هذه الحالات، يسمح لك العميل بتحميل المورد من:
بمجرد تحميل المورد، يمكنك التعامل معه كما لو كنت قد قمت بإنشائه بنفسك.
على سبيل المثال، لنقرأ حجرة من ملف yml ونعمل معها:
Pod refreshed = client.load('/path/to/a/pod.yml').fromServer().get();
client.load('/workspace/pod.yml').delete();
LogWatch handle = client.load('/workspace/pod.yml').watchLog(System.out);
وبنفس الروح، يمكنك استخدام كائن تم إنشاؤه خارجيًا (إما مرجعًا أو باستخدام تمثيل السلسلة الخاص به).
على سبيل المثال:
Pod pod = someThirdPartyCodeThatCreatesAPod();
client.resource(pod).delete();
يدعم العميل المحولات القابلة للتوصيل. أحد الأمثلة على المحول هو محول OpenShift الذي يسمح بتكييف مثيل KubernetesClient الموجود مع مثيل OpenShiftClient.
على سبيل المثال:
KubernetesClient client = new KubernetesClientBuilder (). build ();
OpenShiftClient oClient = client . adapt ( OpenShiftClient . class );
يدعم العميل أيضًا طريقة isAdaptable() التي تتحقق مما إذا كان التكيف ممكنًا وترجع صحيحًا إذا حدث ذلك.
KubernetesClient client = new KubernetesClientBuilder (). build ();
if ( client . isAdaptable ( OpenShiftClient . class )) {
OpenShiftClient oClient = client . adapt ( OpenShiftClient . class );
} else {
throw new Exception ( "Adapting to OpenShiftClient not support. Check if adapter is present, and that env provides /oapi root path." );
}
لاحظ أنه عند استخدام التكيف()، سيتشارك كل من المحول والهدف في نفس الموارد (عميل http الأساسي، ومجموعات الخيوط، وما إلى ذلك). هذا يعني أن Close() ليس مطلوبًا استخدامه في كل مثيل تم إنشاؤه عبر التكيف. سيؤدي استدعاء Close() على أي من المثيلات المُدارة Adapt() أو المثيل الأصلي إلى تنظيف جميع الموارد بشكل صحيح وبالتالي لن يكون أي من المثيلات قابلاً للاستخدام بعد الآن.
إلى جانب العميل، يوفر هذا المشروع أيضًا خادمًا وهميًا kubernetes يمكنك استخدامه لأغراض الاختبار. يعتمد الخادم الوهمي على https://github.com/square/okhttp/tree/master/mockwebserver
ولكن يتم تمكينه بواسطة DSL والميزات التي يوفرها https://github.com/fabric8io/mockwebserver
.
يحتوي Mock Web Server على وضعين للتشغيل:
إنه الوضع النموذجي الذي تقوم فيه أولاً بتعيين طلبات http المتوقعة والتي يجب أن تكون الاستجابات لكل طلب. يمكن العثور على مزيد من التفاصيل حول الاستخدام على: https://github.com/fabric8io/mockwebserver
تم استخدام هذا الوضع على نطاق واسع لاختبار العميل نفسه. تأكد من التحقق من اختبار kubernetes.
لإضافة خادم Kubernetes إلى الاختبار الخاص بك:
@ Rule
public KubernetesServer server = new KubernetesServer ();
يمكن أن يصبح تحديد كل طلب واستجابة أمرًا مرهقًا. نظرًا لأنه في معظم الحالات يتم استخدام خادم الويب الوهمي لإجراء عمليات بسيطة تعتمد على نظام أولي، فقد تمت إضافة وضع أولي. عند استخدام الوضع الخام، سيقوم خادم الويب الوهمي بتخزين موارد kubernetes وقراءتها وتحديثها وحذفها باستخدام خريطة في الذاكرة وسيظهر كخادم API حقيقي.
لإضافة خادم Kubernetes في الوضع الخام إلى الاختبار الخاص بك:
@ Rule
public KubernetesServer server = new KubernetesServer ( true , true );
ثم يمكنك استخدام الخادم مثل:
@ Test
public void testInCrudMode () {
KubernetesClient client = server . getClient ();
final CountDownLatch deleteLatch = new CountDownLatch ( 1 );
final CountDownLatch closeLatch = new CountDownLatch ( 1 );
//CREATE
client . pods (). inNamespace ( "ns1" ). create ( new PodBuilder (). withNewMetadata (). withName ( "pod1" ). endMetadata (). build ());
//READ
podList = client . pods (). inNamespace ( "ns1" ). list ();
assertNotNull ( podList );
assertEquals ( 1 , podList . getItems (). size ());
//WATCH
Watch watch = client . pods (). inNamespace ( "ns1" ). withName ( "pod1" ). watch ( new Watcher <>() {
@ Override
public void eventReceived ( Action action , Pod resource ) {
switch ( action ) {
case DELETED :
deleteLatch . countDown ();
break ;
default :
throw new AssertionFailedError ( action . toString (). concat ( " isn't recognised." ));
}
}
@ Override
public void onClose ( WatcherException cause ) {
closeLatch . countDown ();
}
});
//DELETE
client . pods (). inNamespace ( "ns1" ). withName ( "pod1" ). delete ();
//READ AGAIN
podList = client . pods (). inNamespace ( "ns1" ). list ();
assertNotNull ( podList );
assertEquals ( 0 , podList . getItems (). size ());
assertTrue ( deleteLatch . await ( 1 , TimeUnit . MINUTES ));
watch . close ();
assertTrue ( closeLatch . await ( 1 , TimeUnit . MINUTES ));
}
يمكنك استخدام آلية الاستهزاء KubernetesClient مع JUnit5. نظرًا لأنه لا يدعم @Rule
و @ClassRule
فهناك تعليق توضيحي مخصص @EnableKubernetesMockClient
. إذا كنت ترغب في إنشاء مثيل لـ KubernetesClient
ساخرًا لكل اختبار (JUnit4 @Rule
) فأنت بحاجة إلى الإعلان عن مثيل KubernetesClient
كما هو موضح أدناه.
@ EnableKubernetesMockClient
class ExampleTest {
KubernetesClient client ;
@ Test
public void testInStandardMode () {
...
}
}
في حالة رغبتك في تحديد مثيل ثابت للخادم المستهزئ به في كل الاختبارات (JUnit4 @ClassRule
) فإنك تحتاج إلى الإعلان عن مثيل KubernetesClient
كما هو موضح أدناه. يمكنك أيضًا تمكين CrudMode باستخدام حقل التعليق التوضيحي crud
.
@ EnableKubernetesMockClient ( crud = true )
class ExampleTest {
static KubernetesClient client ;
@ Test
public void testInCrudMode () {
// ...
}
}
من أجل الاختبار مقابل واجهة برمجة تطبيقات Kubernetes الحقيقية، يوفر المشروع نهجًا خفيف الوزن، وبالتالي بدء تشغيل خادم Kubernetes API والثنائيات وما إلى ذلك.
@ EnableKubeAPIServer
class KubeAPITestSample {
static KubernetesClient client ;
@ Test
void testWithClient () {
// test using the client against real K8S API Server
}
}
للحصول على تفاصيل، راجع المستندات الخاصة باختبار Kube API.
بدءًا من الإصدار 5.5، يجب أن يكون عميل Kubernetes متوافقًا مع أي إصدار مدعوم من مجموعة Kubernetes. نحن نوفر طرق DSL (على سبيل المثال client.pods()
و client.namespaces()
وما إلى ذلك) لموارد Kubernetes الأكثر استخدامًا. إذا كان المورد الذي تبحث عنه غير متوفر من خلال DSL، فيمكنك دائمًا استخدام الأسلوب client.resource()
العام للتفاعل معه. يمكنك أيضًا فتح إصدار جديد لطلب إضافة مورد جديد إلى DSL.
نحن نقدم أنواع نماذج Java Kubernetes (على سبيل المثال Pod
) وأدوات إنشاءها المقابلة (على سبيل المثال PodBuilder
) لكل مورد Vanilla Kubernetes (وبعض الامتدادات). إذا لم تجد موردًا محددًا، وتعتقد أنه يجب أن يكون جزءًا من عميل Kubernetes، فيرجى فتح إصدار جديد.
بدءًا من الإصدار 5.5، يجب أن يكون عميل OpenShift متوافقًا مع أي إصدار لمجموعة OpenShift مدعوم حاليًا بواسطة Red Hat. يعد Fabric8 Kubernetes Client أحد عملاء Kubernetes Java القلائل الذين يقدمون الدعم الكامل لأي إصدار مدعوم من مجموعة OpenShift. إذا وجدت أي عدم توافق أو شيء مفقود، يرجى فتح قضية جديدة.
ستكون جميع كائنات الموارد المستخدمة هنا متوافقة مع OpenShift 3.9.0 وKubernetes 1.9.0. ستوفر جميع كائنات الموارد جميع الحقول وفقًا لـ OpenShift 3.9.0 وKubernetes 1.9.0
batch
extensions
(تم إهمال الامتدادات)apps
extensions
(تم إهمال الإضافات)apps
extensions
(تم إهمال الإضافات)apps
extensions
(تم إهمال الإضافات)network
extensions
(تم إهمال الإضافات)client base DSL
إلى DSL storage
client base DSL
extensions
إلى extensions
فقطالامتدادات:
الأطر / المكتبات / الأدوات:
ملحقات CI:
أدوات البناء:
المنصات:
منصات الملكية:
مع نمو مجتمعنا، نود أن نتتبع مستخدمينا. يرجى إرسال العلاقات العامة مع اسم مؤسستك/مجتمعك.
توجد روابط Github Actions وJenkins للاختبارات التي يتم إجراؤها لكل طلب سحب جديد. يمكنك عرض كافة البنيات الأخيرة أيضا.
للحصول على التحديثات حول الإصدارات، يمكنك الانضمام إلى https://groups.google.com/forum/embed/?place=forum/fabric8-devclients
يوفر هذا الجدول kubectl
لتعيينات Kubernetes Java Client. معظم التعيينات واضحة تمامًا وهي عبارة عن عمليات خطية واحدة. ومع ذلك، قد يتطلب البعض تعليمات برمجية أكثر قليلاً لتحقيق نفس النتيجة:
kubectl | عميل Fabric8 Kubernetes |
---|---|
kubectl config view | ConfigViewEquivalent.java |
kubectl config get-contexts | ConfigGetContextsEquivalent.java |
kubectl config current-context | ConfigGetCurrentContextEquivalent.java |
kubectl config use-context minikube | ConfigUseContext.java |
kubectl config view -o jsonpath='{.users[*].name}' | ConfigGetCurrentContextEquivalent.java |
kubectl get pods --all-namespaces | PodListGlobalEquivalent.java |
kubectl get pods | PodListEquivalent.java |
kubectl get pods -w | PodWatchEquivalent.java |
kubectl get pods --sort-by='.metadata.creationTimestamp' | PodListGlobalEquivalent.java |
kubectl run | PodRunEquivalent.java |
kubectl create -f test-pod.yaml | PodCreateYamlEquivalent.java |
kubectl exec my-pod -- ls / | PodExecEquivalent.java |
kubectl attach my-pod | PodAttachEquivalent.java |
kubectl delete pod my-pod | PodDelete.java |
kubectl delete -f test-pod.yaml | PodDeleteViaYaml.java |
kubectl cp /foo_dir my-pod:/bar_dir | UploadDirectoryToPod.java |
kubectl cp my-pod:/tmp/foo /tmp/bar | تنزيلFileFromPod.java |
kubectl cp my-pod:/tmp/foo -c c1 /tmp/bar | تنزيل الملف من MultiContainerPod.java |
kubectl cp /foo_dir my-pod:/tmp/bar_dir | UploadFileToPod.java |
kubectl logs pod/my-pod | PodLogsEquivalent.java |
kubectl logs pod/my-pod -f | PodLogsFollowEquivalent.java |
kubectl logs pod/my-pod -c c1 | PodLogsMultiContainerEquivalent.java |
kubectl port-forward my-pod 8080:80 | PortForwardEquivalent.java |
kubectl get pods --selector=version=v1 -o jsonpath='{.items[*].metadata.name}' | PodListFilterByLabel.java |
kubectl get pods --field-selector=status.phase=Running | PodListFilterFieldSelector.java |
kubectl get pods --show-labels | PodShowLabels.java |
kubectl label pods my-pod new-label=awesome | PodAddLabel.java |
kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq | PodAddAnnotation.java |
kubectl get configmap cm1 -o jsonpath='{.data.database}' | ConfigMapJsonPathEquivalent.java |
kubectl create -f test-svc.yaml | LoadAndCreateService.java |
kubectl create -f test-deploy.yaml | LoadAndCreateDeployment.java |
kubectl set image deploy/d1 nginx=nginx:v2 | RolloutSetImageEquivalent.java |
kubectl scale --replicas=4 deploy/nginx-deployment | ScaleEquivalent.java |
kubectl scale statefulset --selector=app=my-database --replicas=4 | ScaleWithLabelsEquivalent.java |
kubectl rollout restart deploy/d1 | RolloutRestartEquivalent.java |
kubectl rollout pause deploy/d1 | RolloutPauseEquivalent.java |
kubectl rollout resume deploy/d1 | RolloutResumeEquivalent.java |
kubectl rollout undo deploy/d1 | RolloutUndoEquivalent.java |
kubectl create -f test-crd.yaml | LoadAndCreateCustomResourceDefinition.java |
kubectl create -f customresource.yaml | CustomResourceCreateDemo.java |
kubectl create -f customresource.yaml | CustomResourceCreateDemoTypeless.java |
kubectl get ns | NamespaceListEquivalent.java |
kubectl create namespace test | NamespaceCreateEquivalent.java |
kubectl apply -f test-resource-list.yml | CreateOrReplaceResourceList.java |
kubectl get events | EventsGetEquivalent.java |
kubectl top nodes | TopEquivalent.java |
kubectl auth can-i create deployment.apps | CanIEquivalent.java |
kubectl create -f test-csr-v1.yml | طلب التوقيع على الشهادةCreateYamlEquivalent.java |
kubectl certificate approve my-cert | طلب التوقيع على الشهادةالموافقة على YamlEquivalent.java |
kubectl certificate deny my-cert | طلب التوقيع على الشهادةرفض YamlEquivalent.java |
kubectl create -f quota.yaml --namespace=default | CreateResourceQuotaInNamespaceYamlEquivalent.java |