{"id":3503,"date":"2025-08-31T08:20:14","date_gmt":"2025-08-31T05:20:14","guid":{"rendered":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/"},"modified":"2025-08-31T08:20:14","modified_gmt":"2025-08-31T05:20:14","slug":"extending-kubernetes-a-guide-to-custom-api-resources","status":"publish","type":"post","link":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/","title":{"rendered":"Extending Kubernetes: A Guide to Custom API Resources"},"content":{"rendered":"<p><br \/>\n<\/p>\n<p>In today&#8217;s rapidly evolving cloud-native landscape, Kubernetes has emerged as the frontrunner in container orchestration. Its robust ecosystem and flexibility make it an ideal choice for managing containerized applications. However, as organizations scale and their requirements evolve, the need for customizing Kubernetes often arises. One of the most powerful ways to extend Kubernetes is by creating Custom Resource Definitions (CRDs). This article will guide you through the process of building custom API resources within a Kubernetes environment.<\/p>\n<p><\/p>\n<h2>Understanding Custom Resource Definitions (CRDs)<\/h2>\n<p><\/p>\n<p><strong>What are CRDs?<\/strong><\/p>\n<p>CRDs allow you to extend Kubernetes capabilities by defining custom resources. A custom resource is an extension of the Kubernetes API, enabling you to manage additional configuration objects as first-class citizens of the Kubernetes ecosystem. Once defined, these resources can be utilized alongside native Kubernetes objects like Pods, Services, and Deployments.<\/p>\n<p><\/p>\n<h3>Why Use CRDs?<\/h3>\n<p><\/p>\n<ol><\/p>\n<li><strong>Flexibility<\/strong>: CRDs allow you to model complex systems and workflows specific to your use case.<\/li>\n<p><\/p>\n<li><strong>Integration<\/strong>: They enable seamless integration of custom applications with Kubernetes via the native API.<\/li>\n<p><\/p>\n<li><strong>Consistency<\/strong>: Custom resources act like standard Kubernetes objects, so developers and operators can interact with them using familiar tools like <code>kubectl<\/code>.<\/li>\n<p>\n<\/ol>\n<p><\/p>\n<h2>Getting Started with Custom Resource Definitions<\/h2>\n<p><\/p>\n<h3>1. Defining Your Custom Resource<\/h3>\n<p><\/p>\n<p>The first step in creating a CRD is to define the custom resource&#8217;s schema. A CRD consists of several fields that describe the desired state of the custom resource.<\/p>\n<p><\/p>\n<p>Here&#8217;s an example of a custom resource definition for a fictional <code>Database<\/code> resource:<\/p>\n<p><\/p>\n<p>yaml<br \/>\napiVersion: apiextensions.k8s.io\/v1<br \/>\nkind: CustomResourceDefinition<br \/>\nmetadata:<br \/>\nname: databases.mycompany.com<br \/>\nspec:<br \/>\ngroup: mycompany.com<br \/>\nnames:<br \/>\nkind: Database<br \/>\nlistKind: DatabaseList<br \/>\nplural: databases<br \/>\nshortNames:<\/p>\n<p><\/p>\n<ul><\/p>\n<li>db<br \/>\nsingular: database<br \/>\nscope: Namespaced<br \/>\nversions:<\/li>\n<p><\/p>\n<li>name: v1<br \/>\nserved: true<br \/>\nstorage: true<br \/>\nschema:<br \/>\nopenAPIV3Schema:<br \/>\ntype: object<br \/>\nproperties:<br \/>\nspec:<br \/>\ntype: object<br \/>\nproperties:<br \/>\nengine:<br \/>\ntype: string<br \/>\nversion:<br \/>\ntype: string<br \/>\nsize:<br \/>\ntype: integer<\/li>\n<p>\n<\/ul>\n<p><\/p>\n<h3>2. Applying the CRD<\/h3>\n<p><\/p>\n<p>Once you have your CRD defined, you can apply it to your cluster with the following command:<\/p>\n<p><\/p>\n<p>bash<br \/>\nkubectl apply -f database-crd.yaml<\/p>\n<p><\/p>\n<h3>3. Creating Instances of the Custom Resource<\/h3>\n<p><\/p>\n<p>With your CRD in place, you can now create instances of the custom resource. An example of a <code>Database<\/code> resource instance might look like this:<\/p>\n<p><\/p>\n<p>yaml<br \/>\napiVersion: mycompany.com\/v1<br \/>\nkind: Database<br \/>\nmetadata:<br \/>\nname: my-database<br \/>\nspec:<br \/>\nengine: postgres<br \/>\nversion: &#8220;13&#8221;<br \/>\nsize: 20<\/p>\n<p><\/p>\n<p>Save this as <code>my-database.yaml<\/code> and apply it similarly:<\/p>\n<p><\/p>\n<p>bash<br \/>\nkubectl apply -f my-database.yaml<\/p>\n<p><\/p>\n<h3>4. Implementing a Controller<\/h3>\n<p><\/p>\n<p>While CRDs define the structure of your custom resources, to manage the lifecycle of these resources, you&#8217;ll need to implement a Kubernetes controller. The controller watches for changes to your resource and takes action to ensure the actual state matches the desired state defined in your resource.<\/p>\n<p><\/p>\n<p>You can utilize the <a href=\"https:\/\/kubebuilder.io\/\">Kubebuilder<\/a> scaffolding tool or the <a href=\"https:\/\/sdk.operatorframework.io\/\">Operator SDK<\/a> to simplify the process of building a controller. These tools help you by providing clear patterns and boilerplate code to manage your custom resources.<\/p>\n<p><\/p>\n<h3>5. Testing and Monitoring<\/h3>\n<p><\/p>\n<p>Once your controller is implemented, it&#8217;s essential to test and monitor it. Use <code>kubectl<\/code> to check the status of your custom resources and ensure that your controller behaves as expected. Integrate monitoring and logging solutions to get insights into the performance and health of both your custom resources and the controller.<\/p>\n<p><\/p>\n<h2>Best Practices for CRDs<\/h2>\n<p><\/p>\n<ol><\/p>\n<li><strong>Versioning<\/strong>: Maintain clear versioning of your CRDs to manage changes effectively as your application grows.<\/li>\n<p><\/p>\n<li><strong>Validation<\/strong>: Use OpenAPI validation schemas to enforce the integrity of your custom resource specifications.<\/li>\n<p><\/p>\n<li><strong>Documentation<\/strong>: Provide clear documentation for users on how to use your custom resources. Good documentation can enhance developer experience and adoption.<\/li>\n<p>\n<\/ol>\n<p><\/p>\n<h2>Conclusion<\/h2>\n<p><\/p>\n<p>Custom Resource Definitions empower developers and operators to extend Kubernetes by defining bespoke APIs tailored specifically to their applications&#8217; needs. By following the steps outlined in this article, you can create custom resources that integrate seamlessly into your Kubernetes environment. With CRDs, the possibilities are endless\u2014unlocking new levels of flexibility and control over your cloud-native applications. Embrace the power of Kubernetes and start crafting your custom resources today!<\/p>\n<p><\/p>\n<p>For more insights and articles on Kubernetes and cloud-native technologies, stay tuned to WafaTech Blogs!<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>In today&#8217;s rapidly evolving cloud-native landscape, Kubernetes has emerged as the frontrunner in container orchestration. Its robust ecosystem and flexibility make it an ideal choice for managing containerized applications. However, as organizations scale and their requirements evolve, the need for customizing Kubernetes often arises. One of the most powerful ways to extend Kubernetes is by [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":3504,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[213],"tags":[258,240,1507,233,217,657],"class_list":["post-3503","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kubernetes","tag-api","tag-custom","tag-extending","tag-guide","tag-kubernetes","tag-resources","et-has-post-format-content","et_post_format-et-post-format-standard"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Extending Kubernetes: A Guide to Custom API Resources - WafaTech Blogs<\/title>\n<meta name=\"description\" content=\"Extending Kubernetes: A Guide to Custom API Resources %\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extending Kubernetes: A Guide to Custom API Resources\" \/>\n<meta property=\"og:description\" content=\"Extending Kubernetes: A Guide to Custom API Resources %\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/\" \/>\n<meta property=\"og:site_name\" content=\"WafaTech Blogs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/WafaTech\/61560546351289\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-31T05:20:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wafatech.sa\/blog\/wp-content\/uploads\/2024\/06\/logo_big.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"2221\" \/>\n\t<meta property=\"og:image:height\" content=\"482\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"WafaTech SA\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@wafatech_sa\" \/>\n<meta name=\"twitter:site\" content=\"@wafatech_sa\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"WafaTech SA\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/\"},\"author\":{\"name\":\"WafaTech SA\",\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/#\\\/schema\\\/person\\\/1a5761fc0feb63ab59d295d7c2648f06\"},\"headline\":\"Extending Kubernetes: A Guide to Custom API Resources\",\"datePublished\":\"2025-08-31T05:20:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/\"},\"wordCount\":672,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Extending-Kubernetes-A-Guide-to-Custom-API-Resources.png\",\"keywords\":[\"API\",\"Custom\",\"Extending\",\"Guide\",\"Kubernetes\",\"Resources\"],\"articleSection\":[\"Kubernetes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/\",\"url\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/\",\"name\":\"Extending Kubernetes: A Guide to Custom API Resources - WafaTech Blogs\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Extending-Kubernetes-A-Guide-to-Custom-API-Resources.png\",\"datePublished\":\"2025-08-31T05:20:14+00:00\",\"description\":\"Extending Kubernetes: A Guide to Custom API Resources %\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/#primaryimage\",\"url\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Extending-Kubernetes-A-Guide-to-Custom-API-Resources.png\",\"contentUrl\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Extending-Kubernetes-A-Guide-to-Custom-API-Resources.png\",\"width\":1024,\"height\":1024,\"caption\":\"Kubernetes API Extensions\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/devops\\\/kubernetes\\\/extending-kubernetes-a-guide-to-custom-api-resources\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extending Kubernetes: A Guide to Custom API Resources\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/\",\"name\":\"WafaTech Blogs\",\"description\":\"Smart Technologies\",\"publisher\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/#organization\"},\"alternateName\":\"WafaTech\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/#organization\",\"name\":\"WafaTech Blogs\",\"alternateName\":\"WafaTech\",\"url\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/logo_big.webp\",\"contentUrl\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/logo_big.webp\",\"width\":2221,\"height\":482,\"caption\":\"WafaTech Blogs\"},\"image\":{\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/people\\\/WafaTech\\\/61560546351289\\\/\",\"https:\\\/\\\/x.com\\\/wafatech_sa\",\"https:\\\/\\\/www.youtube.com\\\/@wafatech-sa\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/wafatech\\\/\"],\"description\":\"WafaTech, a leading Saudi IT services provider, specializes in cloud solutions, connectivity, and ICT services. Offering secure cloud infrastructure, high-speed internet, and ICT solutions like hosting, backup, and disaster recovery, WafaTech operates a Tier 3 data center at KAUST with ISO certifications. Regulated by CST, the company is committed to innovation, security, and customer satisfaction, empowering businesses in the digital age.\",\"email\":\"sales@wafatech.sa\",\"legalName\":\"Al-Wafa Al-Dhakia For Information Technology LLC\",\"foundingDate\":\"2013-01-08\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/#\\\/schema\\\/person\\\/1a5761fc0feb63ab59d295d7c2648f06\",\"name\":\"WafaTech SA\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fde877f001a2e0497276edc0684d3ba2a416c0de8caeb8e785076a1b1b932b3a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fde877f001a2e0497276edc0684d3ba2a416c0de8caeb8e785076a1b1b932b3a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fde877f001a2e0497276edc0684d3ba2a416c0de8caeb8e785076a1b1b932b3a?s=96&d=mm&r=g\",\"caption\":\"WafaTech SA\"},\"url\":\"https:\\\/\\\/wafatech.sa\\\/blog\\\/author\\\/omer-yaseen\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Extending Kubernetes: A Guide to Custom API Resources - WafaTech Blogs","description":"Extending Kubernetes: A Guide to Custom API Resources %","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/","og_locale":"en_US","og_type":"article","og_title":"Extending Kubernetes: A Guide to Custom API Resources","og_description":"Extending Kubernetes: A Guide to Custom API Resources %","og_url":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/","og_site_name":"WafaTech Blogs","article_publisher":"https:\/\/www.facebook.com\/people\/WafaTech\/61560546351289\/","article_published_time":"2025-08-31T05:20:14+00:00","og_image":[{"width":2221,"height":482,"url":"https:\/\/wafatech.sa\/blog\/wp-content\/uploads\/2024\/06\/logo_big.webp","type":"image\/webp"}],"author":"WafaTech SA","twitter_card":"summary_large_image","twitter_creator":"@wafatech_sa","twitter_site":"@wafatech_sa","twitter_misc":{"Written by":"WafaTech SA","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/#article","isPartOf":{"@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/"},"author":{"name":"WafaTech SA","@id":"https:\/\/wafatech.sa\/blog\/#\/schema\/person\/1a5761fc0feb63ab59d295d7c2648f06"},"headline":"Extending Kubernetes: A Guide to Custom API Resources","datePublished":"2025-08-31T05:20:14+00:00","mainEntityOfPage":{"@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/"},"wordCount":672,"commentCount":0,"publisher":{"@id":"https:\/\/wafatech.sa\/blog\/#organization"},"image":{"@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/#primaryimage"},"thumbnailUrl":"https:\/\/wafatech.sa\/blog\/wp-content\/uploads\/2025\/08\/Extending-Kubernetes-A-Guide-to-Custom-API-Resources.png","keywords":["API","Custom","Extending","Guide","Kubernetes","Resources"],"articleSection":["Kubernetes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/","url":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/","name":"Extending Kubernetes: A Guide to Custom API Resources - WafaTech Blogs","isPartOf":{"@id":"https:\/\/wafatech.sa\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/#primaryimage"},"image":{"@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/#primaryimage"},"thumbnailUrl":"https:\/\/wafatech.sa\/blog\/wp-content\/uploads\/2025\/08\/Extending-Kubernetes-A-Guide-to-Custom-API-Resources.png","datePublished":"2025-08-31T05:20:14+00:00","description":"Extending Kubernetes: A Guide to Custom API Resources %","breadcrumb":{"@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/#primaryimage","url":"https:\/\/wafatech.sa\/blog\/wp-content\/uploads\/2025\/08\/Extending-Kubernetes-A-Guide-to-Custom-API-Resources.png","contentUrl":"https:\/\/wafatech.sa\/blog\/wp-content\/uploads\/2025\/08\/Extending-Kubernetes-A-Guide-to-Custom-API-Resources.png","width":1024,"height":1024,"caption":"Kubernetes API Extensions"},{"@type":"BreadcrumbList","@id":"https:\/\/wafatech.sa\/blog\/devops\/kubernetes\/extending-kubernetes-a-guide-to-custom-api-resources\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wafatech.sa\/blog\/"},{"@type":"ListItem","position":2,"name":"Extending Kubernetes: A Guide to Custom API Resources"}]},{"@type":"WebSite","@id":"https:\/\/wafatech.sa\/blog\/#website","url":"https:\/\/wafatech.sa\/blog\/","name":"WafaTech Blogs","description":"Smart Technologies","publisher":{"@id":"https:\/\/wafatech.sa\/blog\/#organization"},"alternateName":"WafaTech","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wafatech.sa\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/wafatech.sa\/blog\/#organization","name":"WafaTech Blogs","alternateName":"WafaTech","url":"https:\/\/wafatech.sa\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wafatech.sa\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/wafatech.sa\/blog\/wp-content\/uploads\/2024\/06\/logo_big.webp","contentUrl":"https:\/\/wafatech.sa\/blog\/wp-content\/uploads\/2024\/06\/logo_big.webp","width":2221,"height":482,"caption":"WafaTech Blogs"},"image":{"@id":"https:\/\/wafatech.sa\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/WafaTech\/61560546351289\/","https:\/\/x.com\/wafatech_sa","https:\/\/www.youtube.com\/@wafatech-sa","https:\/\/www.linkedin.com\/company\/wafatech\/"],"description":"WafaTech, a leading Saudi IT services provider, specializes in cloud solutions, connectivity, and ICT services. Offering secure cloud infrastructure, high-speed internet, and ICT solutions like hosting, backup, and disaster recovery, WafaTech operates a Tier 3 data center at KAUST with ISO certifications. Regulated by CST, the company is committed to innovation, security, and customer satisfaction, empowering businesses in the digital age.","email":"sales@wafatech.sa","legalName":"Al-Wafa Al-Dhakia For Information Technology LLC","foundingDate":"2013-01-08","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}},{"@type":"Person","@id":"https:\/\/wafatech.sa\/blog\/#\/schema\/person\/1a5761fc0feb63ab59d295d7c2648f06","name":"WafaTech SA","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/fde877f001a2e0497276edc0684d3ba2a416c0de8caeb8e785076a1b1b932b3a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fde877f001a2e0497276edc0684d3ba2a416c0de8caeb8e785076a1b1b932b3a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fde877f001a2e0497276edc0684d3ba2a416c0de8caeb8e785076a1b1b932b3a?s=96&d=mm&r=g","caption":"WafaTech SA"},"url":"https:\/\/wafatech.sa\/blog\/author\/omer-yaseen\/"}]}},"jetpack_featured_media_url":"https:\/\/wafatech.sa\/blog\/wp-content\/uploads\/2025\/08\/Extending-Kubernetes-A-Guide-to-Custom-API-Resources.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/posts\/3503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/comments?post=3503"}],"version-history":[{"count":0,"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/posts\/3503\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/media\/3504"}],"wp:attachment":[{"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/media?parent=3503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/categories?post=3503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wafatech.sa\/blog\/wp-json\/wp\/v2\/tags?post=3503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}