{"id":10439,"date":"2022-05-17T17:45:04","date_gmt":"2022-05-17T12:15:04","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=10439"},"modified":"2025-11-21T16:01:05","modified_gmt":"2025-11-21T10:31:05","slug":"learn-the-importance-of-namespace-quota-limits","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2022\/05\/17\/learn-the-importance-of-namespace-quota-limits\/","title":{"rendered":"Learn the Importance of Namespace, Quota &amp; Limits"},"content":{"rendered":"\r\n<p class=\"has-text-align-justify\">Let&#8217;s start with a scenario, whenever any application builds, we generally do have 3 environments on the basis of resources &#8211; dev for developers resources, test for testers resources, and prod for production resources. Likewise, we used to have a separate IT-Operational Team having strategies to maintain their environment resources. It was very time-consuming and many human resources were required.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">We are in the microservices era where we follow the DevOps Methodology. The DevOps Team brings all the environment and strategies to maintain resources in one go. Resources are the ones who decide the behavior of your applications. We can apply the criteria to resources, so how can our application behave? To do this we can give the name to our resources, we can give the resources quota to the application, and can give resource ranges to the application.<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"478\" height=\"404\" class=\"wp-image-10729\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/05\/team-1.gif\" alt=\"\" \/><\/figure><\/div>\r\n\r\n\r\n<p><!--more--><\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">Let&#8217;s get started!<\/h4>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Which environment resources are being used for which perspective, to bring that we need a kind of grouping dictionary or grouping object that should combine all the resources and identify them respectively. Then <strong>Namespace<\/strong> comes into the picture. In simple terms of Kubernetes, namespaces are the logical grouping of resources in Kubernetes Clusters.<\/p>\r\n\r\n\r\n\r\n<h5 class=\"wp-block-heading\">Pre-requisites:<\/h5>\r\n\r\n\r\n\r\n<ul>\r\n<li>kubectl install (<a href=\"https:\/\/kubernetes.io\/docs\/tasks\/tools\/\" target=\"_blank\" rel=\"noopener\">https:\/\/kubernetes.io\/releases\/download\/<\/a>)<\/li>\r\n<li>K8s cluster(Master-Node setup)<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p>Let&#8217;s create some objects in our K8s cluster :<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create ns twitter\r\n\r\n# To check namespace in cluster\r\n$ kubectl get ns<\/code><\/pre>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>#Yaml file to create webserver pod\r\n#We can write namespace in manifests .yaml file as well\r\n$ vi webserver-demo.yaml\r\n\r\napiVersion: v1\r\nkind: Pod\r\nmetadata:\r\n  name: webserver\r\n  namespace: twitter  #we can define namespace here.\r\n  labels:\r\n    app: nginx\r\n    tier: front\r\n    version: v1\r\n    env: dev\r\nspec:\r\n  containers:\r\n  - name: nginx\r\n    image: nginx\r\n    ports:\r\n    - containerPort: 80<\/code><\/pre>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>#Syntax to create resource in namespace:\r\n \r\n$ kubectl apply -f name_of_yaml_file -n namespace\r\n\r\n$ kubectl apply -f webserver-demo.yaml -n twitter\r\n\r\n#This is the way to list out resources within namespaces.\r\n$ kubectl get pods -n twitter<\/code><\/pre>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"94\" class=\"wp-image-10670\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/05\/output-webeserver-namespace.jpg?w=710\" alt=\"\" \/>\r\n<figcaption>Output of resource(pod) in namespace<\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Now, kubectl creates the respective resources in your defined namespace. You might have a question like &#8211; after creating resources in a namespace within a cluster, does it reside on the same node? The answer is No! wherever the scheduler sends the pod on a node. Namespace can pick those resources from any node. Will see how this namespace is used for real-time problems to easily get solved.<\/p>\r\n\r\n\r\n\r\n<h5 class=\"wp-block-heading\">Resource Quota:<\/h5>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">An application is running inside a pod with all its dependencies. We don\u2019t know how much an application needs resources such as CPU, memory, or storage are enough to run an application successively. In this situation, an application might need fewer or more resource types that won\u2019t be predictable.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Also, just like having a java memory leak issue for Java applications, a situation when the specific garbage collector does not identify the ample number of unused objects and they reside in the memory space indefinitely reduces the amount of memory allocated to the application.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">\u00a0<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10726\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/05\/hardware.gif?w=480\" alt=\"\" width=\"247\" height=\"186\" \/><\/figure><\/div>\r\n\r\n\r\n<p class=\"has-text-align-justify\">In order to achieve this kind of predictions and issues, k8s provides us to use <strong><em>ResourceQuota <\/em><\/strong>object, in that we can define available count or restrict the resource types-<\/p>\r\n\r\n\r\n\r\n<ul>\r\n<li><strong>Compute Resource Quota<\/strong>: Limits the compute resources like CPU and memory that can be requested in a given namespace.<\/li>\r\n<li><strong>Storage Resource Quota<\/strong>: Limits the storage resource like storage and persistent-volume-claims that can be requested in a given namespace.<\/li>\r\n<li><strong>Object Count Quota<\/strong>: Limits the K8s objects like services, pods, secrets, configmap, etc, that can be requested in a given namespace.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\r\n<p>What will happen to pod when a running container might need more resource types like cpu and exceed the mentioned limits?<\/p>\r\n<p>Pod will get terminated in that case.<\/p>\r\n<\/blockquote>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"711\" height=\"279\" class=\"wp-image-10655\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/05\/resource-type-cpu.jpg?w=711\" alt=\"\" \/>\r\n<figcaption>Understanding of limits and requests<\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>Let&#8217;s see how it works in real time.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>#Create ResourceQuota Object in twitter namespace\r\n\r\n$ vi resource-quota-demo.yaml\r\n\r\n#Yaml file to create ResourceQuota\r\napiVersion: v1\r\nkind: ResourceQuota\r\nmetadata:\r\n  name: cluster-1-resource-quota\r\n  namespace: twitter\r\nspec:\r\n  hard:\r\n    requests.cpu: \"250m\"  #containers can only request for 250m CPU.\r\n    limits.cpu: \"300m\"    #running containers can go up-to 300m CPU.  \r\n    pods: \"3\"          #only 3 pods can be created in defined namespace  \r\n    secrets: \"5\"     #only 5 secrets can be created in defined namespace\r\n    services: \"5\"   #only 5 services can be created in defined namespace<\/code><\/pre>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl apply -f resource-quota-demo.yaml\r\n$ kubectl describe resourcequota\/cluster-1-resource-quota -n twitter<\/code><\/pre>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"774\" height=\"202\" class=\"wp-image-10746\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/05\/output-resource-quota-1.jpg?w=774\" alt=\"\" \/>\r\n<figcaption>Output of RequestQuota.<\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ vi limits-request-demo.yaml\r\n\r\n#Yaml file to create pod with limits and requests for a nginx container.\r\n#I am accessing all the resources (CPU) from ResourceQuota for the below container.\r\n\r\napiVersion: v1\r\nkind: Pod\r\nmetadata:\r\n  name: nginx\r\n  namespace: twitter\r\nspec:\r\n  containers:\r\n  - name: nginx\r\n    image: nginx:1.14.2\r\n    ports:\r\n    - containerPort: 80\r\n    resources:\r\n      requests: # Minimum Value        \r\n        memory: \"100Mi\"\r\n        cpu: \"250m\" # 1 core = 1000m\r\n      limits:  # Maximum Value         \r\n        memory: \"128Mi\"\r\n        cpu: \"300m\" <\/code><\/pre>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>#Creating pod with limits &amp; requests from resource quota within twitter namespace\r\n\r\n$ kubectl apply -f limits-request-demo.yaml\r\n$ kubectl get pods -n twitter\r\n$ kubectl describe pod nginx -n twitter<\/code><\/pre>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" class=\"wp-image-10707\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/05\/output-limits-and-requests-2.jpg?w=919\" alt=\"\" width=\"800\" \/>\r\n<figcaption>Output of Pod nginx having limits and request.<\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"154\" class=\"wp-image-10749\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/05\/output-pod-rq-limits-and-requests-2.jpg?w=754\" alt=\"\" \/>\r\n<figcaption>Output of all resources(CPUs) secrets and pod has been used by nginx pod.<\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">If you are trying to create more than 300m CPU or trying to create more than 3 pods. You will get an error like \u201cforbidden: exceeded quota\u201d. Because you have already reached available limits within the namespace and resource quota restricts you to create other resources and resource types.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">So, here is the scenario: whenever you want to create the pods, that pod should pick default limits or assign limits. In a working organization, we are not holding the root access everywhere, not able to edit manifest files that are related to infrastructure. At the same time, you wanted to create a pod with limits. Here is the solution, Mates!! Keep reading\u2013<\/p>\r\n\r\n\r\n\r\n<h5 class=\"wp-block-heading\">Limit Range:<\/h5>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">LimitRange objects provide resource usage limits for each kind of resource in a namespace. LimtRange comes with constraints like &#8211; set minimum and maximum resource type-CPU, memory, etc., and usage limit to container or pods at ground levels within the namespace. The point to remember here is that only one LimitRange object can be created per namespaces.<br \/>Let&#8217;s see how it works:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ vi limit-range-demo.yaml\r\n\r\n#Yaml file to create LimitRange object\r\n\r\napiVersion: \"v1\"\r\nkind: \"LimitRange\"\r\nmetadata:\r\n  name: \"cluster-limiterange\"\r\n  namespace: \"twitter\"\r\nspec:\r\n  limits:\r\n    -\r\n      type: \"Container\" #define the type\r\n      max:              #Maximum limit range for containers\r\n        cpu: \"1\"\r\n        memory: \"1Gi\"\r\n      min:              #Minimum limit range for containers\r\n        cpu: \"100m\"\r\n        memory: \"4Mi\"\r\n      default:          #default limit range for containers\r\n        cpu: \"300m\"\r\n        memory: \"200Mi\"\r\n      defaultRequest:   #default request limit range for containers\r\n        cpu: \"100m\"\r\n        memory: \"100Mi\"<\/code><\/pre>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl apply -f limit-range-demo.yaml \r\n\r\n#Without defining limits and requests creating the pod\r\n\r\n$ kubectl run pod-nginx --image=nginx -n twitter\r\n$ kubectl get pods -n twitter\r\n$ kubectl describe limitrange\/cluster-limiterange -n twitter\r\n$ kubectl describe pod\/pod-nginx -n twitter<\/code><\/pre>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"160\" class=\"wp-image-10757\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/05\/output-limit-range.jpg?w=703\" alt=\"\" \/>\r\n<figcaption>Output of LimitRange created &amp; pod created without limits and request<\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" class=\"wp-image-10759\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/05\/output-limit-range-with-description.jpg?w=1024\" alt=\"\" width=\"800\" \/>\r\n<figcaption>Output of resources description with limits and requests<\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Please see the default entries at cluster-limitrange and pod-nginx that we have created without limits although it took the limits from limitrange.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"has-text-align-justify wp-block-heading\">Conclusion<\/h2>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">In times when the adoption of Microservices is increasing day by day logical grouping\/namespace, and resource requests\/limits are very important objects to identify and segregate. Such as if you do have multiple environments use namespace to separate them, instead of using different k8s clusters for each. It might give you a lesser cost effect. And, at last, this doesn&#8217;t end here we will bring more such scenarios dealing in real-time. Thanks and Happy Learning!<\/p>\r\n\r\n\r\n\r\n<p><br \/><strong style=\"font-weight: bold;\">Blog Pundit:<\/strong> <a href=\"https:\/\/opstree.com\/blog\/\/author\/deepakgupta97\/\">\u00a0<strong>Deepak Gupta<\/strong><\/a> <strong>and<\/strong> <a href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Sandeep Rawat<\/strong><\/a><\/p>\r\n\r\n\r\n\r\n\r\n\r\n<ul class=\"wp-block-social-links aligncenter is-content-justification-right is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li><\/ul>\r\n","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s start with a scenario, whenever any application builds, we generally do have 3 environments on the basis of resources &#8211; dev for developers resources, test for testers resources, and prod for production resources. Likewise, we used to have a separate IT-Operational Team having strategies to maintain their environment resources. It was very time-consuming and &hellip; <a href=\"https:\/\/opstree.com\/blog\/2022\/05\/17\/learn-the-importance-of-namespace-quota-limits\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Learn the Importance of Namespace, Quota &amp; Limits&#8221;<\/span><\/a><\/p>\n","protected":false},"author":220022204,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[768739308,32466874,768739309,749499567,17060625,2593229,676319245,727138419,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-2In","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/10439"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/220022204"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=10439"}],"version-history":[{"count":26,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/10439\/revisions"}],"predecessor-version":[{"id":30000,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/10439\/revisions\/30000"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=10439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=10439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=10439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}