ååã®è¨äºã§Amazon EKSã¢ããªã³ã®è¨å®ã®éã®ã¹ãã¼ãã«ã¤ãã¦æ¸ãã¾ããã
ä»åã¯å ·ä½çã«Amazon VPC CNIãã©ã°ã¤ã³ã®è¨å®ãããéãENIConfigã®è¨å®ã§åè¦ã§ã¯ä¸ã æ°ã¥ãã¥ããã¨ã©ã¼ãåºã¦è§£æ¶ããã®ã«é£åããã¨ãã話ããããã¨æãã¾ãã
ä»åãååã¨åããã以ä¸ã®è¨äºã®å 容ãç解ãã¦ããã¨ãããªãåããã¿ã¤ãã®è©±ãå¤ããªãã§ãããã
Amazon VPC CNIãã©ã°ã¤ã³ã§ã«ã¹ã¿ã ãããã¯ã¼ã¯ã®è¨å®ããã
Amazon EKSã使ã£ã¦ããéããã¨ãã°ãæ®æ®µä½¿ã£ã¦ããVPCå ã®private subnetã確ä¿ãã¦ããIPv4ã¢ãã¬ã¹ãããå¤ãæ°ã確ä¿ã§ããsubnetã¨IPv4ã¢ãã¬ã¹ã使ç¨ãã¦ãpodç¨ã«IPã¢ãã¬ã¹ãå²ãæ¯ãããããªã©è«¸ã è¦ä»¶ããã£ã¦ã«ã¹ã¿ã ãããã¯ã¼ã¯ã®è¨å®ãå¿ è¦ã«ãªã£ãã¨ãã¾ãã
ããããã¨ãã«ã¯Amazon VPC CNIãã©ã°ã¤ã³ã«è¨å®ã追å ãã¦å¯¾å¿ãã¦ããå¿ è¦ãããã¾ãã詳ããã¯ä»¥ä¸AWSå ¬å¼ããã¥ã¡ã³ããåç §ã
æ©è½ã®æ¦è¦
Amazon EKS ã¢ããªã³ API ã«æ°ãã
configurationValues
ãã©ã¡ã¼ã¿ã追å ããã¾ããããã¼ã³ãæç¹ã§ã¯ããã®ãã©ã¡ã¼ã¿ã¯ãJSON BLOB ã¨ãã¦è¨å®ãåãå ¥ãã¾ããYAML ã®ãµãã¼ããè¿æ¥ä¸ã«éå§ãããäºå®ã§ããJSON BLOB ã¯ãä½æã¾ãã¯æ´æ°ãããã¨ãã¦ããã¢ããªã³ã®ç¹å®ãã¼ã¸ã§ã³ãã¨ã® JSON Schema ã«æºæ ããå¿ è¦ãããã¾ããã¹ãã¼ãã¯ãæ°ãã API ã§ãã Amazon EKS DescribeAddonConfiguration API ãéãã¦å©ç¨å¯è½ã§ãã以ä¸ã§èª¬æããããã«ãconfigurationValues
ãã©ã¡ã¼ã¿ã¯aws eks create-addon
ããã³aws eks update-addon
AWS CLI ã³ãã³ãã§ä½¿ç¨ã§ãã¾ãã
ããã§æ¸ããã¦ããããã«ã configurationValues
ã¨ãããã©ã¡ã¼ã¿ã«è¨å®ãæ¸ãã¦ããã¾ãã
Terraformã§ããã«è¨å®ã追å ãããå ´åãããã¥ã¡ã³ãã®ãã®ç®æã®ããã«ã aws_eks_addon
ãªã½ã¼ã¹ã® configuration_values
argument ã«jsonencodeé¢æ°ã§ã¨ã³ã³ã¼ãããJSONå½¢å¼ã®Objectãå
¥ãã¦ããã°ããã§ãã
ãã ãããã§ENIConfigã®è¨å®ãå ¥ãããã¨ããã¨çµæ§ã¯ã¾ããã¤ã³ããããã¾ããã
ENIConfigã«ã¹ã¿ã ãªã½ã¼ã¹ã®ã¹ãã¼ãã®ã¯ã¾ããã¤ã³ã
ååã®è¨äºã«ãæ²è¼ãããAmazon VPC CNIãã©ã°ã¤ã³ã®è¨å®ã®ã¹ãã¼ããããENIConfigã«é¢ããé¨åã ãåãåºãã¦ã¿ã¾ãã
{ "$ref": "#/definitions/VpcCni", "$schema": "http://json-schema.org/draft-06/schema#", "definitions": { "Affinity": { "type": [ "object", "null" ] }, "EniConfig": { "additionalProperties": false, "properties": { "create": { "type": "boolean" }, "region": { "type": "string" }, "subnets": { "additionalProperties": { "additionalProperties": false, "properties": { "id": { "type": "string" }, "securityGroups": { "items": { "type": "string" }, "type": "array" } }, "required": [ "id" ], "type": "object" }, "minProperties": 1, "type": "object" } }, "required": [ "create", "region", "subnets" ], "type": "object" }, # çç¥ }, "description": "vpc-cni" }
ããã¯awscliã§è¿ã£ã¦ããå¤ãjqã§ãã¼ã¹ããjsonãªã®ã§è¦ç´ ã®ä¸¦ã³æ¹ãjqç±æ¥ãªã®ãæä¼ã£ã¦ããã®ã§ããããããã®ã¹ãã¼ããããã¨è¦ã¦ã©ããªæããåããã§ããããï¼
ç¹ã« $.eniConfig.subnets
ã®ç®æã®å®ç¾©ã«èªä¿¡ãæã£ã¦è¨å®ã§ããã§ããããï¼
ç§ã¯JSONã¹ãã¼ãã«æ £ãã¦ããªããã¨ãããããã®å®ç¾©ãã¡ããã¨è¦ã¦ããã¯ããªã®ã§ãããçµæçã«èªã¿åãã¦ç¡ãã¦Terraformã®è¨å®æã«ããåãããªãã¨ã©ã¼ã«ééãã¦æéã溶ããã¦ãã¾ãã¾ããã
å ·ä½çã«ã¯terraform planæã«åºãã以ä¸ã®æ§ãªã¨ã©ã¼ã§ãã
module.eks_addon.aws_eks_addon.vpc_cni: Creating... â· â Error: creating EKS Add-On (dev-cluster:vpc-cni): InvalidParameterException: ConfigurationValue provided in request is not supported: Json schema validation failed with error: [$.eniConfig.subnets: array found, object expected] â { â RespMetadata: { â StatusCode: 400, â RequestID: "my-request-id" â }, â AddonName: "vpc-cni", â ClusterName: "dev-cluster", â Message_: "ConfigurationValue provided in request is not supported: Json schema validation failed with error: [$.eniConfig.subnets: array found, object expected]" â } â â with module.eks_addon.aws_eks_addon.vpc_cni, â on ../modules/eks_addon.tf line 4, in resource "aws_eks_addon" "vpc_cni": â 4: resource "aws_eks_addon" "vpc_cni" { â âµ
$.eniConfig.subnets: array found, object expected
ã¨ããã¨ã©ã¼ã表示ãããããï¼ããã¯arrayãããªãã®ï¼ãã¨ãªã£ã¦ãã¾ãã¾ããã
å®ç¾©ã®ã»ããã¡ããã¨è¦ã㨠$.eniConfig.subnets
ã¯objectãåã¨ãã¦æå®ããã¦ããã®ã¯åããã®ã§ããã "type": "object"
ã¾ã§ã®è¨è¿°ãé¢ãã¦ãã¦å¤§åè¦åããä»ãã¥ããç¶æ
ã§ãã
ãã§ã¯ã©ããã風ã«æ¸ãã°ããã®ãï¼ãã¨ããåãã«å¯¾ããçããæ¸ãã¦ãã¾ãã¨ãeniConfigã®ç®æã«ã¯ä»¥ä¸ã®æ§ã«availability zoneã®å¤ãkeyã«ããsubnetã®æ å ±ãããã«ç´ä»ããã°ããã§ãã
eniConfig = { create = true region = "ap-northeast-1" subnets = { "ap-northeast-1a" = { id = "subnet-aaaaa", securityGroups = ["sg-yyyyy"] }, }
aws_eks_addon
ãªã½ã¼ã¹ã® configuration_values
å¼æ°ã«jsonencodeé¢æ°ã§é©åã«å¤æãã¤ã¤ä¸è¨ã®eniConfig
è¦ç´ ãå
¥ããã¨ã以ä¸ã®æ§ãªCustom Resourceãä½ãã®ã¨åçã«ãªãã¾ãã
apiVersion: crd.k8s.amazonaws.com/v1alpha1 kind: ENIConfig metadata: name: ap-northeast-1a spec: securityGroups: - "sg-yyyyy" subnet: "subnet-aaaaa"
$.eniConfig.subnets
ã«è¨å®ããobjectã®keyã«ããã ap-northeast-1a
ãENIConfig Custom Resourceã® .metadata.name
ã«è¨å®ããã¦ãã¾ãã
ãããAmazon VPC CNIãã©ã°ã¤ã³ã®è¨å®ãTerraformã§è¡ãæã«ä¸çªåããã¥ããã£ãã¨ããã§ãã
ãã®å½¢ã«é©åããããã«å¤ãå¤æ´ãããã Json schema validation failed with error
ã¨ããã¨ã©ã¼ã¯æ¶ããå®éã«terraform applyããã¨å¿
è¦ãªè¨å®ã»ãªã½ã¼ã¹ãå
¥ããã¨ã確èªã§ãã¾ããã