{"id":1267,"date":"2025-05-12T06:22:14","date_gmt":"2025-05-11T21:22:14","guid":{"rendered":"https:\/\/itstudy365.com\/blog\/?p=1267"},"modified":"2025-05-26T17:59:26","modified_gmt":"2025-05-26T08:59:26","slug":"kubernetes-learning-%e7%ac%ac8%e7%ab%a0%ef%bc%9aservice%e3%81%a8ingress-%ef%bd%9e%e3%82%af%e3%83%a9%e3%82%b9%e3%82%bf%e5%a4%96%e3%81%a8%e3%81%ae%e6%a9%8b%e6%b8%a1%e3%81%97%ef%bd%9e","status":"publish","type":"post","link":"https:\/\/itstudy365.com\/blog\/2025\/05\/12\/kubernetes-learning-%e7%ac%ac8%e7%ab%a0%ef%bc%9aservice%e3%81%a8ingress-%ef%bd%9e%e3%82%af%e3%83%a9%e3%82%b9%e3%82%bf%e5%a4%96%e3%81%a8%e3%81%ae%e6%a9%8b%e6%b8%a1%e3%81%97%ef%bd%9e\/","title":{"rendered":"Kubernetes Learning \u7b2c8\u7ae0\uff1aService\u3068Ingress \uff5e\u30af\u30e9\u30b9\u30bf\u5916\u3068\u306e\u6a4b\u6e21\u3057\uff5e"},"content":{"rendered":"\n<button id=\"bb1\" type=\"button\" value=\"Play\" class=\"responsivevoice-button\" title=\"ResponsiveVoice Tap to Start\/Stop Speech\"><span>&#128266; Play<\/span><\/button>\n        <script>\n            bb1.onclick = function(){\n                if(responsiveVoice.isPlaying()){\n                    responsiveVoice.cancel();\n                }else{\n                    responsiveVoice.speak(\"Kubernetes\u3067\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092Pod\u3068\u3057\u3066\u52d5\u304b\u3057\u307e\u3059\u304c\u3001Pod\u306f\u4e00\u6642\u7684\u306a\u5b58\u5728\u3067IP\u30a2\u30c9\u30ec\u30b9\u3082\u56fa\u5b9a\u3055\u308c\u307e\u305b\u3093\u3002 \u305d\u306e\u305f\u3081\u3001\u300c\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u4ed5\u7d44\u307f\u300d\u304c\u5fc5\u8981\u3067\u3059\u3002\u305d\u308c\u304c Service \u3068 Ingress \u3067\u3059\u3002 \ud83d\udd39 Service\uff1aPod\u3078\u306e\u5b89\u5b9a\u3057\u305f\u30a2\u30af\u30bb\u30b9\u53e3\u3092\u63d0\u4f9b\u3059\u308b Service\u306f\u300c\u52d5\u7684\u306aPod\u306b\u5bfe\u3059\u308b\u56fa\u5b9a\u7684\u306a\u30a2\u30af\u30bb\u30b9\u624b\u6bb5\u300d\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u4e3b\u306a\u5f79\u5272\uff1a Pod\u306eIP\u304c\u5909\u308f\u3063\u3066\u3082\u3001Service\u7d4c\u7531\u306a\u3089\u5e38\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b \u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b7\u30f3\u30b0\u3092\u884c\u3044\u3001\u8907\u6570Pod\u306b\u632f\u308a\u5206\u3051\u308b \u30af\u30e9\u30b9\u30bf\u5185\/\u5916\u304b\u3089\u306e\u30a2\u30af\u30bb\u30b9\u3092\u67d4\u8edf\u306b\u5236\u5fa1\u3067\u304d\u308b \u4e3b\u306a\u7a2e\u985e \u7a2e\u985e\u7528\u9014ClusterIP\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09\u30af\u30e9\u30b9\u30bf\u5185\u90e8\u3067\u306e\u307f\u30a2\u30af\u30bb\u30b9\u53ef\u80fdNodePort\u30ce\u30fc\u30c9\u306e\u56fa\u5b9a\u30dd\u30fc\u30c8\u3092\u516c\u958b\u3057\u3001\u5916\u90e8\u30a2\u30af\u30bb\u30b9\u3092\u53ef\u80fd\u306bLoadBalancer\u30af\u30e9\u30a6\u30c9\u74b0\u5883\u3067\u5916\u90e8LB\u3092\u81ea\u52d5\u4f5c\u6210\uff08GCP\/AWS\u306a\u3069\uff09ExternalName\u5916\u90e8\u30c9\u30e1\u30a4\u30f3\u306b\u540d\u524d\u89e3\u6c7a\uff08\u5c11\u3057\u7279\u6b8a\u306a\u30b1\u30fc\u30b9\uff09 \u4f8b\uff1aNodePort\u578b Service \u306e\u5b9a\u7fa9 apiVersion: v1 kind: Service metadata: name: my-service spec: type: NodePort selector: app: my-app ports: - port: 80 targetPort: 8080 nodePort: 30080 selector: Service\u304c\u3069\u306ePod\u306b\u6d41\u3059\u304b\u3092\u6c7a\u5b9a\uff08\u30e9\u30d9\u30eb\u306b\u3088\u308a\uff09 nodePort: \u30db\u30b9\u30c8\u30de\u30b7\u30f3\u306e\u30dd\u30fc\u30c8\u3092\u958b\u3051\u3066\u3001\u5916\u90e8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b curl http:\/\/less thanNodeIPgreater than:30080\/ \ud83d\udd38 Ingress\uff1aHTTP(S)\u5411\u3051\u306e\u7d71\u5408\u7684\u306a\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0 Service\u306f\u30dd\u30fc\u30c8\u5358\u4f4d\u3067\u306e\u516c\u958b\u3067\u3059\u304c\u3001\u8907\u6570\u306e\u30a2\u30d7\u30ea\u3092\u4e00\u3064\u306e\u5165\u53e3\u3067\u3055\u3070\u304f\u5834\u5408\u3001**Ingress\uff08HTTP\u30eb\u30fc\u30bf\u30fc\uff09**\u304c\u4fbf\u5229\u3067\u3059\u3002 Ingress\u306f \u300c\u30af\u30e9\u30b9\u30bf\u306e\u7384\u95a2\uff08HTTP\u7528\uff09\u300d\u3068\u3057\u3066\u3001URL\u3084\u30db\u30b9\u30c8\u540d\u3054\u3068\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3057\u307e\u3059\u3002 \u30a4\u30e1\u30fc\u30b8\u56f3 \u30e6\u30fc\u30b6\u30fc \u2193 [Ingress] -- \/api \u2192 Service A \u2193 -- \/web \u2192 Service B \u4f8b\uff1a\u7c21\u5358\u306aIngress\u5b9a\u7fa9\uff08Nginx Ingress Controller\u304c\u524d\u63d0\uff09 apiVersion: networking.k8s.io\/v1 kind: Ingress metadata: name: sample-ingress spec: rules: - host: example.com http: paths: - path: \/app pathType: Prefix backend: service: name: my-service port: number: 80 \/app \u3068\u3044\u3046\u30d1\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c my-service \u306b\u6d41\u308c\u307e\u3059 Ingress\u5358\u4f53\u3067\u306f\u6a5f\u80fd\u305b\u305a\u3001Ingress Controller\uff08Nginx\u306a\u3069\uff09\u304c\u5fc5\u8981 \ud83d\udcca Service\u3068Ingress\u306e\u4f7f\u3044\u5206\u3051 \u7279\u5fb4ServiceIngress\u5bfe\u8c61\u30d7\u30ed\u30c8\u30b3\u30ebTCP\/UDP \u5168\u822cHTTP\/HTTPS\u5c02\u7528\u30a2\u30af\u30bb\u30b9\u5358\u4f4d\u30dd\u30fc\u30c8\u5358\u4f4d\u30d1\u30b9\/\u30db\u30b9\u30c8\u5358\u4f4d\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b7\u30f3\u30b0\u53ef\u80fd\uff08Pod\u9593\uff09\u53ef\u80fd\uff08\u8907\u6570\u30b5\u30fc\u30d3\u30b9\u3078\uff09\u5916\u90e8\u516c\u958b\u306e\u624b\u6bb5NodePort \/ LoadBalancer\u306a\u3069\u5916\u90e8URL\u3092\u4f7f\u3063\u305f\u67d4\u8edf\u306a\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u5229\u7528\u7528\u9014\u5358\u4f53\u30a2\u30d7\u30ea\u30fbAPI\u516c\u958b\u306a\u3069\u8907\u6570\u30a2\u30d7\u30ea\u306e\u7d71\u5408\u7684\u306a\u516c\u958b\u306b\u6700\u9069 \ud83d\udca1 \u307e\u3068\u3081 Service\u306f\u300cPod\u306b\u5bfe\u3059\u308b\u5b89\u5b9a\u3057\u305f\u30a2\u30af\u30bb\u30b9\u53e3\u300d\u2192 \u5358\u4f53\u3067\u306e\u30a2\u30d7\u30ea\u516c\u958b\u3001Pod\u7ba1\u7406\u306b\u306f\u5fc5\u9808 Ingress\u306f\u300cHTTP\u30a2\u30af\u30bb\u30b9\u306e\u30eb\u30fc\u30bf\u30fc\u300d\u2192 1\u3064\u306e\u30c9\u30e1\u30a4\u30f3\u3067\u8907\u6570\u30a2\u30d7\u30ea\u3092\u51fa\u3057\u5206\u3051\u305f\u3044\u3068\u304d\u306b\u6700\u9069\", \"Japanese Female\");\n                }\n            };\n        <\/script>\n    <\/p>\n\n\n\n<p>Kubernetes\u3067\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092Pod\u3068\u3057\u3066\u52d5\u304b\u3057\u307e\u3059\u304c\u3001<strong>Pod\u306f\u4e00\u6642\u7684\u306a\u5b58\u5728\u3067IP\u30a2\u30c9\u30ec\u30b9\u3082\u56fa\u5b9a\u3055\u308c\u307e\u305b\u3093\u3002<\/strong><\/p>\n\n\n\n<p>\u305d\u306e\u305f\u3081\u3001\u300c\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u4ed5\u7d44\u307f\u300d\u304c\u5fc5\u8981\u3067\u3059\u3002<br>\u305d\u308c\u304c <strong>Service<\/strong> \u3068 <strong>Ingress<\/strong> \u3067\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 Service\uff1aPod\u3078\u306e\u5b89\u5b9a\u3057\u305f\u30a2\u30af\u30bb\u30b9\u53e3\u3092\u63d0\u4f9b\u3059\u308b<\/h3>\n\n\n\n<p>Service\u306f\u300c\u52d5\u7684\u306aPod\u306b\u5bfe\u3059\u308b<strong>\u56fa\u5b9a\u7684\u306a\u30a2\u30af\u30bb\u30b9\u624b\u6bb5<\/strong>\u300d\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4e3b\u306a\u5f79\u5272\uff1a<\/p>\n\n\n\n<ul>\n<li>Pod\u306eIP\u304c\u5909\u308f\u3063\u3066\u3082\u3001Service\u7d4c\u7531\u306a\u3089\u5e38\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b<\/li>\n\n\n\n<li>\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b7\u30f3\u30b0\u3092\u884c\u3044\u3001\u8907\u6570Pod\u306b\u632f\u308a\u5206\u3051\u308b<\/li>\n\n\n\n<li>\u30af\u30e9\u30b9\u30bf\u5185\/\u5916\u304b\u3089\u306e\u30a2\u30af\u30bb\u30b9\u3092\u67d4\u8edf\u306b\u5236\u5fa1\u3067\u304d\u308b<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">\u4e3b\u306a\u7a2e\u985e<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u7a2e\u985e<\/th><th>\u7528\u9014<\/th><\/tr><\/thead><tbody><tr><td>ClusterIP\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09<\/td><td>\u30af\u30e9\u30b9\u30bf\u5185\u90e8\u3067\u306e\u307f\u30a2\u30af\u30bb\u30b9\u53ef\u80fd<\/td><\/tr><tr><td>NodePort<\/td><td>\u30ce\u30fc\u30c9\u306e\u56fa\u5b9a\u30dd\u30fc\u30c8\u3092\u516c\u958b\u3057\u3001\u5916\u90e8\u30a2\u30af\u30bb\u30b9\u3092\u53ef\u80fd\u306b<\/td><\/tr><tr><td>LoadBalancer<\/td><td>\u30af\u30e9\u30a6\u30c9\u74b0\u5883\u3067\u5916\u90e8LB\u3092\u81ea\u52d5\u4f5c\u6210\uff08GCP\/AWS\u306a\u3069\uff09<\/td><\/tr><tr><td>ExternalName<\/td><td>\u5916\u90e8\u30c9\u30e1\u30a4\u30f3\u306b\u540d\u524d\u89e3\u6c7a\uff08\u5c11\u3057\u7279\u6b8a\u306a\u30b1\u30fc\u30b9\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">\u4f8b\uff1aNodePort\u578b Service \u306e\u5b9a\u7fa9<\/h4>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\" data-show-lang=\"0\"><code>apiVersion: v1\nkind: Service\nmetadata:\n  name: my-service\nspec:\n  type: NodePort\n  selector:\n    app: my-app\n  ports:\n    - port: 80\n      targetPort: 8080\n      nodePort: 30080<\/code><\/pre><\/div>\n\n\n\n<p><code>selector<\/code>: Service\u304c\u3069\u306ePod\u306b\u6d41\u3059\u304b\u3092\u6c7a\u5b9a\uff08\u30e9\u30d9\u30eb\u306b\u3088\u308a\uff09<\/p>\n\n\n\n<p><code>nodePort<\/code>: \u30db\u30b9\u30c8\u30de\u30b7\u30f3\u306e\u30dd\u30fc\u30c8\u3092\u958b\u3051\u3066\u3001\u5916\u90e8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\" data-show-lang=\"0\"><code>curl http:\/\/&lt;NodeIP&gt;:30080\/<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd38 Ingress\uff1aHTTP(S)\u5411\u3051\u306e\u7d71\u5408\u7684\u306a\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0<\/h3>\n\n\n\n<p>Service\u306f\u30dd\u30fc\u30c8\u5358\u4f4d\u3067\u306e\u516c\u958b\u3067\u3059\u304c\u3001\u8907\u6570\u306e\u30a2\u30d7\u30ea\u3092\u4e00\u3064\u306e\u5165\u53e3\u3067\u3055\u3070\u304f\u5834\u5408\u3001**Ingress\uff08HTTP\u30eb\u30fc\u30bf\u30fc\uff09**\u304c\u4fbf\u5229\u3067\u3059\u3002<\/p>\n\n\n\n<p>Ingress\u306f <strong>\u300c\u30af\u30e9\u30b9\u30bf\u306e\u7384\u95a2\uff08HTTP\u7528\uff09\u300d\u3068\u3057\u3066\u3001URL\u3084\u30db\u30b9\u30c8\u540d\u3054\u3068\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0<\/strong>\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u30a4\u30e1\u30fc\u30b8\u56f3<\/h4>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-css\" data-lang=\"CSS\" data-show-lang=\"0\"><code>\u30e6\u30fc\u30b6\u30fc\n   \u2193\n [Ingress] -- \/api \u2192 Service A\n     \u2193\n         -- \/web \u2192 Service B<\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">\u4f8b\uff1a\u7c21\u5358\u306aIngress\u5b9a\u7fa9\uff08Nginx Ingress Controller\u304c\u524d\u63d0\uff09<\/h4>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\" data-show-lang=\"0\"><code>apiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: sample-ingress\nspec:\n  rules:\n    - host: example.com\n      http:\n        paths:\n          - path: \/app\n            pathType: Prefix\n            backend:\n              service:\n                name: my-service\n                port:\n                  number: 80<\/code><\/pre><\/div>\n\n\n\n<ul>\n<li><code>\/app<\/code> \u3068\u3044\u3046\u30d1\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c <code>my-service<\/code> \u306b\u6d41\u308c\u307e\u3059<\/li>\n\n\n\n<li>Ingress\u5358\u4f53\u3067\u306f\u6a5f\u80fd\u305b\u305a\u3001<strong>Ingress Controller\uff08Nginx\u306a\u3069\uff09\u304c\u5fc5\u8981<\/strong><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcca Service\u3068Ingress\u306e\u4f7f\u3044\u5206\u3051<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u7279\u5fb4<\/th><th>Service<\/th><th>Ingress<\/th><\/tr><\/thead><tbody><tr><td>\u5bfe\u8c61\u30d7\u30ed\u30c8\u30b3\u30eb<\/td><td>TCP\/UDP \u5168\u822c<\/td><td>HTTP\/HTTPS\u5c02\u7528<\/td><\/tr><tr><td>\u30a2\u30af\u30bb\u30b9\u5358\u4f4d<\/td><td>\u30dd\u30fc\u30c8\u5358\u4f4d<\/td><td>\u30d1\u30b9\/\u30db\u30b9\u30c8\u5358\u4f4d<\/td><\/tr><tr><td>\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b7\u30f3\u30b0<\/td><td>\u53ef\u80fd\uff08Pod\u9593\uff09<\/td><td>\u53ef\u80fd\uff08\u8907\u6570\u30b5\u30fc\u30d3\u30b9\u3078\uff09<\/td><\/tr><tr><td>\u5916\u90e8\u516c\u958b\u306e\u624b\u6bb5<\/td><td>NodePort \/ LoadBalancer\u306a\u3069<\/td><td>\u5916\u90e8URL\u3092\u4f7f\u3063\u305f\u67d4\u8edf\u306a\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0<\/td><\/tr><tr><td>\u5229\u7528\u7528\u9014<\/td><td>\u5358\u4f53\u30a2\u30d7\u30ea\u30fbAPI\u516c\u958b\u306a\u3069<\/td><td>\u8907\u6570\u30a2\u30d7\u30ea\u306e\u7d71\u5408\u7684\u306a\u516c\u958b\u306b\u6700\u9069<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udca1 \u307e\u3068\u3081<\/h3>\n\n\n\n<ul>\n<li>Service\u306f\u300cPod\u306b\u5bfe\u3059\u308b\u5b89\u5b9a\u3057\u305f\u30a2\u30af\u30bb\u30b9\u53e3\u300d<br>\u2192 \u5358\u4f53\u3067\u306e\u30a2\u30d7\u30ea\u516c\u958b\u3001Pod\u7ba1\u7406\u306b\u306f\u5fc5\u9808<\/li>\n\n\n\n<li>Ingress\u306f\u300cHTTP\u30a2\u30af\u30bb\u30b9\u306e\u30eb\u30fc\u30bf\u30fc\u300d<br>\u2192 1\u3064\u306e\u30c9\u30e1\u30a4\u30f3\u3067\u8907\u6570\u30a2\u30d7\u30ea\u3092\u51fa\u3057\u5206\u3051\u305f\u3044\u3068\u304d\u306b\u6700\u9069<\/li>\n<\/ul>\n\n\n\n<p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55],"tags":[56],"_links":{"self":[{"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/posts\/1267"}],"collection":[{"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/comments?post=1267"}],"version-history":[{"count":2,"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/posts\/1267\/revisions"}],"predecessor-version":[{"id":1364,"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/posts\/1267\/revisions\/1364"}],"wp:attachment":[{"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/media?parent=1267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/categories?post=1267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itstudy365.com\/blog\/wp-json\/wp\/v2\/tags?post=1267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}