{"id":64101,"date":"2023-08-21T13:30:00","date_gmt":"2023-08-21T04:30:00","guid":{"rendered":"https:\/\/www.creationline.com\/?p=64101"},"modified":"2024-02-02T15:44:31","modified_gmt":"2024-02-02T06:44:31","slug":"%e6%ac%a1%e4%b8%96%e4%bb%a3%e3%81%aeiac-oss%e3%80%8ccrossplane%e3%80%8d%e3%81%aequickstart%e3%82%92%e8%a9%a6%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f-crossplane-kubernetes-gcp-2","status":"publish","type":"post","link":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101","title":{"rendered":"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP"},"content":{"rendered":"\n<p>Infrastructure as Code (IaC) \u3068\u805e\u304f\u3068\u3001Terraform\u3084\u3001\u305f\u3073\u305f\u3073\u5f53\u65b9\u3067\u3082\u7d39\u4ecb\u3059\u308b<a href=\"https:\/\/thinkit.co.jp\/article\/21057\">Pulumi<\/a>\u306a\u3069\u304c\u601d\u3044\u6d6e\u304b\u3073\u307e\u3059\u304c\u3001\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u72b6\u614b\u76e3\u8996\u304c\u53ef\u80fd\u3068\u8a00\u308f\u308c\u308b\u3001\u6b21\u4e16\u4ee3\u306eIaC OSS\u300c<a href=\"https:\/\/blog.upbound.io\/introducing-crossplane-open-source-multicloud-control-plane\">Crossplane<\/a>\u300d\u306b\u3064\u3044\u3066\u8abf\u67fb\u3057\u3066\u3001\u5b9f\u969b\u306bGoogleCloud\u306e\u30ea\u30bd\u30fc\u30b9\u306e\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u306e\u3067\u3001\u7c21\u5358\u306b\u3054\u7d39\u4ecb\u3057\u307e\u3059\u3002Crossplane\u521d\u5b66\u8005\u3067\u3042\u308b\u5f53\u65b9\u3067\u3059\u304c\u3001Crossplane\u81ea\u4f53\u3092\u8a73\u3057\u304f\u77e5\u3063\u305f\u304d\u3063\u304b\u3051\u306f 2023\u5e747\u670820\u65e5 ~ 21\u65e5\u306b\u958b\u50ac\u3055\u308c\u305f\u5f0a\u793e\u30a4\u30d9\u30f3\u30c8\u300c<a href=\"https:\/\/note.com\/creationline_rct\/n\/nca17825c6925\">Engineering All Hands<\/a>\u300d\u306eLT\u5927\u4f1a\u3067\u3057\u305f(\u83c5\u91ce\u3055\u3093\u3001\u3054\u7d39\u4ecb\u3044\u305f\u3060\u304d\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3057\u305f)\u3002GoogleCloud\u3067\u3082\u4f3c\u305f\u3088\u3046\u306a\u4ed5\u7d44\u307f\u306b\u300c<a href=\"https:\/\/cloud.google.com\/anthos\/config-management?hl=ja\">Anthos Config Management<\/a>\u300d\u304c\u3042\u308a\u3001\u5f53\u65b9\u304c\u643a\u308f\u308b\u6848\u4ef6\u3067\u3088\u304f\u89e6\u3063\u3066\u3044\u308b\u306e\u3067\u3001Crossplane\u306f\u3069\u3093\u306a\u3082\u306e\u304b\u3068\u3001\u8208\u5473\u3092\u6301\u3063\u305f\u6b21\u7b2c\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Crossplane \u306b\u3064\u3044\u3066<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u6982\u8981<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"224\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/crossplane-icon-1024x224.png\" alt=\"\" class=\"wp-image-65435\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/crossplane-icon-1024x224.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/crossplane-icon-360x79.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/crossplane-icon-768x168.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/crossplane-icon.png 1134w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u7c73\u56fd\u30b7\u30a2\u30c8\u30eb\u306b\u4f1a\u793e\u3092\u6301\u3064 <a href=\"https:\/\/www.upbound.io\/\">Upboud<\/a> \u304c2018\u5e74\u306b\u516c\u958b\u3057\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3067\u3059\u3002\u30b3\u30f3\u30bb\u30d7\u30c8\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u7d39\u4ecb\u3055\u308c\u3066\u3044\u307e\u3059(\u30ab\u30c3\u30b3\u5185\u306fGoogle\u7ffb\u8a33\u3057\u305f\u3082\u306e\u3067\u3059)<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<ul class=\"wp-block-list\">\n<li>Declarative configuration<br>(\u5ba3\u8a00\u7684\u306a\u69cb\u6210)<\/li>\n\n\n\n<li>Unify application and infrastructure configuration and deployment<br>(\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u69cb\u6210\u3068\u5c55\u958b\u3092\u7d71\u5408)<\/li>\n\n\n\n<li>One source of truth for infrastructure configuration and setup<br>(\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u69cb\u6210\u3068\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306e\u305f\u3081\u306e 1 \u3064\u306e\u4fe1\u983c\u3067\u304d\u308b\u60c5\u5831\u6e90)<\/li>\n\n\n\n<li>Automate operational tasks with reconciling controllers<br>(\u8abf\u6574\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u3088\u308b\u904b\u7528\u30bf\u30b9\u30af\u306e\u81ea\u52d5\u5316)<\/li>\n\n\n\n<li>Built with high levels of extensibility<br>(\u9ad8\u5ea6\u306a\u62e1\u5f35\u6027\u3092\u5099\u3048\u305f\u69cb\u7bc9)<\/li>\n\n\n\n<li>A strong separation of concerns<br>(\u61f8\u5ff5\u4e8b\u9805\u306e\u5f37\u529b\u306a\u5206\u96e2)<\/li>\n<\/ul>\n<cite><a href=\"https:\/\/www.crossplane.io\/why-control-planes\">https:\/\/www.crossplane.io\/why-control-planes<\/a><\/cite><\/blockquote>\n\n\n\n<p>\u4ed6\u306eIaC\u30c4\u30fc\u30eb\u3067\u3082\u4f3c\u305f\u3088\u3046\u306a\u30b3\u30f3\u30bb\u30d7\u30c8\u306f\u3088\u304f\u898b\u304b\u3051\u307e\u3059\u304c\u3001\u7279\u306bCrossplane\u3067\u7279\u5fb4\u7684\u306a\u70b9\u3068\u3057\u3066\u300cAutomate operational tasks with reconciling controllers (\u8abf\u6574\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u3088\u308b\u904b\u7528\u30bf\u30b9\u30af\u306e\u81ea\u52d5\u5316)\u300d\u304c\u6319\u3052\u3089\u308c\u307e\u3059\u3002\u8981\u306f\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u72b6\u614b\u3092\u76e3\u8996\u3057\u3066\u3001Crossplane\u3067\u5ba3\u8a00\u3055\u308c\u305f\u72b6\u614b\u3068\u5dee\u5206\u304c\u3042\u308c\u3070\u3001\u90fd\u5ea6\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3092\u4fee\u6b63\u3059\u308b\u6a5f\u80fd\u3092\u6709\u3059\u308b\u3068\u306e\u3053\u3068\u3067\u3059\u3002\u305d\u306e<a href=\"https:\/\/docs.crossplane.io\/v1.13\/concepts\/\">\u5b9f\u88c5<\/a>\u3068\u3057\u3066\u3001<a href=\"https:\/\/github.com\/kubernetes\/design-proposals-archive\/blob\/main\/architecture\/resource-management.md\">Kubernetes Resource Model (KRM)<\/a>\u3092\u5229\u7528\u3057\u3066\u62e1\u5f35\u3057\u305f\u3082\u306e\u304c\u300cCrossplane\u300d\u3068\u306a\u308a\u3001KRM\u306e\u5ba3\u8a00\u578b\u304b\u3064\u5e38\u6642\u8abf\u6574\u578b\u306e\u7279\u6027\u3092Google Cloud\u3084AWS\u306a\u3069\u3001\u8907\u6570\u306e\u30af\u30e9\u30a6\u30c9\u30d7\u30ed\u30d0\u30a4\u30c0\u306bCrossplane\u304c\u6d3b\u7528\u3067\u304d\u307e\u3059\u3002Terraform\u306a\u3069\u3067\u4e00\u5ea6\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u30a4\u30f3\u30d5\u30e9\u304c\u3001\u4f55\u304b\u306e\u62cd\u5b50\u306b\u5b9f\u4f53\u306e\u30ea\u30bd\u30fc\u30b9\u8a2d\u5b9a\u304c\u5909\u66f4\u3055\u308c\u3061\u3083\u3063\u3066\u3001Terraform\u306e\u30b3\u30fc\u30c9\u304c\u6b63\u3057\u3044\u306e\u304b\u3001\u5b9f\u4f53\u306e\u30ea\u30bd\u30fc\u30b9\u8a2d\u5b9a\u304c\u6b63\u3057\u3044\u306e\u304b\u5206\u304b\u3089\u306a\u3044\u30b1\u30fc\u30b9\u304c\u5ea6\u3005\u3042\u308b\u306e\u3067\u3001Crossplane\u3067\u300c\u8abf\u6574\u300d\u3057\u3066\u304f\u308c\u308b\u306e\u306f\u3068\u3066\u3082\u4fbf\u5229\u3067\u3059\u306d\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Crossplane\u306e\u69cb\u6210\u8981\u7d20<\/h3>\n\n\n\n<p>Crossplane\u306e<a href=\"https:\/\/docs.crossplane.io\/v1.13\/concepts\/\">\u30b3\u30f3\u30bb\u30d7\u30c8<\/a>\u3068\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u7d39\u4ecb\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Packages<\/h4>\n\n\n\n<p>Crossplane\u306e\u6a5f\u80fd\u3092\u62e1\u5f35\u3055\u308c\u308b\u3082\u306e\u3067\u3059\u3002Crossplane\u306fKubernetes\u3092\u5229\u7528\u3059\u308b\u306e\u3067\u3001Kubernetes CRDs \u3068 controller \u306e\u30bb\u30c3\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u306d\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Providers<\/h4>\n\n\n\n<p>Google Cloud \/ AWS \/ Azure \u306a\u3069\u306e\u5916\u90e8\u30b5\u30fc\u30d3\u30b9\u306b\u30ea\u30bd\u30fc\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3059\u308b\u305f\u3081\u306e\u3001\u524d\u8ff0\u306ePackage\u3068\u3057\u3066\u63d0\u4f9b\u3055\u308c\u308b\u306e\u304c Provider \u306b\u306a\u308a\u307e\u3059\u3002\u30b5\u30fc\u30d3\u30b9 \u00d7 \u30ea\u30bd\u30fc\u30b9\u7a2e\u5225 \u6bce\u306b Provider \u304c Crossplane \u3067\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u5229\u7528\u3057\u305f\u3044 Provider \u304c\u3042\u308c\u3070\u4ee5\u4e0b\u306e\u3088\u3046\u306bCluster\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059(\u4ee5\u4e0b\u3067\u306fGoogle Cloud\u306eGCS\u306eProvider\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cat &lt;&lt;EOF | kubectl apply -f -\napiVersion: pkg.crossplane.io\/v1\nkind: Provider\nmetadata:\n  name: provider-gcp-storage\nspec:\n  package: xpkg.upbound.io\/upbound\/provider-gcp-storage:v0.35.0\nEOF<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Managed Resources<\/h4>\n\n\n\n<p>\u4f8b\u3048\u3070 Google Cloud \u3060\u3068 <a href=\"https:\/\/marketplace.upbound.io\/providers\/upbound\/provider-gcp\/v0.35.1\/managed-resources\">\u3053\u3061\u3089\u306eAPI\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9<\/a>\u306e\u3088\u3046\u306b\u3001\u5404 Provider (Google Cloud\u306a\u3069) \u306e\u30ea\u30bd\u30fc\u30b9(Compute Engine Instance \/ Google Cloud Storage \u306a\u3069)\u30681\u5bfe1\u3067\u5bfe\u5fdc\u3059\u308b\u306e\u304c\u3053\u306e Managed Resource \u3067\u3001Kubernetes \u306e Custom Resource \u306b\u306a\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070 Storage Bucket \u306e Managed Resource \u3060\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306amanifest\u304cCrossplane\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3053\u3068\u3067\u3001Provider\u3092\u901a\u3058\u3066 Google Cloud \u306b\u30ea\u30bd\u30fc\u30b9\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u3001\u5b9f\u969b\u306bGoogle Cloud\u306b\u30ea\u30bd\u30fc\u30b9\u304c\u4f5c\u6210\u3055\u308c\u308b\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: storage.gcp.upbound.io\/v1beta1\nkind: Bucket\nmetadata:\n  annotations:\n    meta.upbound.io\/example-id: storage\/v1beta1\/notification\n  labels:\n    testing.upbound.io\/example-name: bucket\n  name: bucket-${Rand.RFC1123Subdomain}\nspec:\n  forProvider:\n    location: US<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Composite Resources<\/h4>\n\n\n\n<p>1\u3064\u4ee5\u4e0a\u306eManaged Resource\u304b\u3089\u69cb\u6210\u3055\u308c\u308b\u3082\u306e\u3067\u3001\u4f8b\u3048\u3070\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u95a2\u9023\u3059\u308b\u300cVPC\/Subnet\/Routing\u300d\u306a\u3069\u306e\u30ea\u30bd\u30fc\u30b9\u30921\u3064\u306eComposite Resource\u306b\u307e\u3068\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4ed6\u306eComposite Resource\u3092\u5225\u306eComposite Resource\u306b\u542b\u3081\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u4f8b\u3048\u3070\u4ee5\u4e0b\u3067\u306f VPC\/InternetGateway\/Subnet \u306e Managed Resource \u3068\u3001\u3042\u3089\u304b\u3058\u3081\u5225\u306b\u4f5c\u6210\u3057\u3066\u3044\u308b Composite Resource \u3092\u30011\u3064\u306eComposite Resource \u306b\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: apiextensions.crossplane.io\/v1\nkind: Composition\nspec:\n  resources:\n    - name: vpc-resource\n      base:\n        apiVersion: ec2.aws.upbound.io\/v1beta1\n        kind: VPC\n        # Removed for Brevity\n    - name: gateway-resource\n      base:\n        apiVersion: ec2.aws.upbound.io\/v1beta1\n        kind: InternetGateway\n        # Removed for Brevity\n    - name: subnet-resource\n      base:\n        apiVersion: ec2.aws.upbound.io\/v1beta1\n        kind: Subnet\n        # Removed for Brevity\n  compositeTypeRef:\n    apiVersion: aws.platformref.upbound.io\/v1alpha1\n    kind: XNetwork<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Anthos Config Management\u3068\u306e\u6bd4\u8f03<\/h3>\n\n\n\n<p>Google Cloud \u306b\u3082\u4f3c\u305f\u3088\u3046\u306a\u30b5\u30fc\u30d3\u30b9\u306b\u300c<a href=\"https:\/\/cloud.google.com\/anthos\/config-management?hl=ja\">Anthos Config Management<\/a> (ACM)\u300d\u304c\u3042\u308a\u307e\u3059\u3002\u5f0a\u793e\u306eBlog\u3067\u3082<a href=\"\/tech-blog\/61646\">\u7d39\u4ecb<\/a>\u3057\u3066\u3044\u307e\u3059\u304c\u3001ACM\u306f\u300cPolicy Controller -&gt; \u30dd\u30ea\u30b7\u30fc\u30c1\u30a7\u30c3\u30af\u6a5f\u80fd\u300d\u300cConfig Sync -&gt; GitOps\u6a5f\u80fd\u300d\u300cConfig Controller -&gt; Google Cloud \u30ea\u30bd\u30fc\u30b9\u306e\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u300d\u306e3\u3064\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u304c\u3001Crossplane\u306f\u3053\u306e\u3046\u3061\uff08\u7b46\u8005\u306e\u7406\u89e3\u3068\u3057\u3066\u306f\uff09\u3001\u300cConfig Controller\u300d\u306e\u6a5f\u80fd\u306b\u8a72\u5f53\u3059\u308b\u3068\u601d\u3044\u307e\u3059\u3002\u305f\u3060\u3057\u3001ACM\u306fGoogle Cloud\u306e\u30ea\u30bd\u30fc\u30b9\u306b\u7279\u5316\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u3067\u3001\u5bfe\u3057\u3066Crossplane\u306fGoogle Cloud\u306e\u4ed6\u3001AWS\/Azure\/\u66f4\u306b\u306fTerraform\u306a\u3069\u306eProvider\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u300cGoogle Cloud\u4ee5\u5916\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u3064\u3044\u3066\u3082\u30011\u3064\u306e control plane \u3092\u7528\u610f\u3057\u305f\u3044\u300d\u5834\u5408\u306a\u3069\u306f\u3001Crossplane\u3092\u8a66\u3057\u3066\u307f\u3066\u3082\u826f\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001ACM\u306b\u4f3c\u305f\u3053\u3068\u3092Crossplane\u3067\u5b9f\u65bd\u3059\u308b\u5834\u5408\u3001Policy Controller\u3084Config Sync\u306a\u3069\u306e\u6a5f\u80fd\u306f\u3001\u4ed6\u306eThird-party\u3092\u5229\u7528\u3057\u3066\u81ea\u8eab\u3067\u7d44\u307f\u4e0a\u3052\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001Google Cloud\u306e\u307f\u3067\u306e\u5229\u7528\u3092\u60f3\u5b9a\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u5145\u5b9f\u5ea6\u306a\u3069\u3092\u8003\u616e\u3059\u308b\u3068\u3001\u7d20\u76f4\u306bACM\u3092\u5229\u7528\u3057\u305f\u65b9\u304c\u826f\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Crossplane \u8a66\u3057\u3066\u307f\u305f<\/h2>\n\n\n\n<p>\u4eca\u56de\u306fGoogle Cloud\u306e\u30ea\u30bd\u30fc\u30b9\u306b\u3064\u3044\u3066\u3001Crossplane\u3092\u5229\u7528\u3057\u3066\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3057\u3066\u307f\u307e\u3057\u305f\u3002\u57fa\u672c\u7684\u306a\u6d41\u308c\u306f\u516c\u5f0f\u306e<a href=\"https:\/\/docs.crossplane.io\/v1.13\/getting-started\/provider-gcp\/\">Quickstart<\/a>\u3092\u3082\u3068\u306b\u5b9f\u65bd\u3057\u3066\u3044\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>Google Cloud \u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u53ef\u80fd\u306a\u4e00\u901a\u308a\u306e\u6a29\u9650\u3092\u6709\u3059\u308b (Google Kubernetes Engine Cluster\u306e\u63a5\u7d9a\/pods,secreet\u306e\u4f5c\u6210\/Google Compute Engine Instance\u306e\u4f5c\u6210)<\/li>\n\n\n\n<li>Google Cloud \u3067 Project\/GKE Cluster\u3092\u4f5c\u6210\u6e08\u307f<\/li>\n\n\n\n<li>Kubernetes\u95a2\u9023\u306e\u57fa\u672c\u7684\u306a\u77e5\u8b58 (kubectl\/Helm\u306e\u5229\u7528\u306a\u3069)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u69cb\u6210<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"621\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/71942c8100e51ed0a81126769e6df318-1024x621.png\" alt=\"\" class=\"wp-image-65402\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/71942c8100e51ed0a81126769e6df318-1024x621.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/71942c8100e51ed0a81126769e6df318-360x218.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/71942c8100e51ed0a81126769e6df318-768x466.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/71942c8100e51ed0a81126769e6df318.png 1311w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud \u306e 1\u3064\u306eProject\u306bGKE(Google Kubernetes Engine)\/GCE(Google Compute Engine)\u306a\u3069\u306e\u5fc5\u8981\u306a\u30ea\u30bd\u30fc\u30b9\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059<\/li>\n\n\n\n<li>GKE\u306bCrossplane\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059<\/li>\n\n\n\n<li>GCE\u306eManageed Resource\u3092Crossplane\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u3001\u5b9f\u969b\u306bGCE\u306e\u30ea\u30bd\u30fc\u30b9\u3092Google Cloud\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u624b\u9806<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Crossplane \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CloudShell \u3092\u8d77\u52d5\u3057\u3066\u3001\u5bfe\u8c61\u306eGKE Cluster\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002\u7b46\u8005\u306e\u74b0\u5883\u3067\u306f project: CloudSolution-Blog \u306e GKE Cluster: cs-cluster-1 \u306b\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"310\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/542963d0884ee7298a7bb2e9419ed489-1024x310.png\" alt=\"\" class=\"wp-image-65407\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/542963d0884ee7298a7bb2e9419ed489-1024x310.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/542963d0884ee7298a7bb2e9419ed489-360x109.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/542963d0884ee7298a7bb2e9419ed489-768x232.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/542963d0884ee7298a7bb2e9419ed489-1536x465.png 1536w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/542963d0884ee7298a7bb2e9419ed489.png 1890w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"258\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/da4bc2e46650b6cb4860737edefa1389-1024x258.png\" alt=\"\" class=\"wp-image-65409\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/da4bc2e46650b6cb4860737edefa1389-1024x258.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/da4bc2e46650b6cb4860737edefa1389-360x91.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/da4bc2e46650b6cb4860737edefa1389-768x194.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/da4bc2e46650b6cb4860737edefa1389-1536x387.png 1536w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/da4bc2e46650b6cb4860737edefa1389-2048x516.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crossplane Helm Chart \u30ec\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ helm repo add \\\ncrossplane-stable https:\/\/charts.crossplane.io\/stable\n\n\"crossplane-stable\" has been added to your repositories<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crossplane Helm Chart \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059(\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u524d\u306b\u4e00\u5ea6dry-run\u5b9f\u65bd)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ helm install crossplane crossplane-stable\/crossplane --dry-run --debug --namespace crossplane-system --create-namespace\n\n---\n$ helm install crossplane \\\ncrossplane-stable\/crossplane \\\n--namespace crossplane-system \\\n--create-namespace\n\nNAME: crossplane\nLAST DEPLOYED: Fri Aug 18 08:48:40 2023\nNAMESPACE: crossplane-system\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\nNOTES:\nRelease: crossplane\n\nChart Name: crossplane\nChart Description: Crossplane is an open source Kubernetes add-on that enables platform teams to assemble infrastructure from multiple vendors, and expose higher level self-service APIs for application teams to consume.\nChart Version: 1.13.2\nChart Application Version: 1.13.2\n\nKube Version: v1.27.3-gke.100<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crossplane\u95a2\u9023\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u8d77\u52d5\u3057\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl get pods -n crossplane-system\nNAME                                       READY   STATUS    RESTARTS   AGE\ncrossplane-8697f8cff4-qgbk5                1\/1     Running   0          36s\ncrossplane-rbac-manager-6f8dbd9ffd-g8wjh   1\/1     Running   0          36s<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crossplane\u306b\u95a2\u9023\u3059\u308bKubernetes API\u304c\u65b0\u3057\u304f\u8ffd\u52a0\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl api-resources  | grep crossplane\ncompositeresourcedefinitions      xrd,xrds     apiextensions.crossplane.io\/v1         false        CompositeResourceDefinition\ncompositionrevisions              comprev      apiextensions.crossplane.io\/v1         false        CompositionRevision\ncompositions                      comp         apiextensions.crossplane.io\/v1         false        Composition\nenvironmentconfigs                envcfg       apiextensions.crossplane.io\/v1alpha1   false        EnvironmentConfig\nconfigurationrevisions                         pkg.crossplane.io\/v1                   false        ConfigurationRevision\nconfigurations                                 pkg.crossplane.io\/v1                   false        Configuration\ncontrollerconfigs                              pkg.crossplane.io\/v1alpha1             false        ControllerConfig\nlocks                                          pkg.crossplane.io\/v1beta1              false        Lock\nproviderrevisions                              pkg.crossplane.io\/v1                   false        ProviderRevision\nproviders                                      pkg.crossplane.io\/v1                   false        Provider\nstoreconfigs                                   secrets.crossplane.io\/v1alpha1         false        StoreConfig<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">GCP Provider \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ee5\u4e0b\u306emanifest\u3067GCP Provider\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cat &lt;&lt;EOF | kubectl apply -f -\napiVersion: pkg.crossplane.io\/v1\nkind: Provider\nmetadata:\n  name: provider-gcp-compute\nspec:\n  package: xpkg.upbound.io\/upbound\/provider-gcp-compute:v0.35.1\nEOF\n\nprovider.pkg.crossplane.io\/provider-gcp-compute created<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8a72\u5f53\u306eProvider\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u3061\u306a\u307f\u306b <code>upbound-provider-family-gcp<\/code> \u306fFamily Provider\u3068\u547c\u3070\u308c\u3066\u3044\u3066\u3001Google Cloud\u306e\u8a8d\u8a3c\u3092\u7ba1\u7406\u3059\u308bProvider\u3067\u3001GCE\u4ee5\u5916\u306e\u5168\u3066\u306e(Google Cloud\u95a2\u9023\u306e)Provider\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3082\u3001\u3053\u306eFamily Provider\u304c\u7528\u610f\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl get provider\nNAME                          INSTALLED   HEALTHY   PACKAGE                                                AGE\nprovider-gcp-compute          True        True      xpkg.upbound.io\/upbound\/provider-gcp-compute:v0.35.1   9m39s\nupbound-provider-family-gcp   True        True      xpkg.upbound.io\/upbound\/provider-family-gcp:v0.35.1    23m<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Compute \u30ea\u30bd\u30fc\u30b9\u306b\u95a2\u9023\u3057\u305fKubernetes CRDs\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u306e\u3092\u78ba\u8a8d\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl get crds | grep compute\naddresses.compute.gcp.upbound.io                                 2023-08-18T09:22:32Z\nattacheddisks.compute.gcp.upbound.io                             2023-08-18T09:22:32Z\nautoscalers.compute.gcp.upbound.io                               2023-08-18T09:22:32Z\nbackendbuckets.compute.gcp.upbound.io                            2023-08-18T09:22:32Z\nbackendbucketsignedurlkeys.compute.gcp.upbound.io                2023-08-18T09:22:32Z\nbackendservices.compute.gcp.upbound.io                           2023-08-18T09:22:32Z\nbackendservicesignedurlkeys.compute.gcp.upbound.io               2023-08-18T09:22:32Z\ndiskiammembers.compute.gcp.upbound.io                            2023-08-18T09:22:32Z\ndiskresourcepolicyattachments.compute.gcp.upbound.io             2023-08-18T09:22:32Z\ndisks.compute.gcp.upbound.io                                     2023-08-18T09:22:32Z\n~~~\ninstancegroupmanagers.compute.gcp.upbound.io                     2023-08-18T09:22:33Z\ninstancegroupnamedports.compute.gcp.upbound.io                   2023-08-18T09:22:33Z\ninstancegroups.compute.gcp.upbound.io                            2023-08-18T09:22:33Z\ninstanceiammembers.compute.gcp.upbound.io                        2023-08-18T09:22:33Z\ninstances.compute.gcp.upbound.io                                 2023-08-18T09:22:34Z\ninstancetemplates.compute.gcp.upbound.io                         2023-08-18T09:22:34Z\ninterconnectattachments.compute.gcp.upbound.io                   2023-08-18T09:22:33Z\nmanagedsslcertificates.compute.gcp.upbound.io                    2023-08-18T09:22:33Z<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Kubernetes Secret \u4f5c\u6210<\/h4>\n\n\n\n<p>Provider\u3067Google Cloud\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u3068\u306a\u308b\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u3092Kubernetes Secret\u3068\u3057\u3066\u7528\u610f\u3057\u307e\u3059<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud \u30b3\u30f3\u30bd\u30fc\u30eb\u3067Service Account \u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u7b46\u8005\u306f\u300ccrossplane-sa\u300d\u3068\u3044\u3046\u540d\u524d\u3067Service Account\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"973\" height=\"1024\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/f6aad6fff4353f2b1496df9f2b047835-973x1024.png\" alt=\"\" class=\"wp-image-65417\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/f6aad6fff4353f2b1496df9f2b047835-973x1024.png 973w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/f6aad6fff4353f2b1496df9f2b047835-342x360.png 342w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/f6aad6fff4353f2b1496df9f2b047835-768x808.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/f6aad6fff4353f2b1496df9f2b047835.png 1308w\" sizes=\"auto, (max-width: 973px) 100vw, 973px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud \u30b3\u30f3\u30bd\u30fc\u30eb\u306eIAM\u753b\u9762\u3067\u3001\u4f5c\u6210\u3057\u305fService Account\u306b\u300cCompute \u7ba1\u7406\u8005\u300d\u30ed\u30fc\u30eb\u3092\u4ed8\u4e0e\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"631\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/dba77b23da98912a487b9770ff9ca696-1024x631.png\" alt=\"\" class=\"wp-image-65418\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/dba77b23da98912a487b9770ff9ca696-1024x631.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/dba77b23da98912a487b9770ff9ca696-360x222.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/dba77b23da98912a487b9770ff9ca696-768x473.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/dba77b23da98912a487b9770ff9ca696-1536x947.png 1536w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/dba77b23da98912a487b9770ff9ca696-2048x1263.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Service Account\u306e\u753b\u9762\u306b\u623b\u3063\u3066\u3001\u8a72\u5f53SA\u306e\u8a8d\u8a3c\u9375(json)\u3092\u4f5c\u6210\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"545\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/19277b89b33a50cd668805b882ee4930-1024x545.png\" alt=\"\" class=\"wp-image-65420\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/19277b89b33a50cd668805b882ee4930-1024x545.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/19277b89b33a50cd668805b882ee4930-360x192.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/19277b89b33a50cd668805b882ee4930-768x409.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/19277b89b33a50cd668805b882ee4930-1536x817.png 1536w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/19277b89b33a50cd668805b882ee4930-2048x1090.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud Shell\u306b\u623b\u3063\u3066\u3001\u4f5c\u6210\u3057\u305f\u8a8d\u8a3c\u9375(json)\u3092Cloud Shell\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002\u7b46\u8005\u306f\u5206\u304b\u308a\u3084\u3059\u3044\u3088\u3046\u306b\u3001\u8a8d\u8a3c\u9375\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u300ccrossplane-sa.json\u300d\u306b\u5909\u66f4\u3057\u3066\u304b\u3089\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3057\u305f<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"306\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/e18d1ce8029275a799b45e944f8dc095-1024x306.png\" alt=\"\" class=\"wp-image-65422\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/e18d1ce8029275a799b45e944f8dc095-1024x306.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/e18d1ce8029275a799b45e944f8dc095-360x108.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/e18d1ce8029275a799b45e944f8dc095-768x230.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/e18d1ce8029275a799b45e944f8dc095-1536x459.png 1536w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/e18d1ce8029275a799b45e944f8dc095.png 1646w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u305f\u8a8d\u8a3c\u9375(json)\u3092\u3082\u3068\u306b\u3001\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3067Kubernetes Secret\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 <code>--from-file<\/code> \u306b\u306f\u3001\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u305f\u8a8d\u8a3c\u9375\u306ePath\u3092\u6307\u5b9a\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl create secret \\\ngeneric gcp-secret \\\n-n crossplane-system \\\n--from-file=creds=.\/crossplane-sa.json\n\nsecret\/gcp-secret created<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f5c\u6210\u3057\u305fsecret\u3092\u78ba\u8a8d\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl describe secret gcp-secret -n crossplane-system\nName:         gcp-secret\nNamespace:    crossplane-system\nLabels:       &lt;none&gt;\nAnnotations:  &lt;none&gt;\n\nType:  Opaque\n\nData\n====\ncreds:  2374 bytes<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">ProviderConfig \u4f5c\u6210<\/h4>\n\n\n\n<p>Google Cloud Provider\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u305f\u3081\u306e\u30ea\u30bd\u30fc\u30b9\u300cProviderConfig\u300d\u3092\u4f5c\u6210\u3057\u307e\u3059<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3067 ProviderConfig \u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 <code>spec.projectID<\/code> \u306b\u306f\u3001\u3054\u81ea\u8eab\u304c\u7528\u610f\u3057\u305f Google Cloud Project \u306e ID \u3092\u6307\u5b9a\u3057\u307e\u3059(\u7b46\u8005\u306e\u5834\u5408\u306f <code>cloudsolution-blog<\/code> \u306b\u306a\u308a\u307e\u3059)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cat &lt;&lt;EOF | kubectl apply -f -\napiVersion: gcp.upbound.io\/v1beta1\nkind: ProviderConfig\nmetadata:\n  name: default\nspec:\n  projectID: cloudsolution-blog\n  credentials:\n    source: Secret\n    secretRef:\n      namespace: crossplane-system\n      name: gcp-secret\n      key: creds\nEOF<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Managed Resource \u4f5c\u6210<\/h4>\n\n\n\n<p>\u4e00\u901a\u308a\u306e\u6e96\u5099\u304c\u6574\u3063\u305f\u306e\u3067\u3001\u3044\u3088\u3044\u3088 Managed Resource \u3092\u4f5c\u6210\u3057\u3066\u3001\u5b9f\u969b\u306b\u30ea\u30bd\u30fc\u30b9\u3092Google Cloud\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Compute Engine Instance\u306e<a href=\"https:\/\/marketplace.upbound.io\/providers\/upbound\/provider-gcp-compute\/v0.35.1\/resources\/compute.gcp.upbound.io\/Instance\/v1beta1\">API\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9<\/a>\u3092\u53c2\u8003\u306b\u3001\u4ee5\u4e0bmanifest\u3092\u4f5c\u6210\u3057\u3066\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &lt;&lt;EOF | kubectl create -f -\napiVersion: compute.gcp.upbound.io\/v1beta1\nkind: Instance\nmetadata:\n  annotations:\n    meta.upbound.io\/example-id: compute\/v1beta1\/testinstance\n  labels:\n    testing.upbound.io\/example-name: test-instance\n  name: test-instance\nspec:\n  forProvider:\n    bootDisk:\n      - initializeParams:\n          - image: debian-cloud\/debian-11\n    machineType: e2-medium\n    networkInterface:\n      - network: default\n    zone: asia-northeast1-a\nEOF<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kubernetes\u5074\u3067\u30ea\u30bd\u30fc\u30b9\u304c\u4f5c\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl get Instance\nNAME            READY   SYNCED   EXTERNAL-NAME   AGE\ntest-instance   True    True     test-instance   33s<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud \u306e\u30b3\u30f3\u30bd\u30fc\u30eb\u753b\u9762\u3067\u3001\u8a72\u5f53\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u7121\u4e8b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"890\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/cbf9c47aa801162df1ab3ac4010769cc-1024x890.png\" alt=\"\" class=\"wp-image-65426\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/cbf9c47aa801162df1ab3ac4010769cc-1024x890.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/cbf9c47aa801162df1ab3ac4010769cc-360x313.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/cbf9c47aa801162df1ab3ac4010769cc-768x668.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/cbf9c47aa801162df1ab3ac4010769cc-1536x1335.png 1536w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/cbf9c47aa801162df1ab3ac4010769cc.png 1592w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Crossplane\u306b\u3088\u308b\u30ea\u30bd\u30fc\u30b9\u81ea\u52d5\u8abf\u6574\u78ba\u8a8d<\/h4>\n\n\n\n<p>\u300c\u8981\u306f\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u72b6\u614b\u3092\u76e3\u8996\u3057\u3066\u3001Crossplane\u3067\u5ba3\u8a00\u3055\u308c\u305f\u72b6\u614b\u3068\u5dee\u5206\u304c\u3042\u308c\u3070\u3001\u90fd\u5ea6\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3092\u4fee\u6b63\u3059\u308b\u6a5f\u80fd\u3092\u6709\u3059\u308b\u300d\u3068\u306e\u3053\u3068\u3067\u3001\u8a66\u3057\u306bGoogle Cloud\u5074\u3067Crossplane\u3067\u4f5c\u6210\u3057\u305f\u30ea\u30bd\u30fc\u30b9\u306e\u8a2d\u5b9a\u3092\u5909\u3048\u3066\u307f\u3066\u3001Crossplane\u3067\u81ea\u52d5\u4fee\u6b63\u3055\u308c\u308b\u304b\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud \u30b3\u30f3\u30bd\u30fc\u30eb\u3067\u8a72\u5f53\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u300c\u505c\u6b62\u300d\u3057\u3066\u304b\u3089\u3001\u300c\u7de8\u96c6\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"472\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/1d8ca1a461f09e8fcf84bae9b6c0e041-1024x472.png\" alt=\"\" class=\"wp-image-65427\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/1d8ca1a461f09e8fcf84bae9b6c0e041-1024x472.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/1d8ca1a461f09e8fcf84bae9b6c0e041-360x166.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/1d8ca1a461f09e8fcf84bae9b6c0e041-768x354.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/1d8ca1a461f09e8fcf84bae9b6c0e041.png 1150w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30de\u30b7\u30f3\u30bf\u30a4\u30d7\u3092\u300cE2\u300d\u304b\u3089\u300cN2\u300d\u306b\u4e0a\u3052\u3066\u3001\u4fdd\u5b58\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"664\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/065a5607d882efefd659441d25eb893c-1024x664.png\" alt=\"\" class=\"wp-image-65430\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/065a5607d882efefd659441d25eb893c-1024x664.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/065a5607d882efefd659441d25eb893c-360x233.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/065a5607d882efefd659441d25eb893c-768x498.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/065a5607d882efefd659441d25eb893c.png 1250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4fdd\u5b58\u5f8c\u3001\u6570\u5206(\u7b46\u8005\u306e\u74b0\u5883\u3060\u3068 5\u5206\u304f\u3089\u3044)\u5f85\u3064\u3068\u3001\u300cN2\u300d\u304b\u3089\u81ea\u52d5\u7684\u306b\u300cE2\u300d\u306b\u623b\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"534\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/2cc41a544aff21f63a12b7feb17dd58a-1024x534.png\" alt=\"\" class=\"wp-image-65431\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/2cc41a544aff21f63a12b7feb17dd58a-1024x534.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/2cc41a544aff21f63a12b7feb17dd58a-360x188.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/2cc41a544aff21f63a12b7feb17dd58a-768x401.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/2cc41a544aff21f63a12b7feb17dd58a.png 1142w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u2193<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"434\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/011b43f27f30b98c86ed9e0776db6e91-1024x434.png\" alt=\"\" class=\"wp-image-65432\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/011b43f27f30b98c86ed9e0776db6e91-1024x434.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/011b43f27f30b98c86ed9e0776db6e91-360x153.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/011b43f27f30b98c86ed9e0776db6e91-768x326.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/011b43f27f30b98c86ed9e0776db6e91.png 1424w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u81ea\u52d5\u8abf\u6574\u3082\u7121\u4e8b\u884c\u308f\u308c\u3066\u3044\u305d\u3046\u3067\u3059\u306d\uff08\u3061\u306a\u307f\u306b\u3001\u4e00\u90e8\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u81ea\u52d5\u8abf\u6574\u3055\u308c\u306a\u3044\u30b1\u30fc\u30b9\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff09<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Managed Resource \u524a\u9664<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud Shell\u306b\u623b\u308a\u3001\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3067\u30ea\u30bd\u30fc\u30b9\u3092\u524a\u9664\u3057\u307e\u3059\u3002 <code>--selector<\/code> \u306b\u30ea\u30bd\u30fc\u30b9\u306e\u30e9\u30d9\u30eb\u3092\u6307\u5b9a\u3057\u3066\u524a\u9664\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ kubectl get Instance\nNAME            READY   SYNCED   EXTERNAL-NAME   AGE\ntest-instance   True    True     test-instance   27m\n\n---\n$ kubectl delete Instance test-instance\ninstance.compute.gcp.upbound.io \"test-instance\" deleted<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud \u30b3\u30f3\u30bd\u30fc\u30eb\u753b\u9762\u306b\u623b\u308b\u3068\u3001\u8a72\u5f53\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u524a\u9664\u3055\u308c\u3066\u3044\u308b\u306e\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"215\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/a4cb4cc81e3d27a9f7a89793adeb215c-1024x215.png\" alt=\"\" class=\"wp-image-65433\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/a4cb4cc81e3d27a9f7a89793adeb215c-1024x215.png 1024w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/a4cb4cc81e3d27a9f7a89793adeb215c-360x76.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/a4cb4cc81e3d27a9f7a89793adeb215c-768x161.png 768w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/a4cb4cc81e3d27a9f7a89793adeb215c-1536x323.png 1536w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/a4cb4cc81e3d27a9f7a89793adeb215c-2048x430.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u611f\u60f3<\/h3>\n\n\n\n<p>\u4eca\u56de\u306fGoogle Cloud\u30ea\u30bd\u30fc\u30b9\u306eCrossplane\u306b\u3088\u308b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3092\u8a66\u3057\u3066\u307f\u305f\u306e\u3067\u3059\u304c\u3001Crossplane\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304b\u3089\u5b9f\u969b\u306e\u30ea\u30bd\u30fc\u30b9\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u307e\u3067\u3042\u307e\u308a\u624b\u9593\u304c\u639b\u304b\u3089\u305a\u3001\u30ea\u30bd\u30fc\u30b9\u306e\u5ba3\u8a00\u3082yaml\u3067\u8a18\u8f09\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306e\u3067\u3001\u30e4\u30e0\u30e9\u30fc?(yaml\u4f7f\u3044)\u306e\u65b9\u306b\u3068\u3063\u3066\u3082\u5b09\u3057\u3044\u30dd\u30a4\u30f3\u30c8\u3067\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u304b\uff1fIaC\u306b\u3064\u3044\u3066\u306fTerraform\u304c\u6d78\u900f\u3057\u3066\u3044\u308b\u6628\u4eca\u3067\u3059\u304c\u3001<a href=\"https:\/\/opentf.org\/\">\u30e9\u30a4\u30bb\u30f3\u30b9\u5909\u66f4\u306e\u4ef6<\/a>\u3082\u3042\u308a\u3001\u3053\u306e\u6a5f\u4f1a\u306b\u3001\u8272\u3005\u306aIaC\u30c4\u30fc\u30eb\u3092\u8a66\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3057\u305f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Infrastructure as Code (IaC) \u3068\u805e\u304f\u3068\u3001Terraform\u3084\u3001\u305f\u3073\u305f\u3073\u5f53\u65b9\u3067\u3082\u7d39\u4ecb\u3059\u308bPulumi\u306a\u3069\u304c\u601d\u3044\u6d6e\u304b\u3073\u307e\u3059\u304c\u3001\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u72b6\u614b\u76e3\u8996\u304c\u53ef\u80fd\u3068\u8a00\u308f\u308c\u308b\u3001\u6b21\u4e16\u4ee3\u306eIaC OSS [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":65450,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[849,855,208,718,122,814],"tags":[],"class_list":["post-64101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blogchallenge","category-crossplane","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>\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3<\/title>\n<meta name=\"description\" content=\"BlogChallenge, Crossplane, GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |Infrastructure as Code (IaC)\" \/>\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\/blogchallenge\/64101\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\" \/>\n<meta property=\"og:description\" content=\"BlogChallenge, Crossplane, GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |Infrastructure as Code (IaC)\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101\" \/>\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-08-21T04:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-02T06:44:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/c4b618cc256019e3badad077d6608aa5.png\" \/>\n\t<meta property=\"og:image:width\" content=\"483\" \/>\n\t<meta property=\"og:image:height\" content=\"476\" \/>\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=\"6\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\\\/blogchallenge\\\/64101#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/7d923d1c017568a1a5e66d7bb1c8764a\"},\"headline\":\"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP\",\"datePublished\":\"2023-08-21T04:30:00+00:00\",\"dateModified\":\"2024-02-02T06:44:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101\"},\"wordCount\":395,\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/c4b618cc256019e3badad077d6608aa5.png\",\"articleSection\":[\"BlogChallenge\",\"Crossplane\",\"GCP\",\"Kenneth Ozeki\",\"Kubernetes\",\"\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101\",\"name\":\"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP - 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\\\/blogchallenge\\\/64101#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/c4b618cc256019e3badad077d6608aa5.png\",\"datePublished\":\"2023-08-21T04:30:00+00:00\",\"dateModified\":\"2024-02-02T06:44:31+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/7d923d1c017568a1a5e66d7bb1c8764a\"},\"description\":\"BlogChallenge, Crossplane, GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |Infrastructure as Code (IaC)\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101#primaryimage\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/c4b618cc256019e3badad077d6608aa5.png\",\"contentUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/c4b618cc256019e3badad077d6608aa5.png\",\"width\":483,\"height\":476},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\\\/64101#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"HOME\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"BlogChallenge\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/blogchallenge\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP\"}]},{\"@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":"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","description":"BlogChallenge, Crossplane, GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |Infrastructure as Code (IaC)","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\/blogchallenge\/64101","og_locale":"ja_JP","og_type":"article","og_title":"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","og_description":"BlogChallenge, Crossplane, GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |Infrastructure as Code (IaC)","og_url":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101","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-08-21T04:30:00+00:00","article_modified_time":"2024-02-02T06:44:31+00:00","og_image":[{"width":483,"height":476,"url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/c4b618cc256019e3badad077d6608aa5.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":"6\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101#article","isPartOf":{"@id":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101"},"author":{"name":"admin","@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/7d923d1c017568a1a5e66d7bb1c8764a"},"headline":"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP","datePublished":"2023-08-21T04:30:00+00:00","dateModified":"2024-02-02T06:44:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101"},"wordCount":395,"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/c4b618cc256019e3badad077d6608aa5.png","articleSection":["BlogChallenge","Crossplane","GCP","Kenneth Ozeki","Kubernetes","\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101","url":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101","name":"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP - 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\/blogchallenge\/64101#primaryimage"},"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/c4b618cc256019e3badad077d6608aa5.png","datePublished":"2023-08-21T04:30:00+00:00","dateModified":"2024-02-02T06:44:31+00:00","author":{"@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/7d923d1c017568a1a5e66d7bb1c8764a"},"description":"BlogChallenge, Crossplane, GCP, Kenneth Ozeki, Kubernetes, \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6 |Infrastructure as Code (IaC)","breadcrumb":{"@id":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101#primaryimage","url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/c4b618cc256019e3badad077d6608aa5.png","contentUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/c4b618cc256019e3badad077d6608aa5.png","width":483,"height":476},{"@type":"BreadcrumbList","@id":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge\/64101#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"HOME","item":"https:\/\/www.creationline.com\/tech-blog"},{"@type":"ListItem","position":2,"name":"BlogChallenge","item":"https:\/\/www.creationline.com\/tech-blog\/blogchallenge"},{"@type":"ListItem","position":3,"name":"\u6b21\u4e16\u4ee3\u306eIaC OSS\u300cCrossplane\u300d\u306eQuickStart\u3092\u8a66\u3057\u3066\u307f\u305f #Crossplane #Kubernetes #GCP"}]},{"@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\/64101","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=64101"}],"version-history":[{"count":37,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/64101\/revisions"}],"predecessor-version":[{"id":66766,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/64101\/revisions\/66766"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media\/65450"}],"wp:attachment":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media?parent=64101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/categories?post=64101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/tags?post=64101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}