{"id":14741,"date":"2023-08-08T13:19:09","date_gmt":"2023-08-08T07:49:09","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=14741"},"modified":"2023-08-08T13:19:13","modified_gmt":"2023-08-08T07:49:13","slug":"introduction-to-external-secret-operator","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/08\/08\/introduction-to-external-secret-operator\/","title":{"rendered":"Introduction to External Secret\u00a0Operator"},"content":{"rendered":"\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/08\/image-1-3.png\" alt=\"\" class=\"wp-image-15044\" style=\"width:800px\" width=\"800\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/08\/7974b-1ahshq9awsffgyddewiljzw.png\" rel=\"noreferrer noopener\" target=\"_blank\">ESO<\/a><\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">In today\u2019s digital world, the protection of sensitive information has become paramount. So while working with microservices orchestrator tools such as kubernetes it is important to handle the secrets securely such as username or password, DB Password, or API Keys. Kubernetes has a built-in feature for managing secrets called secrets. But the downside of Secrets is that It doesn\u2019t support storing or retrieving the secrets from external secret management systems like <a rel=\"noreferrer noopener\" href=\"https:\/\/aws.amazon.com\/secrets-manager\/\" target=\"_blank\">AWS Secrets Manager<\/a>, <a rel=\"noreferrer noopener\" href=\"https:\/\/www.vaultproject.io\/\" target=\"_blank\">HashiCorp Vault<\/a>, <a rel=\"noreferrer noopener\" href=\"https:\/\/cloud.google.com\/secret-manager\" target=\"_blank\">Google Secrets Manager<\/a>, <a rel=\"noreferrer noopener\" href=\"https:\/\/azure.microsoft.com\/en-us\/services\/key-vault\/\" target=\"_blank\">Azure Key Vault<\/a>, <a rel=\"noreferrer noopener\" href=\"https:\/\/www.ibm.com\/cloud\/secrets-manager\" target=\"_blank\">IBM Cloud Secrets Manager<\/a>, and many more.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Moreover, external secret management provides encryption at rest, secret rotation policies, and many more. So in this blog, we will talk about the solution <a href=\"https:\/\/www.godaddy.com\/engineering\/2019\/04\/16\/kubernetes-external-secrets\/\" rel=\"noreferrer noopener\" target=\"_blank\">GoDaddy<\/a> came up with an open-source solution called <strong>External Secrets Operator<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is External Secret Operator?<\/strong><\/h2>\n\n\n\n<p class=\"has-text-align-justify\">External Secrets Operator is a tool or component that extends the functionality of Kubernetes to manage external secrets in a more secure and efficient manner. It acts as a bridge between Kubernetes and external secret management systems, allowing you to securely store and retrieve secrets from external sources. It integrates with external secret providers such as HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, or other similar systems. This enables Kubernetes applications to access and utilize secrets stored in these external systems without exposing them directly within the cluster.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Architecture of External Secret Operator:<\/h3>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/08\/image.png\" alt=\"\" class=\"wp-image-15040\" style=\"width:800px\" width=\"800\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/external-secrets.io\/v0.4.4\/pictures\/diagrams-high-level-simple.png\" rel=\"noreferrer noopener\" target=\"_blank\">ESO IMAGE<\/a><\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">ESO controller is installed in a Kubernetes cluster and is a cluster-specific object. To communicate with other secret managers, the API resource\u200a\u2014\u200aSecretStore \/ ClusterSecretStore is deployed within the namespace\/ cluster and is responsible for the authentication with external APIs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Components of <strong>External Secrets Operator:<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/08\/image-1.png\" alt=\"\" class=\"wp-image-15041\" style=\"width:800px\" width=\"800\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/external-secrets.io\/v0.8.5\/api\/components\/\" rel=\"noreferrer noopener\" target=\"_blank\">ESO Component Working&nbsp;<\/a><\/figcaption><\/figure>\n\n\n\n<p>External Secrets comes with three components: <strong>Core Controller<\/strong>, <strong>Webhook, <\/strong>and <strong>Cert Controller<\/strong>.<\/p>\n\n\n\n<ol>\n<li><strong>Core Controller:<\/strong> The core controller is the central component of an external secret operator. It manages the lifecycle of secrets, including their creation, retrieval, deletion, and rotation. The core controller interacts with the underlying secret storage system and ensures that secrets are securely managed and accessible to authorized entities.<\/li>\n\n\n\n<li><strong>Webhook:<\/strong> A webhook is a mechanism used for event-driven communication between systems. In the context of an external secret operator, a webhook may be used to trigger actions or updates based on specific events related to secrets. For example, a webhook could be used to notify external systems when a secret is created or updated, allowing them to take appropriate actions.<\/li>\n\n\n\n<li><strong>Cert Controller:<\/strong> A certificate controller, or cert controller, is a component of an external secret operator that specifically deals with the management of TLS certificates. It automates the process of obtaining, renewing, and distributing TLS certificates for secure communication within a Kubernetes cluster. The cert controller may integrate with a certificate authority (CA) or certificate management system to handle certificate operations.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Core Resources of External Secret Operator:<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1. SecretStore:&nbsp;<\/h4>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/external-secrets.io\/v0.8.5\/pictures\/diagrams-high-level-ns-detail.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/08\/image-1-2.png\" alt=\"\" class=\"wp-image-15043\" style=\"width:800px\" width=\"800\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>SecretStore is namespace specific resource and contains the authentication credentials details of the external secret manager that we want to access or want to make external API calls.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>If you want to design cross-namespace SecretStores you must use <a href=\"https:\/\/external-secrets.io\/v0.8.5\/api\/clustersecretstore\/\" rel=\"noreferrer noopener\" target=\"_blank\">ClusterSecretStores<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">2. ClusterSecretStore:<\/h4>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/08\/image-1-1.png\" alt=\"ClusterSecretStore\" class=\"wp-image-15042\" style=\"width:800px\" width=\"800\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/external-secrets.io\/v0.8.5\/api\/clustersecretstore\/\" rel=\"noreferrer noopener\" target=\"_blank\">ClusterSecretStore<\/a><\/figcaption><\/figure>\n\n\n\n<p>ClusterSecretStore is a cluster-specific SecretStore that can be referenced by all externalSecrets for all namespaces.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. External&nbsp;Secret:<\/h4>\n\n\n\n<p class=\"has-text-align-justify\">External secret describes what data is to be fetched and how it should be transformed and saved as a kind of secret. It has a reference to SecretStore\/ClusterSecretStores which knows how to access the external secret manager data.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>4. ClusterExternalSecret:<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/08\/image-2.png\" alt=\"\" class=\"wp-image-15045\" style=\"width:800px\" width=\"800\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/external-secrets.io\/v0.8.5\/api\/clusterexternalsecret\/\" rel=\"noreferrer noopener\" target=\"_blank\">ClusterExternalSecret<\/a><\/figcaption><\/figure>\n\n\n\n<p>ClusterExternalSecret is a cluster-scoped resource that can be used to manage ExternalSecret resources in specific namespaces.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Benefits of External Secret Operator:<\/strong><\/h3>\n\n\n\n<ol>\n<li><strong>Enhanced Security:<\/strong> The External Secrets Operator allows you to securely store and retrieve sensitive information from external secret management systems such as HashiCorp Vault, AWS Secrets Manager, and Azure Key Vault. These external systems provide advanced security features like encryption at rest, secret rotation policies, and access controls, ensuring the confidentiality and integrity of your secrets.<\/li>\n\n\n\n<li><strong>Seamless Integration:<\/strong> External Secrets Operator seamlessly integrates with Kubernetes, allowing applications running in the cluster to access and utilize secrets stored in external systems without exposing them directly.<\/li>\n\n\n\n<li><strong>Open-Source Community Support<\/strong>: The External Secrets Operator is an open-source solution developed by GoDaddy. This means it benefits from active community support, regular updates, and contributions from developers worldwide. The open-source nature of the operator fosters innovation, encourages collaboration, and ensures the availability of ongoing improvements and new features.<\/li>\n\n\n\n<li><strong>Flexibility and Scalability: <\/strong>External Secret Operator works with a wide range of external secret management systems, with flexibility in choosing the one that best suits your requirements.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion:<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">External Secrets Operator is a valuable tool for securely managing secrets in Kubernetes by bridging the gap between the platform and external secret management systems. By integrating with popular providers like HashiCorp Vault, AWS Secrets Manager, and Azure Key Vault, it allows for the secure storage and retrieval of sensitive information without exposing it directly within the cluster.<br><br>So In this blog, we have covered an introduction to External Secret Operator. In the next blog, we will be covering the real-time implementation of external secret operators with GKE using  Google Secret Manager.<\/p>\n\n\n\n<p><strong>Blog Pundits: <a href=\"https:\/\/opstree.com\/blog\/\/author\/deepakgupta97\/\">\u00a0<strong>Deepak Gupta<\/strong><\/a><strong><strong> <\/strong><\/strong><\/strong> <strong>and <a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong>OpsTree is an End-to-End <a href=\"https:\/\/opstree.com\/services\/\" target=\"_blank\" rel=\"noreferrer noopener\">DevOps Solution<\/a> Provider.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Introduction+to+External+Secret%C2%A0Operator\">Contact Us<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center 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 rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><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>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><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>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><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>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><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>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><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>\n\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><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=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In today\u2019s digital world, the protection of sensitive information has become paramount. So while working with microservices orchestrator tools such as kubernetes it is important to handle the secrets securely such as username or password, DB Password, or API Keys. Kubernetes has a built-in feature for managing secrets called secrets. But the downside of Secrets &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/08\/08\/introduction-to-external-secret-operator\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Introduction to External Secret\u00a0Operator&#8221;<\/span><\/a><\/p>\n","protected":false},"author":237666321,"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,676319247,241386556,768739309,351238484,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-3PL","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/14741"}],"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\/237666321"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=14741"}],"version-history":[{"count":12,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/14741\/revisions"}],"predecessor-version":[{"id":29656,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/14741\/revisions\/29656"}],"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=14741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=14741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=14741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}