{"id":20596,"date":"2021-03-24T09:31:01","date_gmt":"2021-03-24T09:31:01","guid":{"rendered":"http:\/\/www.devopsschool.com\/blog\/?p=20596"},"modified":"2025-01-23T12:45:32","modified_gmt":"2025-01-23T12:45:32","slug":"explained-kubernetes-secret-with-example","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/explained-kubernetes-secret-with-example\/","title":{"rendered":"Explained Kubernetes Secret with Example"},"content":{"rendered":"\n<p><strong>What is Kubernetes Secrets<\/strong><br>A Secret is an object that contains a small amount of sensitive data such as a password, a token, or a key. Objects of type secret are intended to hold sensitive information, such as passwords, OAuth tokens, and ssh keys. Putting this information in a secret is safer and more flexible than putting it verbatim in a pod definition or in a docker image. putting it in a Secret object allows for more control over how it is used, and reduces the risk of accidental exposure.<\/p>\n\n\n\n<p><strong>How Secrets can be created?<\/strong><br>Built-in Secrets &#8211; The system also creates some secrets. Service Accounts Automatically Create and Attach Secrets with API Credentials. Kubernetes automatically creates secrets which contain credentials for accessing the API and it automatically modifies your pods to use this type of secret.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Creating your own Secrets &#8211; Users can create secrets. Creating a Secret Using kubectl create secret.<\/li><\/ol>\n\n\n\n<p><strong>How to Create Secrets?<\/strong><br><strong>Method 1 &#8211; Creating a Secret Using &#8220;kubectl create secret&#8221;<\/strong><br>Assume &#8211; Say that some pods need to access a database. The username and password that the pods should use is in the files .\/username.txt and .\/password.txt on your local machine.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">echo<\/span>  <span class=\"hljs-string\">'admin'<\/span> | base64\n<span class=\"hljs-keyword\">echo<\/span>  <span class=\"hljs-string\">'password'<\/span> | base64<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">apiVersion: v1\nkind: Secret\nmetadata:\n  name: mysecret\ntype: Opaque\ndata:\n  username: YWRtaW4K\n  password: cGFzc3dvcmQK<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">apiVersion: v1\n<span class=\"hljs-attr\">kind<\/span>: Pod\n<span class=\"hljs-attr\">metadata<\/span>:\n  name: mysecretpod\n<span class=\"hljs-attr\">spec<\/span>:\n  containers:\n  - name: mypod\n    <span class=\"hljs-attr\">image<\/span>: scmgalaxy\/nginx-devopsschoolv1\n    <span class=\"hljs-attr\">volumeMounts<\/span>:\n    - name: foo\n      <span class=\"hljs-attr\">mountPath<\/span>: <span class=\"hljs-string\">\"\/etc\/foo\"<\/span>\n      <span class=\"hljs-attr\">readOnly<\/span>: <span class=\"hljs-literal\">true<\/span>\n  <span class=\"hljs-attr\">volumes<\/span>:\n  - name: foo\n    <span class=\"hljs-attr\">secret<\/span>:\n      secretName: mysecret<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"> <span class=\"hljs-number\">1069<\/span>  vi secret.yaml\n <span class=\"hljs-number\">1070<\/span>  kubectl <span class=\"hljs-keyword\">get<\/span> secret\n 1071  kubectl create -f secret.yaml\n 1072  kubectl <span class=\"hljs-keyword\">get<\/span> secret\n 1073  clear\n 1074  ls\n 1075  vi mysecretpod.yaml\n 1076  kubectl create -f mysecretpod.yaml\n 1077  kubectl <span class=\"hljs-keyword\">get<\/span> pods\n 1078  kubectl exec mysecretpod ls \/etc\/foo\n 1079  kubectl exec mysecretpod ls \/etc\/foo\/username\n 1080  kubectl exec mysecretpod more \/etc\/foo\/username\n 1081  kubectl exec mysecretpod more \/etc\/foo\/password\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># wordpress-secrets.yml<\/span>\napiVersion: v1\nkind: Secret\nmetadata:\n  name: wordpress-secrets\ntype: Opaque\ndata:\n  db-password: cGFzc3dvcmQ=\n\n<span class=\"hljs-comment\"># wordpress-service.yml<\/span>\napiVersion: v1\nkind: Service\nmetadata:\n  name: wordpress-service\nspec:\n  ports:\n  - port: <span class=\"hljs-number\">31001<\/span>\n    nodePort: <span class=\"hljs-number\">31001<\/span>\n    targetPort: http-port\n    protocol: TCP\n  selector:\n    app: wordpress\n  type: NodePort\n\n<span class=\"hljs-comment\"># wordpress-single-deployment-no-volumes.yml<\/span>\napiVersion: extensions\/v1beta1\nkind: Deployment\nmetadata:\n  name: wordpress-deployment\nspec:\n  replicas: <span class=\"hljs-number\">1<\/span>\n  template:\n    metadata:\n      labels:\n        app: wordpress\n    spec:\n      containers:\n      - name: wordpress\n        image: wordpress:<span class=\"hljs-number\">4<\/span>-php7<span class=\"hljs-number\">.0<\/span>\n        ports:\n        - name: http-port\n          containerPort: <span class=\"hljs-number\">80<\/span>\n        env:\n          - name: WORDPRESS_DB_PASSWORD\n            valueFrom:\n              secretKeyRef:\n                name: wordpress-secrets\n                key: db-password\n          - name: WORDPRESS_DB_HOST\n            value: <span class=\"hljs-number\">127.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span>\n      - name: mysql\n        image: mysql:<span class=\"hljs-number\">5.7<\/span>\n        ports:\n        - name: mysql-port\n          containerPort: <span class=\"hljs-number\">3306<\/span>\n        env:\n          - name: MYSQL_ROOT_PASSWORD\n            valueFrom:\n              secretKeyRef:\n                name: wordpress-secrets\n                key: db-password<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Each item must be base64 encoded:\n$ <span class=\"hljs-keyword\">echo<\/span> -n <span class=\"hljs-string\">'admin'<\/span> | base64\nYWRtaW4=\n$ <span class=\"hljs-keyword\">echo<\/span> -n <span class=\"hljs-string\">'1f2d1e2e67df'<\/span> | base64\nMWYyZDFlMmU2N2Rm\n\nNow write a secret object in yaml file <span class=\"hljs-string\">\"secret.yaml\"<\/span> that looks like this:\napiVersion: v1\nkind: Secret\nmetadata:\n  name: mysecret\ntype: Opaque\ndata:\n  username: YWRtaW4=\n  password: MWYyZDFlMmU2N2Rm\n\napiVersion: v1\nkind: Secret\nmetadata:\n  name: db-secrets\ntype: Opaque\ndata:\n  username: cm9vdA==\n  password: cGFzc3dvcmQ=\n\n\n$ kubectl create -f .\/secret.yaml\n\nHow to Decoding a Secret\n$ kubectl get secret mysecret -o yaml\n$ $ <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'MWYyZDFlMmU2N2Rm'<\/span> | base64 --decode<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">apiVersion: v1\n<span class=\"hljs-attr\">kind<\/span>: Pod\n<span class=\"hljs-attr\">metadata<\/span>:\n  name: mypod\n<span class=\"hljs-attr\">spec<\/span>:\n  containers:\n  - name: mypod\n    <span class=\"hljs-attr\">image<\/span>: redis\n    <span class=\"hljs-attr\">volumeMounts<\/span>:\n    - name: foo\n      <span class=\"hljs-attr\">mountPath<\/span>: <span class=\"hljs-string\">\"\/etc\/foo\"<\/span>\n      <span class=\"hljs-attr\">readOnly<\/span>: <span class=\"hljs-literal\">true<\/span>\n  <span class=\"hljs-attr\">volumes<\/span>:\n  - name: foo\n    <span class=\"hljs-attr\">secret<\/span>:\n      secretName: mysecret\n\n\n<span class=\"hljs-attr\">apiVersion<\/span>: extensions\/v1beta1\n<span class=\"hljs-attr\">kind<\/span>: Deployment\n<span class=\"hljs-attr\">metadata<\/span>:\n  name: helloworld-deployment\n<span class=\"hljs-attr\">spec<\/span>:\n  replicas: <span class=\"hljs-number\">3<\/span>\n  <span class=\"hljs-attr\">template<\/span>:\n    metadata:\n      labels:\n        app: helloworld\n    <span class=\"hljs-attr\">spec<\/span>:\n      containers:\n      - name: k8s-demo\n        <span class=\"hljs-attr\">image<\/span>: wardviaene\/k8s-demo\n        <span class=\"hljs-attr\">ports<\/span>:\n        - name: nodejs-port\n          <span class=\"hljs-attr\">containerPort<\/span>: <span class=\"hljs-number\">3000<\/span>\n        <span class=\"hljs-attr\">volumeMounts<\/span>:\n        - name: cred-volume\n          <span class=\"hljs-attr\">mountPath<\/span>: <span class=\"hljs-regexp\">\/etc\/<\/span>creds\n          <span class=\"hljs-attr\">readOnly<\/span>: <span class=\"hljs-literal\">true<\/span>\n      <span class=\"hljs-attr\">volumes<\/span>:\n      - name: cred-volume\n        <span class=\"hljs-attr\">secret<\/span>: \n          secretName: db-secrets\n\n$ kubectl create -f helloworld-secrets-volumes.yaml\n$ kubectl gets pods\n$ kubectl describe pod podname\n$ kubectl exec podname -i -t -- <span class=\"hljs-regexp\">\/bin\/<\/span>bash\n$ cd \/etc\/creds\n\n\nProjection <span class=\"hljs-keyword\">of<\/span> secret keys to specific paths\n\n<span class=\"hljs-attr\">apiVersion<\/span>: v1\n<span class=\"hljs-attr\">kind<\/span>: Pod\n<span class=\"hljs-attr\">metadata<\/span>:\n  name: mypod\n<span class=\"hljs-attr\">spec<\/span>:\n  containers:\n  - name: mypod\n    <span class=\"hljs-attr\">image<\/span>: redis\n    <span class=\"hljs-attr\">volumeMounts<\/span>:\n    - name: foo\n      <span class=\"hljs-attr\">mountPath<\/span>: <span class=\"hljs-string\">\"\/etc\/foo\"<\/span>\n      <span class=\"hljs-attr\">readOnly<\/span>: <span class=\"hljs-literal\">true<\/span>\n  <span class=\"hljs-attr\">volumes<\/span>:\n  - name: foo\n    <span class=\"hljs-attr\">secret<\/span>:\n      secretName: mysecret\n      <span class=\"hljs-attr\">items<\/span>:\n      - key: username\n        <span class=\"hljs-attr\">path<\/span>: my-group\/my-username<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ kubectl exec podname -i -t -- <span class=\"hljs-regexp\">\/bin\/<\/span>bash\n$ ls \/etc\/foo\/\nusername\npassword\n$ cat \/etc\/foo\/username\nadmin\n$ cat \/etc\/foo\/password\n<span class=\"hljs-number\">1<\/span>f2d1e2e67df\n\nUsing Secrets <span class=\"hljs-keyword\">as<\/span> Environment Variables\t\nThis is an example <span class=\"hljs-keyword\">of<\/span> a pod that uses secrets <span class=\"hljs-keyword\">from<\/span> environment variables:\n\napiVersion: v1\n<span class=\"hljs-attr\">kind<\/span>: Pod\n<span class=\"hljs-attr\">metadata<\/span>:\n  name: secret-env-pod\n<span class=\"hljs-attr\">spec<\/span>:\n  containers:\n  - name: mycontainer\n    <span class=\"hljs-attr\">image<\/span>: redis\n    <span class=\"hljs-attr\">env<\/span>:\n      - name: SECRET_USERNAME\n        <span class=\"hljs-attr\">valueFrom<\/span>:\n          secretKeyRef:\n            name: mysecret\n            <span class=\"hljs-attr\">key<\/span>: username\n      - name: SECRET_PASSWORD\n        <span class=\"hljs-attr\">valueFrom<\/span>:\n          secretKeyRef:\n            name: mysecret\n            <span class=\"hljs-attr\">key<\/span>: password\n  <span class=\"hljs-attr\">restartPolicy<\/span>: Never\n\nConsuming Secret Values <span class=\"hljs-keyword\">from<\/span> Environment Variables\n$ kubectl exec podname -i -t -- <span class=\"hljs-regexp\">\/bin\/<\/span>bash\n$ echo $SECRET_USERNAME\nadmin\n$ echo $SECRET_PASSWORD\n<span class=\"hljs-number\">1<\/span>f2d1e2e67df\n\nWordPress Demo\n=============================\nwordpress-secrets.yml\n<span class=\"hljs-attr\">apiVersion<\/span>: v1\n<span class=\"hljs-attr\">kind<\/span>: Secret\n<span class=\"hljs-attr\">metadata<\/span>:\n  name: wordpress-secrets\n<span class=\"hljs-attr\">type<\/span>: Opaque\n<span class=\"hljs-attr\">data<\/span>:\n  db-password: cGFzc3dvcmQ=\n\nwordpress-single-deployment-no-volumes.yml\n<span class=\"hljs-attr\">apiVersion<\/span>: extensions\/v1beta1\n<span class=\"hljs-attr\">kind<\/span>: Deployment\n<span class=\"hljs-attr\">metadata<\/span>:\n  name: wordpress-deployment\n<span class=\"hljs-attr\">spec<\/span>:\n  replicas: <span class=\"hljs-number\">1<\/span>\n  <span class=\"hljs-attr\">template<\/span>:\n    metadata:\n      labels:\n        app: wordpress\n    <span class=\"hljs-attr\">spec<\/span>:\n      containers:\n      - name: wordpress\n        <span class=\"hljs-attr\">image<\/span>: wordpress:<span class=\"hljs-number\">4<\/span>-php7<span class=\"hljs-number\">.0<\/span>\n        <span class=\"hljs-attr\">ports<\/span>:\n        - name: http-port\n          <span class=\"hljs-attr\">containerPort<\/span>: <span class=\"hljs-number\">80<\/span>\n        <span class=\"hljs-attr\">env<\/span>:\n          - name: WORDPRESS_DB_PASSWORD\n            <span class=\"hljs-attr\">valueFrom<\/span>:\n              secretKeyRef:\n                name: wordpress-secrets\n                <span class=\"hljs-attr\">key<\/span>: db-password\n          - name: WORDPRESS_DB_HOST\n            <span class=\"hljs-attr\">value<\/span>: <span class=\"hljs-number\">127.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span>\n      - name: mysql\n        <span class=\"hljs-attr\">image<\/span>: mysql:<span class=\"hljs-number\">5.7<\/span>\n        <span class=\"hljs-attr\">ports<\/span>:\n        - name: mysql-port\n          <span class=\"hljs-attr\">containerPort<\/span>: <span class=\"hljs-number\">3306<\/span>\n        <span class=\"hljs-attr\">env<\/span>:\n          - name: MYSQL_ROOT_PASSWORD\n            <span class=\"hljs-attr\">valueFrom<\/span>:\n              secretKeyRef:\n                name: wordpress-secrets\n                <span class=\"hljs-attr\">key<\/span>: db-password\n\nwordpress-service.yml\n<span class=\"hljs-attr\">apiVersion<\/span>: v1\n<span class=\"hljs-attr\">kind<\/span>: Service\n<span class=\"hljs-attr\">metadata<\/span>:\n  name: wordpress-service\n<span class=\"hljs-attr\">spec<\/span>:\n  ports:\n  - port: <span class=\"hljs-number\">31001<\/span>\n    <span class=\"hljs-attr\">nodePort<\/span>: <span class=\"hljs-number\">31001<\/span>\n    <span class=\"hljs-attr\">targetPort<\/span>: http-port\n    <span class=\"hljs-attr\">protocol<\/span>: TCP\n  <span class=\"hljs-attr\">selector<\/span>:\n    app: wordpress\n  <span class=\"hljs-attr\">type<\/span>: NodePort\n\n\nreference\n<span class=\"hljs-attr\">https<\/span>:<span class=\"hljs-comment\">\/\/kubernetes.io\/docs\/concepts\/configuration\/secret\/<\/span>\n\n\napiVersion: v1\n<span class=\"hljs-attr\">kind<\/span>: Pod\n<span class=\"hljs-attr\">metadata<\/span>:\n  name: mypod\n<span class=\"hljs-attr\">spec<\/span>:\n  containers:\n  - name: mypod\n    <span class=\"hljs-attr\">image<\/span>: ngnix\n    <span class=\"hljs-attr\">volumeMounts<\/span>:\n    - name: foo\n      <span class=\"hljs-attr\">mountPath<\/span>: <span class=\"hljs-string\">\"\/etc\/foo\"<\/span>\n      <span class=\"hljs-attr\">readOnly<\/span>: <span class=\"hljs-literal\">true<\/span>\n  <span class=\"hljs-attr\">volumes<\/span>:\n  - name: foo\n    <span class=\"hljs-attr\">secret<\/span>:\n      secretName: db-user-pass<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_49950\"><iframe loading=\"lazy\"  id=\"_ytid_56581\"  width=\"760\" height=\"427\"  data-origwidth=\"760\" data-origheight=\"427\" src=\"https:\/\/www.youtube.com\/embed\/?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  data-epytgalleryid=\"epyt_gallery_49950\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>What is Kubernetes SecretsA Secret is an object that contains a small amount of sensitive data such as a password, a token, or a key. Objects of type secret are&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4859],"tags":[],"class_list":["post-20596","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/20596","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=20596"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/20596\/revisions"}],"predecessor-version":[{"id":24475,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/20596\/revisions\/24475"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=20596"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=20596"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=20596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}