{"id":66988,"date":"2023-10-31T09:00:00","date_gmt":"2023-10-31T00:00:00","guid":{"rendered":"https:\/\/www.creationline.com\/?p=66988"},"modified":"2023-10-30T18:27:37","modified_gmt":"2023-10-30T09:27:37","slug":"google-secret-manager-%e3%81%a8-external-secrets-operator-%e3%82%92%e9%80%a3%e6%90%ba%e3%81%97%e3%81%a6-gke-%e3%81%a7-secret-%e3%82%92%e8%87%aa%e5%8b%95%e7%94%9f%e6%88%90-external-secrets-gcp-gke","status":"publish","type":"post","link":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988","title":{"rendered":"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u306f\u3058\u3081\u306b<\/h2>\n\n\n\n<p>Kubernetes\u3067Secret manifest\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u3001Secret\u306e\u30c7\u30fc\u30bf\u306f\u305f\u3060\u5358\u306bbase64\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u3066\u3044\u308b\u3060\u3051\u306a\u306e\u3067\u3001Kubernetes API\u30b5\u30fc\u30d0\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066Secret\u30ea\u30bd\u30fc\u30b9\u3092\u95b2\u89a7\u3067\u304d\u308b\u6a29\u9650\u304c\u3042\u308c\u3070\u3001\u8ab0\u3067\u3082Secret\u306e\u30c7\u30fc\u30bf\u3092base64\u3067\u30c7\u30b3\u30fc\u30c9\u3057\u3066\u3001\u30c7\u30fc\u30bf\u306e\u4e2d\u8eab\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u3066\u3057\u307e\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001Secret\u30c7\u30fc\u30bf\u306a\u3069\u306e\u79d8\u533f\u60c5\u5831\u3092\u5b89\u5168\u306b\u7ba1\u7406\u3059\u308b\u65b9\u6cd5\u3092\u5225\u9014\u30e6\u30fc\u30b6\u30fc\u81ea\u8eab\u3067\u691c\u8a0e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u672cBlog\u3067\u306f\u3001\u305d\u306eSecret\u30c7\u30fc\u30bf\u306a\u3069\u306e\u79d8\u533f\u60c5\u5831\u3092\u5b89\u5168\u306b\u7ba1\u7406\u3059\u308b\u4e00\u3064\u306e\u624b\u6bb5\u3068\u3057\u3066\u3001Secret\u7ba1\u7406\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u306a\u308b <a href=\"https:\/\/external-secrets.io\/latest\/\" target=\"_blank\" rel=\"noreferrer noopener\">External Secrets Operator<\/a> \u3092\u5229\u7528\u3057\u3066\u3001Google Cloud\u306eSecret Management System\u3068\u306a\u308b <a href=\"https:\/\/cloud.google.com\/secret-manager?hl=ja\" target=\"_blank\" rel=\"noreferrer noopener\">Secret Manager<\/a> \u304b\u3089Secret\u3092\u53d6\u5f97\u3057\u3001Google Kubernetes Engine(GKE)\u3067\u5b89\u5168\u306b\u79d8\u533f\u60c5\u5831\u3092\u5229\u7528\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u691c\u8a3c\u3057\u307e\u3057\u305f\u306e\u3067\u3001\u3056\u3063\u304f\u308a\u3068\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">External Secrets Operator\u3068\u306f<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u6982\u8981<\/h3>\n\n\n\n<p><a href=\"https:\/\/external-secrets.io\/latest\/introduction\/overview\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u516c\u5f0fHP<\/a>\u3067\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u7d39\u4ecb\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"596\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13-1024x596.png\" alt=\"\" class=\"wp-image-67022\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13-1024x596.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13-360x209.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13-768x447.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13-1536x893.png 1536w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13.png 1874w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The External Secrets Operator extends Kubernetes with\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/extend-kubernetes\/api-extension\/custom-resources\/\" target=\"_blank\" rel=\"noreferrer noopener\">Custom Resources<\/a>, which define where secrets live and how to synchronize them. The controller fetches secrets from an external API and creates Kubernetes\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/secret\/\" target=\"_blank\" rel=\"noreferrer noopener\">secrets<\/a>. If the secret from the external API changes, the controller will reconcile the state in the cluster and update the secrets accordingly.<\/p>\n<cite>https:\/\/external-secrets.io\/latest\/introduction\/overview\/<\/cite><\/blockquote>\n\n\n\n<p>Kubernetes\u306bExternal Secrets Operator(\u4ee5\u964d\u3001ESO)\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u3067\u3001AWS Secrets Manager\u3084Google Secret Manager\u3001Azure Key Vault\u306e\u3088\u3046\u306aSecret Management System\u304b\u3089\u79d8\u533f\u60c5\u5831\u3092\u81ea\u52d5\u53d6\u5f97\u3057\u3066\u3001Kubernetes Cluster\u5185\u3067\u81ea\u52d5\u7684\u306bSecret\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Secret Management System\u5074\u306e\u79d8\u533f\u60c5\u5831\u306b\u5909\u66f4\u304c\u3042\u3063\u305f\u5834\u5408\u306f\u3001ESO(controller)\u304c\u305d\u306e\u5909\u66f4\u3092\u81ea\u52d5\u691c\u77e5\u3057\u3066\u3001Cluster\u5185\u306eSecret\u30ea\u30bd\u30fc\u30b9\u3082\u81ea\u52d5\u66f4\u65b0\u3057\u307e\u3059(reconciliation loop)<\/p>\n\n\n\n<p>ESO\u306eCustom Resorce\u3067\u306f\u4e3b\u306b\u3001Secret Management System\u306b\u3069\u306e\u3088\u3046\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u304b\u3092\u5b9a\u7fa9\u3059\u308b <code>SecretStore<\/code> \u30ea\u30bd\u30fc\u30b9\u3068\u3001\u3069\u306e\u3088\u3046\u306a\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\u304b\u3092\u5b9a\u7fa9\u3059\u308b <code>ExternalSecrets<\/code> \u30ea\u30bd\u30fc\u30b9\u306e2\u7a2e\u985e\u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u307e\u305f\u3001<code>SecretStore<\/code> \u30ea\u30bd\u30fc\u30b9\u306e\u95a2\u9023\u3067\u3001cluster-wide\u306a(\u5168\u3066\u306enamespace\u306b\u9069\u7528\u3055\u308c\u308b)<code>SecretStore<\/code>\u3068\u3057\u3066\u3001<code>ClusterSecretStore<\/code> \u30ea\u30bd\u30fc\u30b9\u3082\u5b58\u5728\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google Secret Manager \u3068 External Secrets Operator \u306e\u9023\u643a\u30a4\u30e1\u30fc\u30b8<\/h3>\n\n\n\n<p>\u4eca\u56de\u306eGoogle Cloud\u306b\u304a\u3051\u308b\u691c\u8a3c\u30d9\u30fc\u30b9\u306b\u306a\u308a\u307e\u3059\u304c\u3001ESO\u306e\u5404Custom Resource\u3068Google Secret Manager\u306e\u9023\u643a\u30a4\u30e1\u30fc\u30b8\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u691c\u8a3c\u3067\u306fcluster-wide\u306a<code>ClusterSecretStore<\/code>\u30ea\u30bd\u30fc\u30b9\u3092\u5229\u7528\u3059\u308b\u524d\u63d0\u3067\u3059\u3002\u6700\u521d\u306bESO\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3068\u3001\u5e38\u306bESO\u306fExternalSecret\u30ea\u30bd\u30fc\u30b9\u3092reconciliation loop\u3067\u81ea\u52d5\u66f4\u65b0\u3057\u3066\u3044\u308b\u72b6\u614b\u306b\u306a\u308a\u307e\u3059\u3002Custom Resource\u3067\u3042\u308bExternalSecrets\u30ea\u30bd\u30fc\u30b9\u304c\u4f5c\u6210\u3055\u308c\u308b\u3068\u3001ExternalSecret\u30ea\u30bd\u30fc\u30b9\u3067\u6307\u5b9a\u3057\u305fClusterSecretStore\u30ea\u30bd\u30fc\u30b9\u3092\u53c2\u7167\u3057\u3001ClusterSecretStore\u30ea\u30bd\u30fc\u30b9\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u30a2\u30af\u30bb\u30b9\u5148(Google Cloud)\u306e\u8a8d\u8a3c\u60c5\u5831\u3084\u3001\u53d6\u5f97\u3059\u308bsecret manager secret\u306e\u60c5\u5831\u3092\u3082\u3068\u306b\u3001external API \u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3057\u307e\u3059(\u2460)\u3002external API \u304c\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3055\u308c\u308b\u3068ESO\u306fexternal API\u304b\u3089secret\u60c5\u5831\u3092\u62bd\u51fa\u3057\u3001ExternalSecret\u30ea\u30bd\u30fc\u30b9\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u300c\u4f5c\u6210\u3059\u308bsecret\u306ename\u3084data.key\u306a\u3069\u300d\u306e\u60c5\u5831\u3082\u3068\u306b\u3001\u5b9f\u969b\u306bCluster\u5185\u3067secret\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059(\u2461)\u3002ESO\u306f\u5e38\u306bexternal API\u3068\u81ea\u52d5\u751f\u6210\u3057\u305fsecret values\u304c\u540c\u671f\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3001\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"520\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/54e908b98b87a9a35a164d8dc94a0882-1024x520.png\" alt=\"\" class=\"wp-image-67041\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/54e908b98b87a9a35a164d8dc94a0882-1024x520.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/54e908b98b87a9a35a164d8dc94a0882-360x183.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/54e908b98b87a9a35a164d8dc94a0882-768x390.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/54e908b98b87a9a35a164d8dc94a0882.png 1271w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">[\u691c\u8a3c] Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210<\/h2>\n\n\n\n<p>\u305d\u308c\u3067\u306f\u3001\u524d\u8ff0\u306e\u9023\u643a\u30a4\u30e1\u30fc\u30b8\u3092\u3082\u3068\u306b\u3001\u5b9f\u969b\u306bESO\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u3066secret\u304c\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u304b\u78ba\u8a8d\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u524d\u63d0<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kubernetes Engine API \/ Secret Manager API \u6709\u52b9\u5316\u6e08\u307f<\/li>\n\n\n\n<li>Workload Identity\u304c\u6709\u52b9\u5316\u3055\u308c\u305f GKE Cluster \u3092\u4f5c\u6210\u6e08\u307f<\/li>\n\n\n\n<li>CloudShell\u3067\u4f5c\u696d\u5b9f\u65bd<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Google Secret Manager \u306b \u8a8d\u8a3c\u60c5\u5831(version) \u3092\u767b\u9332<\/h3>\n\n\n\n<p>\u4e8b\u524d\u6e96\u5099\u3068\u3057\u3066\u3001ESO\u304c\u53d6\u5f97\u3059\u308b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092Google Secret Manager\u3067\u3042\u3089\u304b\u3058\u3081\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud \u30b3\u30f3\u30bd\u30fc\u30eb\u753b\u9762\u306e\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30e1\u30cb\u30e5\u30fc\u3067\u3001[\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3] &gt; [Secret Manager] \u304b\u3089\u3001\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u65b0\u305f\u306b\u4f5c\u6210\u3057\u307e\u3059\u3002\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u306e\u540d\u524d\u3001\u5024\u306f\u691c\u8a3c\u7528\u3068\u3057\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3057\u305f\u3002\n<ul class=\"wp-block-list\">\n<li>\u540d\u524d\uff1atest-secret<\/li>\n\n\n\n<li>\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u306e\u5024\uff1atest-password<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/349777c12291f2f162bcabe4d771bc1c-1011x1024.png\" alt=\"\" class=\"wp-image-67027\" width=\"758\" height=\"768\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/349777c12291f2f162bcabe4d771bc1c-1011x1024.png 1011w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/349777c12291f2f162bcabe4d771bc1c-356x360.png 356w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/349777c12291f2f162bcabe4d771bc1c-768x778.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/349777c12291f2f162bcabe4d771bc1c.png 1288w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">GKE \u306b External Secrets Operator \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n\n\n\n<p>GKE Cluster\u306bESO\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u304d\u307e\u3059\u3002\u57fa\u672c\u7684\u306a\u6d41\u308c\u306f<a href=\"https:\/\/external-secrets.io\/latest\/introduction\/getting-started\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u516c\u5f0fHP\u306b\u8a18\u8f09\u306e\u624b\u9806<\/a>\u306b\u6cbf\u3044\u307e\u3059\u304c\u3001\u4eca\u56de\u306eprovider\u306fGoogle Cloud\u306b\u306a\u308b\u306e\u3067\u3001SecretStore\u306e\u8a18\u8f09\u65b9\u6cd5\u3084\u305d\u306e\u4ed6Google Cloud\u7279\u6709\u306e\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306f\u3001<a href=\"https:\/\/external-secrets.io\/v0.5.7\/provider-google-secrets-manager\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u3053\u3061\u3089<\/a>\u306e\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u3092\u53c2\u8003\u306b\u9032\u3081\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud Shell \u3092\u5229\u7528\u3057\u3066\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5148\u306eGKE Cluster\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gcloud container clusters get-credentials &lt;cluster_name&gt; --zone &lt;zone_name&gt; --project &lt;project_name&gt;\n~~~\nFetching cluster endpoint and auth data.\nkubeconfig entry generated for &lt;cluster_name&gt;.<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306fHelm Chart\u3092\u5229\u7528\u3057\u307e\u3059\u3002Helm Chart repository\u306bexternal-secrets repo\u3092\u8ffd\u52a0\u3057\u3066\u3001Cluster\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ helm repo add external-secrets https:\/\/charts.external-secrets.io\n~~~\n\"external-secrets\" has been added to your repositories<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ helm install external-secrets \\\n   external-secrets\/external-secrets \\\n    -n external-secrets \\\n    --create-namespace\n~~~\nNAME: external-secrets\nLAST DEPLOYED: Mon Oct 23 08:53:13 2023\nNAMESPACE: external-secrets\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\nNOTES:\nexternal-secrets has been deployed successfully!\n\nIn order to begin using ExternalSecrets, you will need to set up a SecretStore\nor ClusterSecretStore resource (for example, by creating a 'vault' SecretStore).\n\nMore information on the different types of SecretStores and how to configure them\ncan be found in our Github: https:\/\/github.com\/external-secrets\/external-secrets<\/code><\/pre>\n\n\n\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001ESO\u306b\u95a2\u9023\u3059\u308bdeployment\u306a\u3069\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl get all -n external-secrets\nNAME                                                    READY   STATUS    RESTARTS   AGE\npod\/external-secrets-969fb45c8-mqvk8                    1\/1     Running   0          19h\npod\/external-secrets-cert-controller-757f9d86d4-5tlzt   1\/1     Running   0          19h\npod\/external-secrets-webhook-8468995c6f-lz6m5           1\/1     Running   0          19h\n\nNAME                               TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE\nservice\/external-secrets-webhook   ClusterIP   10.116.3.210   &lt;none&gt;        443\/TCP   20h\n\nNAME                                               READY   UP-TO-DATE   AVAILABLE   AGE\ndeployment.apps\/external-secrets                   1\/1     1            1           20h\ndeployment.apps\/external-secrets-cert-controller   1\/1     1            1           20h\ndeployment.apps\/external-secrets-webhook           1\/1     1            1           20h\n\nNAME                                                          DESIRED   CURRENT   READY   AGE\nreplicaset.apps\/external-secrets-969fb45c8                    1         1         1       20h\nreplicaset.apps\/external-secrets-cert-controller-757f9d86d4   1         1         1       20h\nreplicaset.apps\/external-secrets-webhook-8468995c6f           1         1         1       20h<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Service Account\u306e\u4f5c\u6210\/Workload Identity\u306e\u8a2d\u5b9a<\/h3>\n\n\n\n<p>GKE Cluster\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305fESO\u304c\u3001Google Secret Manager\u3067\u4f5c\u6210\u3057\u305f\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306eGoogle Service Account(\u4ee5\u964d\u3001GSA)\u3084Kubernetes Service Account(\u4ee5\u964d\u3001KSA)\u4f5c\u6210\u3068\u3001Workload Identity\u306e\u8a2d\u5b9a\u3092\u5b9f\u65bd\u3057\u307e\u3059\u3002ESO\u306eGoogle Cloud\u3078\u306e\u8a8d\u8a3c\u306f\u3001<a href=\"https:\/\/external-secrets.io\/v0.5.7\/provider-google-secrets-manager\/#gcp-service-account-authentication\" target=\"_blank\" rel=\"noreferrer noopener\">GSA\u306e\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u3092\u767a\u884c\u3057\u3066\u5229\u7528\u3059\u308b\u65b9\u6cd5<\/a>\u3082\u3042\u308a\u307e\u3059\u304c\u3001\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u6d41\u51fa\u306a\u3069\u306e\u30ea\u30b9\u30af\u3082\u3042\u308a\u3001\u3088\u308a\u30bb\u30ad\u30e5\u30a2\u306aWorkload Identity\u3092\u5229\u7528\u3059\u308b\u65b9\u6cd5\u3092\u5b9f\u8df5\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>secret\u3092\u81ea\u52d5\u751f\u6210\u3059\u308bKubrenetes namespace \u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u691c\u8a3c\u3067\u306f\u300cteam1\u300d\u3068\u3044\u3046namespace\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl create ns team1\nnamespace\/team1 created<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>namespace\u300cteam1\u300d\u306b\u7d10\u3065\u304fKSA\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u306eKSA\u306fWorkload Identity\u306e\u8a2d\u5b9a\u306b\u3088\u308a\u3001\u6700\u7d42\u7684\u306bGSA\u300cexternal-secrets-team1@&lt;project_name&gt;.iam.gserviceaccount.com\u300d\u306b\u7d10\u3065\u3051\u3066\u3001Google Cloud\u306e\u8a8d\u8a3c\u3092\u884c\u3046\u60f3\u5b9a\u3067\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ vi serviceaccount.yaml\n~~~\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: external-secrets-team1\n  namespace: team1\n  annotations:\n    iam.gke.io\/gcp-service-account: external-secrets-team1@&lt;project_name&gt;.iam.gserviceaccount.com <\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl apply -f serviceaccount.yaml \nserviceaccount\/external-secrets-team1 created<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6b21\u306b\u3001CloudShell\u3067\u4ee5\u4e0bgcloud\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066GSA\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gcloud iam service-accounts create external-secrets-team1 \\\n    --project=&lt;project_name&gt;\n~~~\nCreated service account &#91;external-secrets].<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f5c\u6210\u3057\u305fGSA\u306b\u3001Google Secret Manager\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306b\u5fc5\u8981\u306a\u30ed\u30fc\u30eb  <code>roles\/secretmanager.secretAccessor<\/code> \u3092\u4ed8\u4e0e\u3057\u307e\u3059\u3002 <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gcloud projects add-iam-policy-binding &lt;project_name&gt; \\\n    --member \"serviceAccount:external-secrets-team1@&lt;project_name&gt;.iam.gserviceaccount.com\" \\\n    --role \"roles\/secretmanager.secretAccessor\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u307e\u305f\u3001GCP \u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u751f\u6210\u306b\u5fc5\u8981\u306a\u30ed\u30fc\u30eb  <code>roles\/iam.serviceAccountTokenCreator<\/code> \u3092\u4ed8\u4e0e\u3057\u307e\u3059\u3002 <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gcloud projects add-iam-policy-binding &lt;project_name&gt; \\\n    --member \"serviceAccount:external-secrets-team1@&lt;project_name&gt;.iam.gserviceaccount.com\" \\\n    --role \"roles\/iam.serviceAccountTokenCreator\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6a29\u9650 <code>iam.serviceAccounts.getIamPolicy<\/code> \u3060\u3051\u3092\u542b\u3080\u30ab\u30b9\u30bf\u30e0\u30ed\u30fc\u30eb <code>getIamPolicy<\/code> \u3092\u4f5c\u6210\u3057\u3066\u3001GSA\u306b\u4ed8\u4e0e\u3057\u307e\u3059\u3002 <code>\u6a29\u9650 <code>iam.serviceAccounts.getIamPolicy<\/code><\/code> \u306fgcloud\u30b3\u30de\u30f3\u30c9\u3067WorkloadIdentity\u8a2d\u5b9a\u6642\u306b\u5fc5\u8981\u3068\u306a\u308b\u6a29\u9650\u3067\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gcloud iam roles create getIamPolicy --project=&lt;project_name&gt; \\\n    --title=getIamPolicy \\\n    --permissions=\"iam.serviceAccounts.getIamPolicy\" --stage=GA<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gcloud projects add-iam-policy-binding &lt;project_name&gt; \\\n    --member \"serviceAccount:external-secrets-team1@&lt;project_name&gt;.iam.gserviceaccount.com\" \\\n    --role \"projects\/&lt;project_name&gt;\/roles\/getIamPolicy\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f5c\u6210\u3057\u305fGSA\u3068KSA\u306eIAM \u30dd\u30ea\u30b7\u30fc\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u5b9f\u65bd\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gcloud iam service-accounts add-iam-policy-binding external-secrets-team1@&lt;project_name&gt;.iam.gserviceaccount.com \\\n    --role roles\/iam.workloadIdentityUser \\\n    --member \"serviceAccount:&lt;project_name&gt;.svc.id.goog&#91;team1\/external-secrets-team1]\" \\\n    --project &lt;project_name&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>KSA\u306b\u3001\u4f5c\u6210\u3057\u305fGSA\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4ed8\u4e0e\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl annotate serviceaccount external-secrets \\\n    --namespace external-secrets \\\n    iam.gke.io\/gcp-service-account=external-secrets-team1@&lt;project_name&gt;.iam.gserviceaccount.com<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">External Secrets \/ Cluster Secret Store \u30ea\u30bd\u30fc\u30b9\u30c7\u30d7\u30ed\u30a4<\/h3>\n\n\n\n<p>ESO\u3092\u52d5\u4f5c\u3055\u308c\u308b\u305f\u3081\u306e\u6e96\u5099\u304c\u6574\u3063\u305f\u306e\u3067\u3001ExternalSecret\u30ea\u30bd\u30fc\u30b9\u3068ClusterSecretStore\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3066\u3001\u5b9f\u969b\u306bsecret\u304c\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ee5\u4e0b\u306eClusterSecretStore\u3092\u7528\u610f\u3057\u3066\u3001\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ vi clustersecretstore.yaml\n~~~\napiVersion: external-secrets.io\/v1beta1\nkind: ClusterSecretStore\nmetadata:\n  name: test-secretstore\nspec:\n  provider:\n    gcpsm:\n      projectID: &lt;project_name&gt;\n      auth:\n        workloadIdentity:\n          clusterLocation: asia-northeast1-b\n          clusterName: &lt;cluster_name&gt;\n          clusterProjectID: &lt;project_name&gt;\n          serviceAccountRef:\n            name: external-secrets-team1\n            namespace: team1<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl apply -f clustersecretstore.yaml \n~~~\nclustersecretstore.external-secrets.io\/test-secretstore created<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ee5\u4e0b\u306eExternalSecrets\u3092\u7528\u610f\u3057\u3066\u3001\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ vi externalsecret.yaml\n~~~\napiVersion: external-secrets.io\/v1beta1\nkind: ExternalSecret\nmetadata:\n  name: test-externalsecret\n  namespace: team1\nspec:\n  refreshInterval: 1h\n  secretStoreRef:\n    kind: ClusterSecretStore\n    name: test-secretstore\n  target:\n    name: test-secret\n    creationPolicy: Owner\n  data:\n  - secretKey: password\n    remoteRef:\n      key: test-secret\n      version: latest<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl apply -f externalsecret.yaml \nexternalsecret.external-secrets.io\/test-externalsecret created<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u554f\u984c\u7121\u304f\u30ea\u30bd\u30fc\u30b9\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3068\u3001\u300cteam1\u300dnamespace\u306bsecret\u304c\u81ea\u52d5\u751f\u6210\u3055\u308c\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl get secret -n team1\nNAME          TYPE     DATA   AGE\ntest-secret   Opaque   1      96m<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>secret \u306e value \u306f base64 \u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30c7\u30b3\u30fc\u30c9\u3057\u3066\u5b9f\u969b\u306evalue\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl get secret test-secret -n team1 -o jsonpath='{.data.password}' | base64 -d\ntest-password<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u307e\u3068\u3081<\/h2>\n\n\n\n<p>\u7c21\u5358\u3067\u3059\u304c Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002\u5b9f\u969b\u306eESO\u5229\u7528\u30a4\u30e1\u30fc\u30b8\u3068\u3057\u3066\u306f\u3001namespace\u6bce\u306b\u30c1\u30fc\u30e0\u3092\u5206\u3051\u3001ExternalSecrets\u30ea\u30bd\u30fc\u30b9\u3084SecretStore\u30ea\u30bd\u30fc\u30b9\u3092\u5404\u30c1\u30fc\u30e0\u3067\u7ba1\u7406\u3055\u305b\u308b(\u4ed6\u306e\u30c1\u30fc\u30e0\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u89e6\u308c\u306a\u3044\u3088\u3046\u306b\u3059\u308b)\u9069\u5207\u306ascoping\u3092\u5b9f\u65bd\u3057\u305f\u3044\u30b1\u30fc\u30b9\u304c\u591a\u3044\u3068\u601d\u3044\u307e\u3059\u306e\u3067\u3001\u6a5f\u4f1a\u304c\u3042\u308c\u3070\u305d\u3061\u3089\u3082\u691c\u8a3c\/\u7d39\u4ecb\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u306f\u3058\u3081\u306b Kubernetes\u3067Secret manifest\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u3001Secret\u306e\u30c7\u30fc\u30bf\u306f\u305f\u3060\u5358\u306bbase64\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u3066\u3044\u308b\u3060\u3051\u306a\u306e\u3067\u3001Kubernetes API\u30b5\u30fc\u30d0\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066Secret\u30ea\u30bd\u30fc\u30b9 [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":67022,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[208,718,122,814],"tags":[],"class_list":["post-66988","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gcp","category-k-ozeki","category-kubernetes","category-cloudnative"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3<\/title>\n<meta name=\"description\" content=\"GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |\u306f\u3058\u3081\u306b Kubernetes\u3067Secret\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\" \/>\n<meta property=\"og:description\" content=\"GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |\u306f\u3058\u3081\u306b Kubernetes\u3067Secret\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988\" \/>\n<meta property=\"og:site_name\" content=\"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/creationline\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-31T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1874\" \/>\n\t<meta property=\"og:image:height\" content=\"1090\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@creationline\" \/>\n<meta name=\"twitter:site\" content=\"@creationline\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/7d923d1c017568a1a5e66d7bb1c8764a\"},\"headline\":\"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager\",\"datePublished\":\"2023-10-31T00:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988\"},\"wordCount\":351,\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/4196d689b96f50ab2e933698c661eb13.png\",\"articleSection\":[\"GCP\",\"Kenneth Ozeki\",\"Kubernetes\",\"\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988\",\"name\":\"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/4196d689b96f50ab2e933698c661eb13.png\",\"datePublished\":\"2023-10-31T00:00:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/7d923d1c017568a1a5e66d7bb1c8764a\"},\"description\":\"GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |\u306f\u3058\u3081\u306b Kubernetes\u3067Secret\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988#primaryimage\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/4196d689b96f50ab2e933698c661eb13.png\",\"contentUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/4196d689b96f50ab2e933698c661eb13.png\",\"width\":1874,\"height\":1090},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\\\/66988#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"HOME\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"GCP\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/gcp\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#website\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/\",\"name\":\"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\",\"description\":\"\u30a2\u30b8\u30e3\u30a4\u30eb\uff06DevOps\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u3001AI\uff06LLM\u306e\u5148\u7aef\u6280\u8853\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/7d923d1c017568a1a5e66d7bb1c8764a\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/avatar.png\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/avatar.png\",\"contentUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/avatar.png\",\"caption\":\"admin\"},\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/author\\\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","description":"GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |\u306f\u3058\u3081\u306b Kubernetes\u3067Secret","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:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988","og_locale":"ja_JP","og_type":"article","og_title":"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","og_description":"GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |\u306f\u3058\u3081\u306b Kubernetes\u3067Secret","og_url":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988","og_site_name":"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","article_publisher":"https:\/\/www.facebook.com\/creationline","article_published_time":"2023-10-31T00:00:00+00:00","og_image":[{"width":1874,"height":1090,"url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13.png","type":"image\/png"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@creationline","twitter_site":"@creationline","twitter_misc":{"\u57f7\u7b46\u8005":"admin","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"4\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988#article","isPartOf":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988"},"author":{"name":"admin","@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/7d923d1c017568a1a5e66d7bb1c8764a"},"headline":"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager","datePublished":"2023-10-31T00:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988"},"wordCount":351,"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13.png","articleSection":["GCP","Kenneth Ozeki","Kubernetes","\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988","url":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988","name":"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","isPartOf":{"@id":"https:\/\/www.creationline.com\/tech-blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988#primaryimage"},"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13.png","datePublished":"2023-10-31T00:00:00+00:00","author":{"@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/7d923d1c017568a1a5e66d7bb1c8764a"},"description":"GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |\u306f\u3058\u3081\u306b Kubernetes\u3067Secret","breadcrumb":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988#primaryimage","url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13.png","contentUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/10\/4196d689b96f50ab2e933698c661eb13.png","width":1874,"height":1090},{"@type":"BreadcrumbList","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp\/66988#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"HOME","item":"https:\/\/www.creationline.com\/tech-blog"},{"@type":"ListItem","position":2,"name":"\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6","item":"https:\/\/www.creationline.com\/tech-blog\/cloudnative"},{"@type":"ListItem","position":3,"name":"GCP","item":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/gcp"},{"@type":"ListItem","position":4,"name":"Google Secret Manager \u3068 External Secrets Operator \u3092\u9023\u643a\u3057\u3066 GKE \u3067 secret \u3092\u81ea\u52d5\u751f\u6210 #external-secrets #GCP #GKE #SecretManager"}]},{"@type":"WebSite","@id":"https:\/\/www.creationline.com\/tech-blog\/#website","url":"https:\/\/www.creationline.com\/tech-blog\/","name":"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","description":"\u30a2\u30b8\u30e3\u30a4\u30eb\uff06DevOps\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u3001AI\uff06LLM\u306e\u5148\u7aef\u6280\u8853","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.creationline.com\/tech-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/7d923d1c017568a1a5e66d7bb1c8764a","name":"admin","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2021\/12\/avatar.png","url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2021\/12\/avatar.png","contentUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2021\/12\/avatar.png","caption":"admin"},"url":"https:\/\/www.creationline.com\/tech-blog\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/66988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/comments?post=66988"}],"version-history":[{"count":15,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/66988\/revisions"}],"predecessor-version":[{"id":67133,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/66988\/revisions\/67133"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media\/67022"}],"wp:attachment":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media?parent=66988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/categories?post=66988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/tags?post=66988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}