@epilot360/icons 0.0.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. package/README.md +3 -5
  2. package/dist/bundle.js +1 -1
  3. package/dist/bundle.js.map +1 -1
  4. package/index.js.map +1 -1
  5. package/package.json +41 -8
  6. package/react/Account/index.d.ts +4 -0
  7. package/react/Account/index.js +41 -0
  8. package/react/Account/index.js.map +1 -0
  9. package/react/Add/index.d.ts +4 -0
  10. package/react/Add/index.js +41 -0
  11. package/react/Add/index.js.map +1 -0
  12. package/react/AddCircle/index.d.ts +4 -0
  13. package/react/AddCircle/index.js +41 -0
  14. package/react/AddCircle/index.js.map +1 -0
  15. package/react/Browse/index.d.ts +4 -0
  16. package/react/Browse/index.js +27 -0
  17. package/react/Browse/index.js.map +1 -0
  18. package/react/Calendar/index.d.ts +4 -0
  19. package/react/Calendar/index.js +41 -0
  20. package/react/Calendar/index.js.map +1 -0
  21. package/react/Cancel/index.d.ts +4 -0
  22. package/react/Cancel/index.js +41 -0
  23. package/react/Cancel/index.js.map +1 -0
  24. package/react/Check/index.d.ts +4 -0
  25. package/react/Check/index.js +41 -0
  26. package/react/Check/index.js.map +1 -0
  27. package/react/CheckCircle/index.d.ts +4 -0
  28. package/react/CheckCircle/index.js +41 -0
  29. package/react/CheckCircle/index.js.map +1 -0
  30. package/react/Close/index.d.ts +4 -0
  31. package/react/Close/index.js +41 -0
  32. package/react/Close/index.js.map +1 -0
  33. package/react/Compass/index.d.ts +4 -0
  34. package/react/Compass/index.js +27 -0
  35. package/react/Compass/index.js.map +1 -0
  36. package/react/Contact/index.d.ts +4 -0
  37. package/react/Contact/index.js +41 -0
  38. package/react/Contact/index.js.map +1 -0
  39. package/react/ContentCopy/index.d.ts +4 -0
  40. package/react/ContentCopy/index.js +41 -0
  41. package/react/ContentCopy/index.js.map +1 -0
  42. package/react/Contract/index.d.ts +4 -0
  43. package/react/Contract/index.js +41 -0
  44. package/react/Contract/index.js.map +1 -0
  45. package/react/Dashboard/index.d.ts +4 -0
  46. package/react/Dashboard/index.js +41 -0
  47. package/react/Dashboard/index.js.map +1 -0
  48. package/react/DataObject/index.d.ts +4 -0
  49. package/react/DataObject/index.js +41 -0
  50. package/react/DataObject/index.js.map +1 -0
  51. package/react/Delete/index.d.ts +4 -0
  52. package/react/Delete/index.js +41 -0
  53. package/react/Delete/index.js.map +1 -0
  54. package/react/Design/index.d.ts +4 -0
  55. package/react/Design/index.js +41 -0
  56. package/react/Design/index.js.map +1 -0
  57. package/react/Document/index.d.ts +4 -0
  58. package/react/Document/index.js +41 -0
  59. package/react/Document/index.js.map +1 -0
  60. package/react/Draft/index.d.ts +4 -0
  61. package/react/Draft/index.js +41 -0
  62. package/react/Draft/index.js.map +1 -0
  63. package/react/DragIndicator/index.d.ts +4 -0
  64. package/react/DragIndicator/index.js +41 -0
  65. package/react/DragIndicator/index.js.map +1 -0
  66. package/react/Edit/index.d.ts +4 -0
  67. package/react/Edit/index.js +41 -0
  68. package/react/Edit/index.js.map +1 -0
  69. package/react/Entity/index.d.ts +4 -0
  70. package/react/Entity/index.js +41 -0
  71. package/react/Entity/index.js.map +1 -0
  72. package/react/Epilot/index.d.ts +4 -0
  73. package/react/Epilot/index.js +40 -0
  74. package/react/Epilot/index.js.map +1 -0
  75. package/react/EpilotIcon.d.ts +110 -0
  76. package/react/EpilotIcon.js +130 -0
  77. package/react/EpilotIcon.js.map +1 -0
  78. package/react/ExpandLess/index.d.ts +4 -0
  79. package/react/ExpandLess/index.js +41 -0
  80. package/react/ExpandLess/index.js.map +1 -0
  81. package/react/ExpandMore/index.d.ts +4 -0
  82. package/react/ExpandMore/index.js +41 -0
  83. package/react/ExpandMore/index.js.map +1 -0
  84. package/react/Explore/index.d.ts +4 -0
  85. package/react/Explore/index.js +41 -0
  86. package/react/Explore/index.js.map +1 -0
  87. package/react/File/index.d.ts +4 -0
  88. package/react/File/index.js +41 -0
  89. package/react/File/index.js.map +1 -0
  90. package/react/Folder/index.d.ts +4 -0
  91. package/react/Folder/index.js +41 -0
  92. package/react/Folder/index.js.map +1 -0
  93. package/react/Help/index.d.ts +4 -0
  94. package/react/Help/index.js +41 -0
  95. package/react/Help/index.js.map +1 -0
  96. package/react/Info/index.d.ts +4 -0
  97. package/react/Info/index.js +41 -0
  98. package/react/Info/index.js.map +1 -0
  99. package/react/Journey/index.d.ts +4 -0
  100. package/react/Journey/index.js +41 -0
  101. package/react/Journey/index.js.map +1 -0
  102. package/react/Mail/index.d.ts +4 -0
  103. package/react/Mail/index.js +41 -0
  104. package/react/Mail/index.js.map +1 -0
  105. package/react/Menu/index.d.ts +4 -0
  106. package/react/Menu/index.js +41 -0
  107. package/react/Menu/index.js.map +1 -0
  108. package/react/Message/index.d.ts +4 -0
  109. package/react/Message/index.js +41 -0
  110. package/react/Message/index.js.map +1 -0
  111. package/react/Meter/index.d.ts +4 -0
  112. package/react/Meter/index.js +41 -0
  113. package/react/Meter/index.js.map +1 -0
  114. package/react/Notifications/index.d.ts +4 -0
  115. package/react/Notifications/index.js +41 -0
  116. package/react/Notifications/index.js.map +1 -0
  117. package/react/OpenInNew/index.d.ts +4 -0
  118. package/react/OpenInNew/index.js +41 -0
  119. package/react/OpenInNew/index.js.map +1 -0
  120. package/react/Opportunity/index.d.ts +4 -0
  121. package/react/Opportunity/index.js +41 -0
  122. package/react/Opportunity/index.js.map +1 -0
  123. package/react/Order/index.d.ts +4 -0
  124. package/react/Order/index.js +41 -0
  125. package/react/Order/index.js.map +1 -0
  126. package/react/Partner/index.d.ts +4 -0
  127. package/react/Partner/index.js +41 -0
  128. package/react/Partner/index.js.map +1 -0
  129. package/react/Price/index.d.ts +4 -0
  130. package/react/Price/index.js +41 -0
  131. package/react/Price/index.js.map +1 -0
  132. package/react/Product/index.d.ts +4 -0
  133. package/react/Product/index.js +41 -0
  134. package/react/Product/index.js.map +1 -0
  135. package/react/Refresh/index.d.ts +4 -0
  136. package/react/Refresh/index.js +41 -0
  137. package/react/Refresh/index.js.map +1 -0
  138. package/react/Search/index.d.ts +4 -0
  139. package/react/Search/index.js +41 -0
  140. package/react/Search/index.js.map +1 -0
  141. package/react/Settings/index.d.ts +4 -0
  142. package/react/Settings/index.js +41 -0
  143. package/react/Settings/index.js.map +1 -0
  144. package/react/Share/index.d.ts +4 -0
  145. package/react/Share/index.js +41 -0
  146. package/react/Share/index.js.map +1 -0
  147. package/react/Submission/index.d.ts +4 -0
  148. package/react/Submission/index.js +41 -0
  149. package/react/Submission/index.js.map +1 -0
  150. package/react/Tax/index.d.ts +4 -0
  151. package/react/Tax/index.js +41 -0
  152. package/react/Tax/index.js.map +1 -0
  153. package/react/Templates/index.d.ts +4 -0
  154. package/react/Templates/index.js +41 -0
  155. package/react/Templates/index.js.map +1 -0
  156. package/react/Visibility/index.d.ts +4 -0
  157. package/react/Visibility/index.js +41 -0
  158. package/react/Visibility/index.js.map +1 -0
  159. package/react/VisibilityOff/index.d.ts +4 -0
  160. package/react/VisibilityOff/index.js +41 -0
  161. package/react/VisibilityOff/index.js.map +1 -0
  162. package/react/Warning/index.d.ts +4 -0
  163. package/react/Warning/index.js +41 -0
  164. package/react/Warning/index.js.map +1 -0
  165. package/react/Webhook/index.d.ts +4 -0
  166. package/react/Webhook/index.js +41 -0
  167. package/react/Webhook/index.js.map +1 -0
  168. package/react/Workflow/index.d.ts +4 -0
  169. package/react/Workflow/index.js +41 -0
  170. package/react/Workflow/index.js.map +1 -0
  171. package/react/index.d.ts +50 -0
  172. package/react/index.js +50 -0
  173. package/react/index.js.map +1 -1
  174. package/react/types.d.ts +8 -0
  175. package/react/types.js +10 -0
  176. package/react/types.js.map +1 -0
  177. package/src/stories/Readme.mdx +53 -0
  178. package/iac/node_modules/@balena/dockerignore/LICENSE.md +0 -206
  179. package/iac/node_modules/@balena/dockerignore/README.md +0 -261
  180. package/iac/node_modules/@cspotcode/source-map-support/LICENSE.md +0 -21
  181. package/iac/node_modules/@cspotcode/source-map-support/README.md +0 -289
  182. package/iac/node_modules/@jridgewell/resolve-uri/LICENSE +0 -19
  183. package/iac/node_modules/@jridgewell/resolve-uri/README.md +0 -40
  184. package/iac/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map +0 -1
  185. package/iac/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map +0 -1
  186. package/iac/node_modules/@jridgewell/sourcemap-codec/LICENSE +0 -21
  187. package/iac/node_modules/@jridgewell/sourcemap-codec/README.md +0 -200
  188. package/iac/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map +0 -1
  189. package/iac/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map +0 -1
  190. package/iac/node_modules/@jridgewell/trace-mapping/LICENSE +0 -19
  191. package/iac/node_modules/@jridgewell/trace-mapping/README.md +0 -193
  192. package/iac/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map +0 -1
  193. package/iac/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map +0 -1
  194. package/iac/node_modules/@tsconfig/node10/LICENSE +0 -21
  195. package/iac/node_modules/@tsconfig/node10/README.md +0 -40
  196. package/iac/node_modules/@tsconfig/node12/LICENSE +0 -21
  197. package/iac/node_modules/@tsconfig/node12/README.md +0 -40
  198. package/iac/node_modules/@tsconfig/node14/LICENSE +0 -21
  199. package/iac/node_modules/@tsconfig/node14/README.md +0 -40
  200. package/iac/node_modules/@tsconfig/node16/LICENSE +0 -21
  201. package/iac/node_modules/@tsconfig/node16/README.md +0 -40
  202. package/iac/node_modules/@types/jest/LICENSE +0 -21
  203. package/iac/node_modules/@types/jest/README.md +0 -17
  204. package/iac/node_modules/@types/node/LICENSE +0 -21
  205. package/iac/node_modules/@types/node/README.md +0 -16
  206. package/iac/node_modules/@types/prettier/LICENSE +0 -21
  207. package/iac/node_modules/@types/prettier/README.md +0 -16
  208. package/iac/node_modules/acorn/LICENSE +0 -21
  209. package/iac/node_modules/acorn/README.md +0 -273
  210. package/iac/node_modules/acorn-walk/LICENSE +0 -21
  211. package/iac/node_modules/acorn-walk/README.md +0 -126
  212. package/iac/node_modules/ansi-regex/license +0 -9
  213. package/iac/node_modules/ansi-regex/readme.md +0 -78
  214. package/iac/node_modules/ansi-styles/license +0 -9
  215. package/iac/node_modules/ansi-styles/readme.md +0 -144
  216. package/iac/node_modules/arg/LICENSE.md +0 -21
  217. package/iac/node_modules/arg/README.md +0 -280
  218. package/iac/node_modules/at-least-node/LICENSE +0 -6
  219. package/iac/node_modules/at-least-node/README.md +0 -25
  220. package/iac/node_modules/aws-cdk/LICENSE +0 -201
  221. package/iac/node_modules/aws-cdk/README.md +0 -742
  222. package/iac/node_modules/aws-cdk/lib/init-templates/LICENSE +0 -16
  223. package/iac/node_modules/aws-cdk/lib/init-templates/app/csharp/README.md +0 -14
  224. package/iac/node_modules/aws-cdk/lib/init-templates/app/fsharp/README.md +0 -18
  225. package/iac/node_modules/aws-cdk/lib/init-templates/app/go/README.md +0 -12
  226. package/iac/node_modules/aws-cdk/lib/init-templates/app/java/README.md +0 -18
  227. package/iac/node_modules/aws-cdk/lib/init-templates/app/javascript/README.md +0 -12
  228. package/iac/node_modules/aws-cdk/lib/init-templates/app/python/README.template.md +0 -58
  229. package/iac/node_modules/aws-cdk/lib/init-templates/app/typescript/README.md +0 -14
  230. package/iac/node_modules/aws-cdk/lib/init-templates/lib/typescript/README.template.md +0 -12
  231. package/iac/node_modules/aws-cdk/lib/init-templates/sample-app/csharp/README.template.md +0 -19
  232. package/iac/node_modules/aws-cdk/lib/init-templates/sample-app/fsharp/README.template.md +0 -20
  233. package/iac/node_modules/aws-cdk/lib/init-templates/sample-app/go/README.md +0 -12
  234. package/iac/node_modules/aws-cdk/lib/init-templates/sample-app/java/README.template.md +0 -19
  235. package/iac/node_modules/aws-cdk/lib/init-templates/sample-app/javascript/README.template.md +0 -13
  236. package/iac/node_modules/aws-cdk/lib/init-templates/sample-app/python/README.template.md +0 -65
  237. package/iac/node_modules/aws-cdk/lib/init-templates/sample-app/typescript/README.template.md +0 -15
  238. package/iac/node_modules/aws-cdk/test/integ/cli/README.md +0 -48
  239. package/iac/node_modules/aws-cdk/test/integ/cli-regression-patches/README.md +0 -54
  240. package/iac/node_modules/aws-cdk-lib/LICENSE +0 -201
  241. package/iac/node_modules/aws-cdk-lib/README.md +0 -1119
  242. package/iac/node_modules/aws-cdk-lib/alexa-ask/README.md +0 -27
  243. package/iac/node_modules/aws-cdk-lib/assertions/README.md +0 -571
  244. package/iac/node_modules/aws-cdk-lib/assets/README.md +0 -4
  245. package/iac/node_modules/aws-cdk-lib/aws-accessanalyzer/README.md +0 -27
  246. package/iac/node_modules/aws-cdk-lib/aws-acmpca/README.md +0 -59
  247. package/iac/node_modules/aws-cdk-lib/aws-amazonmq/README.md +0 -27
  248. package/iac/node_modules/aws-cdk-lib/aws-amplify/README.md +0 -32
  249. package/iac/node_modules/aws-cdk-lib/aws-amplifyuibuilder/README.md +0 -27
  250. package/iac/node_modules/aws-cdk-lib/aws-apigateway/README.md +0 -1335
  251. package/iac/node_modules/aws-cdk-lib/aws-apigatewayv2/README.md +0 -32
  252. package/iac/node_modules/aws-cdk-lib/aws-appconfig/README.md +0 -27
  253. package/iac/node_modules/aws-cdk-lib/aws-appflow/README.md +0 -27
  254. package/iac/node_modules/aws-cdk-lib/aws-appintegrations/README.md +0 -27
  255. package/iac/node_modules/aws-cdk-lib/aws-applicationautoscaling/README.md +0 -246
  256. package/iac/node_modules/aws-cdk-lib/aws-applicationinsights/README.md +0 -27
  257. package/iac/node_modules/aws-cdk-lib/aws-appmesh/README.md +0 -883
  258. package/iac/node_modules/aws-cdk-lib/aws-apprunner/README.md +0 -32
  259. package/iac/node_modules/aws-cdk-lib/aws-appstream/README.md +0 -27
  260. package/iac/node_modules/aws-cdk-lib/aws-appsync/README.md +0 -32
  261. package/iac/node_modules/aws-cdk-lib/aws-aps/README.md +0 -27
  262. package/iac/node_modules/aws-cdk-lib/aws-athena/README.md +0 -27
  263. package/iac/node_modules/aws-cdk-lib/aws-auditmanager/README.md +0 -27
  264. package/iac/node_modules/aws-cdk-lib/aws-autoscaling/README.md +0 -540
  265. package/iac/node_modules/aws-cdk-lib/aws-autoscaling-common/README.md +0 -8
  266. package/iac/node_modules/aws-cdk-lib/aws-autoscaling-hooktargets/README.md +0 -18
  267. package/iac/node_modules/aws-cdk-lib/aws-autoscalingplans/README.md +0 -27
  268. package/iac/node_modules/aws-cdk-lib/aws-backup/README.md +0 -210
  269. package/iac/node_modules/aws-cdk-lib/aws-batch/README.md +0 -32
  270. package/iac/node_modules/aws-cdk-lib/aws-billingconductor/README.md +0 -27
  271. package/iac/node_modules/aws-cdk-lib/aws-budgets/README.md +0 -27
  272. package/iac/node_modules/aws-cdk-lib/aws-cassandra/README.md +0 -27
  273. package/iac/node_modules/aws-cdk-lib/aws-ce/README.md +0 -27
  274. package/iac/node_modules/aws-cdk-lib/aws-certificatemanager/README.md +0 -166
  275. package/iac/node_modules/aws-cdk-lib/aws-certificatemanager/lambda-packages/dns_validated_certificate_handler/README.md +0 -2
  276. package/iac/node_modules/aws-cdk-lib/aws-certificatemanager/suffixes/README.txt +0 -8
  277. package/iac/node_modules/aws-cdk-lib/aws-chatbot/README.md +0 -44
  278. package/iac/node_modules/aws-cdk-lib/aws-cloud9/README.md +0 -32
  279. package/iac/node_modules/aws-cdk-lib/aws-cloudformation/README.md +0 -4
  280. package/iac/node_modules/aws-cdk-lib/aws-cloudfront/README.md +0 -973
  281. package/iac/node_modules/aws-cdk-lib/aws-cloudfront-origins/README.md +0 -126
  282. package/iac/node_modules/aws-cdk-lib/aws-cloudtrail/README.md +0 -189
  283. package/iac/node_modules/aws-cdk-lib/aws-cloudwatch/README.md +0 -579
  284. package/iac/node_modules/aws-cdk-lib/aws-cloudwatch-actions/README.md +0 -43
  285. package/iac/node_modules/aws-cdk-lib/aws-codeartifact/README.md +0 -27
  286. package/iac/node_modules/aws-cdk-lib/aws-codebuild/README.md +0 -759
  287. package/iac/node_modules/aws-cdk-lib/aws-codecommit/README.md +0 -85
  288. package/iac/node_modules/aws-cdk-lib/aws-codedeploy/README.md +0 -319
  289. package/iac/node_modules/aws-cdk-lib/aws-codeguruprofiler/README.md +0 -37
  290. package/iac/node_modules/aws-cdk-lib/aws-codegurureviewer/README.md +0 -27
  291. package/iac/node_modules/aws-cdk-lib/aws-codepipeline/README.md +0 -481
  292. package/iac/node_modules/aws-cdk-lib/aws-codepipeline-actions/README.md +0 -1203
  293. package/iac/node_modules/aws-cdk-lib/aws-codestar/README.md +0 -32
  294. package/iac/node_modules/aws-cdk-lib/aws-codestarconnections/README.md +0 -27
  295. package/iac/node_modules/aws-cdk-lib/aws-codestarnotifications/README.md +0 -68
  296. package/iac/node_modules/aws-cdk-lib/aws-cognito/README.md +0 -843
  297. package/iac/node_modules/aws-cdk-lib/aws-config/README.md +0 -218
  298. package/iac/node_modules/aws-cdk-lib/aws-connect/README.md +0 -27
  299. package/iac/node_modules/aws-cdk-lib/aws-controltower/README.md +0 -27
  300. package/iac/node_modules/aws-cdk-lib/aws-cur/README.md +0 -27
  301. package/iac/node_modules/aws-cdk-lib/aws-customerprofiles/README.md +0 -27
  302. package/iac/node_modules/aws-cdk-lib/aws-databrew/README.md +0 -27
  303. package/iac/node_modules/aws-cdk-lib/aws-datapipeline/README.md +0 -27
  304. package/iac/node_modules/aws-cdk-lib/aws-datasync/README.md +0 -27
  305. package/iac/node_modules/aws-cdk-lib/aws-dax/README.md +0 -27
  306. package/iac/node_modules/aws-cdk-lib/aws-detective/README.md +0 -27
  307. package/iac/node_modules/aws-cdk-lib/aws-devopsguru/README.md +0 -27
  308. package/iac/node_modules/aws-cdk-lib/aws-directoryservice/README.md +0 -27
  309. package/iac/node_modules/aws-cdk-lib/aws-dlm/README.md +0 -27
  310. package/iac/node_modules/aws-cdk-lib/aws-dms/README.md +0 -27
  311. package/iac/node_modules/aws-cdk-lib/aws-docdb/README.md +0 -153
  312. package/iac/node_modules/aws-cdk-lib/aws-dynamodb/README.md +0 -200
  313. package/iac/node_modules/aws-cdk-lib/aws-ec2/README.md +0 -1514
  314. package/iac/node_modules/aws-cdk-lib/aws-ecr/README.md +0 -110
  315. package/iac/node_modules/aws-cdk-lib/aws-ecr-assets/README.md +0 -167
  316. package/iac/node_modules/aws-cdk-lib/aws-ecs/README.md +0 -1225
  317. package/iac/node_modules/aws-cdk-lib/aws-ecs-patterns/README.md +0 -980
  318. package/iac/node_modules/aws-cdk-lib/aws-efs/README.md +0 -154
  319. package/iac/node_modules/aws-cdk-lib/aws-eks/README.md +0 -1450
  320. package/iac/node_modules/aws-cdk-lib/aws-elasticache/README.md +0 -27
  321. package/iac/node_modules/aws-cdk-lib/aws-elasticbeanstalk/README.md +0 -27
  322. package/iac/node_modules/aws-cdk-lib/aws-elasticloadbalancing/README.md +0 -40
  323. package/iac/node_modules/aws-cdk-lib/aws-elasticloadbalancingv2/README.md +0 -569
  324. package/iac/node_modules/aws-cdk-lib/aws-elasticloadbalancingv2-actions/README.md +0 -68
  325. package/iac/node_modules/aws-cdk-lib/aws-elasticloadbalancingv2-targets/README.md +0 -4
  326. package/iac/node_modules/aws-cdk-lib/aws-elasticsearch/README.md +0 -441
  327. package/iac/node_modules/aws-cdk-lib/aws-emr/README.md +0 -27
  328. package/iac/node_modules/aws-cdk-lib/aws-emrcontainers/README.md +0 -27
  329. package/iac/node_modules/aws-cdk-lib/aws-emrserverless/README.md +0 -27
  330. package/iac/node_modules/aws-cdk-lib/aws-events/README.md +0 -249
  331. package/iac/node_modules/aws-cdk-lib/aws-events-targets/README.md +0 -339
  332. package/iac/node_modules/aws-cdk-lib/aws-eventschemas/README.md +0 -27
  333. package/iac/node_modules/aws-cdk-lib/aws-evidently/README.md +0 -27
  334. package/iac/node_modules/aws-cdk-lib/aws-finspace/README.md +0 -27
  335. package/iac/node_modules/aws-cdk-lib/aws-fis/README.md +0 -27
  336. package/iac/node_modules/aws-cdk-lib/aws-fms/README.md +0 -27
  337. package/iac/node_modules/aws-cdk-lib/aws-forecast/README.md +0 -27
  338. package/iac/node_modules/aws-cdk-lib/aws-frauddetector/README.md +0 -27
  339. package/iac/node_modules/aws-cdk-lib/aws-fsx/README.md +0 -200
  340. package/iac/node_modules/aws-cdk-lib/aws-gamelift/README.md +0 -27
  341. package/iac/node_modules/aws-cdk-lib/aws-globalaccelerator/README.md +0 -182
  342. package/iac/node_modules/aws-cdk-lib/aws-globalaccelerator-endpoints/README.md +0 -10
  343. package/iac/node_modules/aws-cdk-lib/aws-glue/README.md +0 -32
  344. package/iac/node_modules/aws-cdk-lib/aws-greengrass/README.md +0 -27
  345. package/iac/node_modules/aws-cdk-lib/aws-greengrassv2/README.md +0 -27
  346. package/iac/node_modules/aws-cdk-lib/aws-groundstation/README.md +0 -27
  347. package/iac/node_modules/aws-cdk-lib/aws-guardduty/README.md +0 -27
  348. package/iac/node_modules/aws-cdk-lib/aws-healthlake/README.md +0 -27
  349. package/iac/node_modules/aws-cdk-lib/aws-iam/README.md +0 -509
  350. package/iac/node_modules/aws-cdk-lib/aws-imagebuilder/README.md +0 -27
  351. package/iac/node_modules/aws-cdk-lib/aws-inspector/README.md +0 -27
  352. package/iac/node_modules/aws-cdk-lib/aws-inspectorv2/README.md +0 -27
  353. package/iac/node_modules/aws-cdk-lib/aws-iot/README.md +0 -32
  354. package/iac/node_modules/aws-cdk-lib/aws-iot1click/README.md +0 -27
  355. package/iac/node_modules/aws-cdk-lib/aws-iotanalytics/README.md +0 -27
  356. package/iac/node_modules/aws-cdk-lib/aws-iotcoredeviceadvisor/README.md +0 -27
  357. package/iac/node_modules/aws-cdk-lib/aws-iotevents/README.md +0 -32
  358. package/iac/node_modules/aws-cdk-lib/aws-iotfleethub/README.md +0 -27
  359. package/iac/node_modules/aws-cdk-lib/aws-iotsitewise/README.md +0 -27
  360. package/iac/node_modules/aws-cdk-lib/aws-iotthingsgraph/README.md +0 -27
  361. package/iac/node_modules/aws-cdk-lib/aws-iottwinmaker/README.md +0 -27
  362. package/iac/node_modules/aws-cdk-lib/aws-iotwireless/README.md +0 -27
  363. package/iac/node_modules/aws-cdk-lib/aws-ivs/README.md +0 -32
  364. package/iac/node_modules/aws-cdk-lib/aws-kafkaconnect/README.md +0 -27
  365. package/iac/node_modules/aws-cdk-lib/aws-kendra/README.md +0 -27
  366. package/iac/node_modules/aws-cdk-lib/aws-kinesis/README.md +0 -188
  367. package/iac/node_modules/aws-cdk-lib/aws-kinesisanalytics/README.md +0 -27
  368. package/iac/node_modules/aws-cdk-lib/aws-kinesisanalyticsv2/README.md +0 -27
  369. package/iac/node_modules/aws-cdk-lib/aws-kinesisfirehose/README.md +0 -32
  370. package/iac/node_modules/aws-cdk-lib/aws-kinesisvideo/README.md +0 -27
  371. package/iac/node_modules/aws-cdk-lib/aws-kms/README.md +0 -209
  372. package/iac/node_modules/aws-cdk-lib/aws-lakeformation/README.md +0 -27
  373. package/iac/node_modules/aws-cdk-lib/aws-lambda/README.md +0 -985
  374. package/iac/node_modules/aws-cdk-lib/aws-lambda-destinations/README.md +0 -147
  375. package/iac/node_modules/aws-cdk-lib/aws-lambda-event-sources/README.md +0 -281
  376. package/iac/node_modules/aws-cdk-lib/aws-lambda-nodejs/README.md +0 -317
  377. package/iac/node_modules/aws-cdk-lib/aws-lex/README.md +0 -27
  378. package/iac/node_modules/aws-cdk-lib/aws-licensemanager/README.md +0 -27
  379. package/iac/node_modules/aws-cdk-lib/aws-lightsail/README.md +0 -27
  380. package/iac/node_modules/aws-cdk-lib/aws-location/README.md +0 -27
  381. package/iac/node_modules/aws-cdk-lib/aws-logs/README.md +0 -322
  382. package/iac/node_modules/aws-cdk-lib/aws-logs-destinations/README.md +0 -7
  383. package/iac/node_modules/aws-cdk-lib/aws-lookoutequipment/README.md +0 -27
  384. package/iac/node_modules/aws-cdk-lib/aws-lookoutmetrics/README.md +0 -27
  385. package/iac/node_modules/aws-cdk-lib/aws-lookoutvision/README.md +0 -27
  386. package/iac/node_modules/aws-cdk-lib/aws-m2/README.md +0 -27
  387. package/iac/node_modules/aws-cdk-lib/aws-macie/README.md +0 -27
  388. package/iac/node_modules/aws-cdk-lib/aws-managedblockchain/README.md +0 -27
  389. package/iac/node_modules/aws-cdk-lib/aws-mediaconnect/README.md +0 -27
  390. package/iac/node_modules/aws-cdk-lib/aws-mediaconvert/README.md +0 -27
  391. package/iac/node_modules/aws-cdk-lib/aws-medialive/README.md +0 -27
  392. package/iac/node_modules/aws-cdk-lib/aws-mediapackage/README.md +0 -27
  393. package/iac/node_modules/aws-cdk-lib/aws-mediastore/README.md +0 -27
  394. package/iac/node_modules/aws-cdk-lib/aws-mediatailor/README.md +0 -27
  395. package/iac/node_modules/aws-cdk-lib/aws-memorydb/README.md +0 -27
  396. package/iac/node_modules/aws-cdk-lib/aws-msk/README.md +0 -32
  397. package/iac/node_modules/aws-cdk-lib/aws-mwaa/README.md +0 -27
  398. package/iac/node_modules/aws-cdk-lib/aws-neptune/README.md +0 -32
  399. package/iac/node_modules/aws-cdk-lib/aws-networkfirewall/README.md +0 -27
  400. package/iac/node_modules/aws-cdk-lib/aws-networkmanager/README.md +0 -27
  401. package/iac/node_modules/aws-cdk-lib/aws-nimblestudio/README.md +0 -27
  402. package/iac/node_modules/aws-cdk-lib/aws-opensearchservice/README.md +0 -378
  403. package/iac/node_modules/aws-cdk-lib/aws-opsworks/README.md +0 -27
  404. package/iac/node_modules/aws-cdk-lib/aws-opsworkscm/README.md +0 -27
  405. package/iac/node_modules/aws-cdk-lib/aws-panorama/README.md +0 -27
  406. package/iac/node_modules/aws-cdk-lib/aws-personalize/README.md +0 -27
  407. package/iac/node_modules/aws-cdk-lib/aws-pinpoint/README.md +0 -27
  408. package/iac/node_modules/aws-cdk-lib/aws-pinpointemail/README.md +0 -27
  409. package/iac/node_modules/aws-cdk-lib/aws-qldb/README.md +0 -27
  410. package/iac/node_modules/aws-cdk-lib/aws-quicksight/README.md +0 -27
  411. package/iac/node_modules/aws-cdk-lib/aws-ram/README.md +0 -27
  412. package/iac/node_modules/aws-cdk-lib/aws-rds/README.md +0 -704
  413. package/iac/node_modules/aws-cdk-lib/aws-redshift/README.md +0 -32
  414. package/iac/node_modules/aws-cdk-lib/aws-redshiftserverless/README.md +0 -27
  415. package/iac/node_modules/aws-cdk-lib/aws-refactorspaces/README.md +0 -27
  416. package/iac/node_modules/aws-cdk-lib/aws-rekognition/README.md +0 -27
  417. package/iac/node_modules/aws-cdk-lib/aws-resiliencehub/README.md +0 -27
  418. package/iac/node_modules/aws-cdk-lib/aws-resourcegroups/README.md +0 -27
  419. package/iac/node_modules/aws-cdk-lib/aws-robomaker/README.md +0 -27
  420. package/iac/node_modules/aws-cdk-lib/aws-route53/README.md +0 -281
  421. package/iac/node_modules/aws-cdk-lib/aws-route53-patterns/README.md +0 -45
  422. package/iac/node_modules/aws-cdk-lib/aws-route53-targets/README.md +0 -181
  423. package/iac/node_modules/aws-cdk-lib/aws-route53recoverycontrol/README.md +0 -27
  424. package/iac/node_modules/aws-cdk-lib/aws-route53recoveryreadiness/README.md +0 -27
  425. package/iac/node_modules/aws-cdk-lib/aws-route53resolver/README.md +0 -32
  426. package/iac/node_modules/aws-cdk-lib/aws-rum/README.md +0 -27
  427. package/iac/node_modules/aws-cdk-lib/aws-s3/README.md +0 -581
  428. package/iac/node_modules/aws-cdk-lib/aws-s3-assets/README.md +0 -179
  429. package/iac/node_modules/aws-cdk-lib/aws-s3-deployment/README.md +0 -349
  430. package/iac/node_modules/aws-cdk-lib/aws-s3-notifications/README.md +0 -46
  431. package/iac/node_modules/aws-cdk-lib/aws-s3objectlambda/README.md +0 -32
  432. package/iac/node_modules/aws-cdk-lib/aws-s3outposts/README.md +0 -27
  433. package/iac/node_modules/aws-cdk-lib/aws-sagemaker/README.md +0 -27
  434. package/iac/node_modules/aws-cdk-lib/aws-sam/README.md +0 -27
  435. package/iac/node_modules/aws-cdk-lib/aws-sdb/README.md +0 -27
  436. package/iac/node_modules/aws-cdk-lib/aws-secretsmanager/README.md +0 -285
  437. package/iac/node_modules/aws-cdk-lib/aws-securityhub/README.md +0 -27
  438. package/iac/node_modules/aws-cdk-lib/aws-servicecatalog/README.md +0 -491
  439. package/iac/node_modules/aws-cdk-lib/aws-servicecatalogappregistry/README.md +0 -32
  440. package/iac/node_modules/aws-cdk-lib/aws-servicediscovery/README.md +0 -45
  441. package/iac/node_modules/aws-cdk-lib/aws-ses/README.md +0 -194
  442. package/iac/node_modules/aws-cdk-lib/aws-ses-actions/README.md +0 -16
  443. package/iac/node_modules/aws-cdk-lib/aws-signer/README.md +0 -41
  444. package/iac/node_modules/aws-cdk-lib/aws-sns/README.md +0 -184
  445. package/iac/node_modules/aws-cdk-lib/aws-sns-subscriptions/README.md +0 -120
  446. package/iac/node_modules/aws-cdk-lib/aws-sqs/README.md +0 -57
  447. package/iac/node_modules/aws-cdk-lib/aws-ssm/README.md +0 -99
  448. package/iac/node_modules/aws-cdk-lib/aws-ssmcontacts/README.md +0 -27
  449. package/iac/node_modules/aws-cdk-lib/aws-ssmincidents/README.md +0 -27
  450. package/iac/node_modules/aws-cdk-lib/aws-sso/README.md +0 -27
  451. package/iac/node_modules/aws-cdk-lib/aws-stepfunctions/README.md +0 -884
  452. package/iac/node_modules/aws-cdk-lib/aws-stepfunctions-tasks/README.md +0 -1288
  453. package/iac/node_modules/aws-cdk-lib/aws-supportapp/README.md +0 -27
  454. package/iac/node_modules/aws-cdk-lib/aws-synthetics/README.md +0 -32
  455. package/iac/node_modules/aws-cdk-lib/aws-timestream/README.md +0 -27
  456. package/iac/node_modules/aws-cdk-lib/aws-transfer/README.md +0 -27
  457. package/iac/node_modules/aws-cdk-lib/aws-voiceid/README.md +0 -27
  458. package/iac/node_modules/aws-cdk-lib/aws-waf/README.md +0 -27
  459. package/iac/node_modules/aws-cdk-lib/aws-wafregional/README.md +0 -27
  460. package/iac/node_modules/aws-cdk-lib/aws-wafv2/README.md +0 -27
  461. package/iac/node_modules/aws-cdk-lib/aws-wisdom/README.md +0 -27
  462. package/iac/node_modules/aws-cdk-lib/aws-workspaces/README.md +0 -27
  463. package/iac/node_modules/aws-cdk-lib/aws-xray/README.md +0 -27
  464. package/iac/node_modules/aws-cdk-lib/cloud-assembly-schema/README.md +0 -55
  465. package/iac/node_modules/aws-cdk-lib/cloud-assembly-schema/schema/README.md +0 -5
  466. package/iac/node_modules/aws-cdk-lib/cloudformation-include/README.md +0 -466
  467. package/iac/node_modules/aws-cdk-lib/core/README.md +0 -1078
  468. package/iac/node_modules/aws-cdk-lib/custom-resources/README.md +0 -624
  469. package/iac/node_modules/aws-cdk-lib/cx-api/README.md +0 -98
  470. package/iac/node_modules/aws-cdk-lib/lambda-layer-awscli/README.md +0 -19
  471. package/iac/node_modules/aws-cdk-lib/lambda-layer-kubectl/README.md +0 -20
  472. package/iac/node_modules/aws-cdk-lib/lambda-layer-node-proxy-agent/README.md +0 -18
  473. package/iac/node_modules/aws-cdk-lib/node_modules/@balena/dockerignore/LICENSE.md +0 -206
  474. package/iac/node_modules/aws-cdk-lib/node_modules/@balena/dockerignore/README.md +0 -261
  475. package/iac/node_modules/aws-cdk-lib/node_modules/at-least-node/LICENSE +0 -6
  476. package/iac/node_modules/aws-cdk-lib/node_modules/at-least-node/README.md +0 -25
  477. package/iac/node_modules/aws-cdk-lib/node_modules/balanced-match/LICENSE.md +0 -21
  478. package/iac/node_modules/aws-cdk-lib/node_modules/balanced-match/README.md +0 -97
  479. package/iac/node_modules/aws-cdk-lib/node_modules/brace-expansion/LICENSE +0 -21
  480. package/iac/node_modules/aws-cdk-lib/node_modules/brace-expansion/README.md +0 -129
  481. package/iac/node_modules/aws-cdk-lib/node_modules/case/LICENSE +0 -22
  482. package/iac/node_modules/aws-cdk-lib/node_modules/case/README.md +0 -139
  483. package/iac/node_modules/aws-cdk-lib/node_modules/case/dist/Case.min.js.map +0 -1
  484. package/iac/node_modules/aws-cdk-lib/node_modules/case/dist/Case.plus.min.js.map +0 -1
  485. package/iac/node_modules/aws-cdk-lib/node_modules/concat-map/LICENSE +0 -18
  486. package/iac/node_modules/aws-cdk-lib/node_modules/concat-map/README.markdown +0 -62
  487. package/iac/node_modules/aws-cdk-lib/node_modules/fs-extra/LICENSE +0 -15
  488. package/iac/node_modules/aws-cdk-lib/node_modules/fs-extra/README.md +0 -264
  489. package/iac/node_modules/aws-cdk-lib/node_modules/graceful-fs/LICENSE +0 -15
  490. package/iac/node_modules/aws-cdk-lib/node_modules/graceful-fs/README.md +0 -143
  491. package/iac/node_modules/aws-cdk-lib/node_modules/ignore/README.md +0 -412
  492. package/iac/node_modules/aws-cdk-lib/node_modules/jsonfile/LICENSE +0 -15
  493. package/iac/node_modules/aws-cdk-lib/node_modules/jsonfile/README.md +0 -230
  494. package/iac/node_modules/aws-cdk-lib/node_modules/jsonschema/LICENSE +0 -21
  495. package/iac/node_modules/aws-cdk-lib/node_modules/jsonschema/README.md +0 -421
  496. package/iac/node_modules/aws-cdk-lib/node_modules/lru-cache/LICENSE +0 -15
  497. package/iac/node_modules/aws-cdk-lib/node_modules/lru-cache/README.md +0 -166
  498. package/iac/node_modules/aws-cdk-lib/node_modules/minimatch/LICENSE +0 -15
  499. package/iac/node_modules/aws-cdk-lib/node_modules/minimatch/README.md +0 -230
  500. package/iac/node_modules/aws-cdk-lib/node_modules/punycode/README.md +0 -122
  501. package/iac/node_modules/aws-cdk-lib/node_modules/semver/LICENSE +0 -15
  502. package/iac/node_modules/aws-cdk-lib/node_modules/semver/README.md +0 -568
  503. package/iac/node_modules/aws-cdk-lib/node_modules/universalify/LICENSE +0 -20
  504. package/iac/node_modules/aws-cdk-lib/node_modules/universalify/README.md +0 -76
  505. package/iac/node_modules/aws-cdk-lib/node_modules/yallist/LICENSE +0 -15
  506. package/iac/node_modules/aws-cdk-lib/node_modules/yallist/README.md +0 -204
  507. package/iac/node_modules/aws-cdk-lib/node_modules/yaml/LICENSE +0 -13
  508. package/iac/node_modules/aws-cdk-lib/node_modules/yaml/README.md +0 -127
  509. package/iac/node_modules/aws-cdk-lib/pipelines/README.md +0 -1573
  510. package/iac/node_modules/aws-cdk-lib/region-info/README.md +0 -84
  511. package/iac/node_modules/aws-cdk-lib/triggers/README.md +0 -86
  512. package/iac/node_modules/balanced-match/LICENSE.md +0 -21
  513. package/iac/node_modules/balanced-match/README.md +0 -97
  514. package/iac/node_modules/brace-expansion/LICENSE +0 -21
  515. package/iac/node_modules/brace-expansion/README.md +0 -129
  516. package/iac/node_modules/buffer-from/LICENSE +0 -21
  517. package/iac/node_modules/buffer-from/readme.md +0 -69
  518. package/iac/node_modules/case/LICENSE +0 -22
  519. package/iac/node_modules/case/README.md +0 -139
  520. package/iac/node_modules/case/dist/Case.min.js.map +0 -1
  521. package/iac/node_modules/case/dist/Case.plus.min.js.map +0 -1
  522. package/iac/node_modules/chalk/license +0 -9
  523. package/iac/node_modules/chalk/node_modules/ansi-styles/license +0 -9
  524. package/iac/node_modules/chalk/node_modules/ansi-styles/readme.md +0 -152
  525. package/iac/node_modules/chalk/readme.md +0 -341
  526. package/iac/node_modules/color-convert/LICENSE +0 -21
  527. package/iac/node_modules/color-convert/README.md +0 -68
  528. package/iac/node_modules/color-name/LICENSE +0 -8
  529. package/iac/node_modules/color-name/README.md +0 -11
  530. package/iac/node_modules/concat-map/LICENSE +0 -18
  531. package/iac/node_modules/concat-map/README.markdown +0 -62
  532. package/iac/node_modules/constructs/LICENSE +0 -202
  533. package/iac/node_modules/constructs/README.md +0 -28
  534. package/iac/node_modules/create-require/LICENSE +0 -25
  535. package/iac/node_modules/create-require/README.md +0 -46
  536. package/iac/node_modules/diff/LICENSE +0 -31
  537. package/iac/node_modules/diff/README.md +0 -207
  538. package/iac/node_modules/diff-sequences/LICENSE +0 -21
  539. package/iac/node_modules/diff-sequences/README.md +0 -404
  540. package/iac/node_modules/fs-extra/LICENSE +0 -15
  541. package/iac/node_modules/fs-extra/README.md +0 -264
  542. package/iac/node_modules/fsevents/LICENSE +0 -22
  543. package/iac/node_modules/fsevents/README.md +0 -83
  544. package/iac/node_modules/graceful-fs/LICENSE +0 -15
  545. package/iac/node_modules/graceful-fs/README.md +0 -143
  546. package/iac/node_modules/has-flag/license +0 -9
  547. package/iac/node_modules/has-flag/readme.md +0 -89
  548. package/iac/node_modules/ignore/README.md +0 -412
  549. package/iac/node_modules/jest-diff/LICENSE +0 -21
  550. package/iac/node_modules/jest-diff/README.md +0 -671
  551. package/iac/node_modules/jest-get-type/LICENSE +0 -21
  552. package/iac/node_modules/jest-matcher-utils/LICENSE +0 -21
  553. package/iac/node_modules/jest-matcher-utils/README.md +0 -24
  554. package/iac/node_modules/jsonfile/LICENSE +0 -15
  555. package/iac/node_modules/jsonfile/README.md +0 -230
  556. package/iac/node_modules/jsonschema/LICENSE +0 -21
  557. package/iac/node_modules/jsonschema/README.md +0 -421
  558. package/iac/node_modules/lru-cache/LICENSE +0 -15
  559. package/iac/node_modules/lru-cache/README.md +0 -166
  560. package/iac/node_modules/make-error/LICENSE +0 -5
  561. package/iac/node_modules/make-error/README.md +0 -112
  562. package/iac/node_modules/minimatch/LICENSE +0 -15
  563. package/iac/node_modules/minimatch/README.md +0 -230
  564. package/iac/node_modules/pretty-format/LICENSE +0 -21
  565. package/iac/node_modules/pretty-format/README.md +0 -458
  566. package/iac/node_modules/punycode/README.md +0 -122
  567. package/iac/node_modules/react-is/LICENSE +0 -21
  568. package/iac/node_modules/react-is/README.md +0 -104
  569. package/iac/node_modules/semver/LICENSE +0 -15
  570. package/iac/node_modules/semver/README.md +0 -568
  571. package/iac/node_modules/source-map/LICENSE +0 -28
  572. package/iac/node_modules/source-map/README.md +0 -742
  573. package/iac/node_modules/source-map/dist/source-map.min.js.map +0 -1
  574. package/iac/node_modules/source-map-support/LICENSE.md +0 -21
  575. package/iac/node_modules/source-map-support/README.md +0 -284
  576. package/iac/node_modules/supports-color/license +0 -9
  577. package/iac/node_modules/supports-color/readme.md +0 -76
  578. package/iac/node_modules/ts-node/LICENSE +0 -21
  579. package/iac/node_modules/ts-node/README.md +0 -1442
  580. package/iac/node_modules/ts-node/dist/bin-cwd.js.map +0 -1
  581. package/iac/node_modules/ts-node/dist/bin-esm.js.map +0 -1
  582. package/iac/node_modules/ts-node/dist/bin-script-deprecated.js.map +0 -1
  583. package/iac/node_modules/ts-node/dist/bin-script.js.map +0 -1
  584. package/iac/node_modules/ts-node/dist/bin-transpile.js.map +0 -1
  585. package/iac/node_modules/ts-node/dist/bin.js.map +0 -1
  586. package/iac/node_modules/ts-node/dist/child/argv-payload.js.map +0 -1
  587. package/iac/node_modules/ts-node/dist/child/child-entrypoint.js.map +0 -1
  588. package/iac/node_modules/ts-node/dist/child/child-loader.js.map +0 -1
  589. package/iac/node_modules/ts-node/dist/child/child-require.js.map +0 -1
  590. package/iac/node_modules/ts-node/dist/child/spawn-child.js.map +0 -1
  591. package/iac/node_modules/ts-node/dist/cjs-resolve-hooks.js.map +0 -1
  592. package/iac/node_modules/ts-node/dist/configuration.js.map +0 -1
  593. package/iac/node_modules/ts-node/dist/esm.js.map +0 -1
  594. package/iac/node_modules/ts-node/dist/file-extensions.js.map +0 -1
  595. package/iac/node_modules/ts-node/dist/index.js.map +0 -1
  596. package/iac/node_modules/ts-node/dist/module-type-classifier.js.map +0 -1
  597. package/iac/node_modules/ts-node/dist/node-module-type-classifier.js.map +0 -1
  598. package/iac/node_modules/ts-node/dist/repl.js.map +0 -1
  599. package/iac/node_modules/ts-node/dist/resolver-functions.js.map +0 -1
  600. package/iac/node_modules/ts-node/dist/transpilers/swc.js.map +0 -1
  601. package/iac/node_modules/ts-node/dist/transpilers/types.js.map +0 -1
  602. package/iac/node_modules/ts-node/dist/ts-compiler-types.js.map +0 -1
  603. package/iac/node_modules/ts-node/dist/ts-internals.js.map +0 -1
  604. package/iac/node_modules/ts-node/dist/ts-transpile-module.js.map +0 -1
  605. package/iac/node_modules/ts-node/dist/tsconfig-schema.js.map +0 -1
  606. package/iac/node_modules/ts-node/dist/tsconfigs.js.map +0 -1
  607. package/iac/node_modules/ts-node/dist/util.js.map +0 -1
  608. package/iac/node_modules/ts-node/dist-raw/README.md +0 -36
  609. package/iac/node_modules/typescript/LICENSE.txt +0 -55
  610. package/iac/node_modules/typescript/README.md +0 -104
  611. package/iac/node_modules/typescript/lib/README.md +0 -5
  612. package/iac/node_modules/universalify/LICENSE +0 -20
  613. package/iac/node_modules/universalify/README.md +0 -76
  614. package/iac/node_modules/v8-compile-cache-lib/LICENSE +0 -21
  615. package/iac/node_modules/v8-compile-cache-lib/README.md +0 -60
  616. package/iac/node_modules/yallist/LICENSE +0 -15
  617. package/iac/node_modules/yallist/README.md +0 -204
  618. package/iac/node_modules/yaml/LICENSE +0 -13
  619. package/iac/node_modules/yaml/README.md +0 -127
  620. package/iac/node_modules/yn/license +0 -9
  621. package/iac/node_modules/yn/readme.md +0 -83
  622. package/react/Edit.d.ts +0 -3
  623. package/react/Edit.js +0 -10
  624. package/react/Edit.js.map +0 -1
@@ -1,1450 +0,0 @@
1
- # Amazon EKS Construct Library
2
-
3
-
4
- This construct library allows you to define [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com/eks/) clusters.
5
- In addition, the library also supports defining Kubernetes resource manifests within EKS clusters.
6
-
7
- ## Table Of Contents
8
-
9
- * [Quick Start](#quick-start)
10
- * [API Reference](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-eks-readme.html)
11
- * [Architectural Overview](#architectural-overview)
12
- * [Provisioning clusters](#provisioning-clusters)
13
- * [Managed node groups](#managed-node-groups)
14
- * [Fargate Profiles](#fargate-profiles)
15
- * [Self-managed nodes](#self-managed-nodes)
16
- * [Endpoint Access](#endpoint-access)
17
- * [ALB Controller](#alb-controller)
18
- * [VPC Support](#vpc-support)
19
- * [Kubectl Support](#kubectl-support)
20
- * [ARM64 Support](#arm64-support)
21
- * [Masters Role](#masters-role)
22
- * [Encryption](#encryption)
23
- * [Permissions and Security](#permissions-and-security)
24
- * [Applying Kubernetes Resources](#applying-kubernetes-resources)
25
- * [Kubernetes Manifests](#kubernetes-manifests)
26
- * [Helm Charts](#helm-charts)
27
- * [CDK8s Charts](#cdk8s-charts)
28
- * [Patching Kubernetes Resources](#patching-kubernetes-resources)
29
- * [Querying Kubernetes Resources](#querying-kubernetes-resources)
30
- * [Using existing clusters](#using-existing-clusters)
31
- * [Known Issues and Limitations](#known-issues-and-limitations)
32
-
33
- ## Quick Start
34
-
35
- This example defines an Amazon EKS cluster with the following configuration:
36
-
37
- * Dedicated VPC with default configuration (Implicitly created using [ec2.Vpc](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-ec2-readme.html#vpc))
38
- * A Kubernetes pod with a container based on the [paulbouwer/hello-kubernetes](https://github.com/paulbouwer/hello-kubernetes) image.
39
-
40
- ```ts
41
- // provisiong a cluster
42
- const cluster = new eks.Cluster(this, 'hello-eks', {
43
- version: eks.KubernetesVersion.V1_21,
44
- });
45
-
46
- // apply a kubernetes manifest to the cluster
47
- cluster.addManifest('mypod', {
48
- apiVersion: 'v1',
49
- kind: 'Pod',
50
- metadata: { name: 'mypod' },
51
- spec: {
52
- containers: [
53
- {
54
- name: 'hello',
55
- image: 'paulbouwer/hello-kubernetes:1.5',
56
- ports: [ { containerPort: 8080 } ],
57
- },
58
- ],
59
- },
60
- });
61
- ```
62
-
63
- In order to interact with your cluster through `kubectl`, you can use the `aws eks update-kubeconfig` [AWS CLI command](https://docs.aws.amazon.com/cli/latest/reference/eks/update-kubeconfig.html)
64
- to configure your local kubeconfig. The EKS module will define a CloudFormation output in your stack which contains the command to run. For example:
65
-
66
- ```plaintext
67
- Outputs:
68
- ClusterConfigCommand43AAE40F = aws eks update-kubeconfig --name cluster-xxxxx --role-arn arn:aws:iam::112233445566:role/yyyyy
69
- ```
70
-
71
- Execute the `aws eks update-kubeconfig ...` command in your terminal to create or update a local kubeconfig context:
72
-
73
- ```console
74
- $ aws eks update-kubeconfig --name cluster-xxxxx --role-arn arn:aws:iam::112233445566:role/yyyyy
75
- Added new context arn:aws:eks:rrrrr:112233445566:cluster/cluster-xxxxx to /home/boom/.kube/config
76
- ```
77
-
78
- And now you can simply use `kubectl`:
79
-
80
- ```console
81
- $ kubectl get all -n kube-system
82
- NAME READY STATUS RESTARTS AGE
83
- pod/aws-node-fpmwv 1/1 Running 0 21m
84
- pod/aws-node-m9htf 1/1 Running 0 21m
85
- pod/coredns-5cb4fb54c7-q222j 1/1 Running 0 23m
86
- pod/coredns-5cb4fb54c7-v9nxx 1/1 Running 0 23m
87
- ...
88
- ```
89
-
90
- ## Architectural Overview
91
-
92
- The following is a qualitative diagram of the various possible components involved in the cluster deployment.
93
-
94
- ```text
95
- +-----------------------------------------------+ +-----------------+
96
- | EKS Cluster | kubectl | |
97
- |-----------------------------------------------|<-------------+| Kubectl Handler |
98
- | | | |
99
- | | +-----------------+
100
- | +--------------------+ +-----------------+ |
101
- | | | | | |
102
- | | Managed Node Group | | Fargate Profile | | +-----------------+
103
- | | | | | | | |
104
- | +--------------------+ +-----------------+ | | Cluster Handler |
105
- | | | |
106
- +-----------------------------------------------+ +-----------------+
107
- ^ ^ +
108
- | | |
109
- | connect self managed capacity | | aws-sdk
110
- | | create/update/delete |
111
- + | v
112
- +--------------------+ + +-------------------+
113
- | | --------------+| eks.amazonaws.com |
114
- | Auto Scaling Group | +-------------------+
115
- | |
116
- +--------------------+
117
- ```
118
-
119
- In a nutshell:
120
-
121
- * `EKS Cluster` - The cluster endpoint created by EKS.
122
- * `Managed Node Group` - EC2 worker nodes managed by EKS.
123
- * `Fargate Profile` - Fargate worker nodes managed by EKS.
124
- * `Auto Scaling Group` - EC2 worker nodes managed by the user.
125
- * `KubectlHandler` - Lambda function for invoking `kubectl` commands on the cluster - created by CDK.
126
- * `ClusterHandler` - Lambda function for interacting with EKS API to manage the cluster lifecycle - created by CDK.
127
-
128
- A more detailed breakdown of each is provided further down this README.
129
-
130
- ## Provisioning clusters
131
-
132
- Creating a new cluster is done using the `Cluster` or `FargateCluster` constructs. The only required property is the kubernetes `version`.
133
-
134
- ```ts
135
- new eks.Cluster(this, 'HelloEKS', {
136
- version: eks.KubernetesVersion.V1_21,
137
- });
138
- ```
139
-
140
- You can also use `FargateCluster` to provision a cluster that uses only fargate workers.
141
-
142
- ```ts
143
- new eks.FargateCluster(this, 'HelloEKS', {
144
- version: eks.KubernetesVersion.V1_21,
145
- });
146
- ```
147
-
148
- > **NOTE: Only 1 cluster per stack is supported.** If you have a use-case for multiple clusters per stack, or would like to understand more about this limitation, see <https://github.com/aws/aws-cdk/issues/10073>.
149
-
150
- Below you'll find a few important cluster configuration options. First of which is Capacity.
151
- Capacity is the amount and the type of worker nodes that are available to the cluster for deploying resources. Amazon EKS offers 3 ways of configuring capacity, which you can combine as you like:
152
-
153
- ### Managed node groups
154
-
155
- Amazon EKS managed node groups automate the provisioning and lifecycle management of nodes (Amazon EC2 instances) for Amazon EKS Kubernetes clusters.
156
- With Amazon EKS managed node groups, you don’t need to separately provision or register the Amazon EC2 instances that provide compute capacity to run your Kubernetes applications. You can create, update, or terminate nodes for your cluster with a single operation. Nodes run using the latest Amazon EKS optimized AMIs in your AWS account while node updates and terminations gracefully drain nodes to ensure that your applications stay available.
157
-
158
- > For more details visit [Amazon EKS Managed Node Groups](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html).
159
-
160
- **Managed Node Groups are the recommended way to allocate cluster capacity.**
161
-
162
- By default, this library will allocate a managed node group with 2 *m5.large* instances (this instance type suits most common use-cases, and is good value for money).
163
-
164
- At cluster instantiation time, you can customize the number of instances and their type:
165
-
166
- ```ts
167
- new eks.Cluster(this, 'HelloEKS', {
168
- version: eks.KubernetesVersion.V1_21,
169
- defaultCapacity: 5,
170
- defaultCapacityInstance: ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.SMALL),
171
- });
172
- ```
173
-
174
- To access the node group that was created on your behalf, you can use `cluster.defaultNodegroup`.
175
-
176
- Additional customizations are available post instantiation. To apply them, set the default capacity to 0, and use the `cluster.addNodegroupCapacity` method:
177
-
178
- ```ts
179
- const cluster = new eks.Cluster(this, 'HelloEKS', {
180
- version: eks.KubernetesVersion.V1_21,
181
- defaultCapacity: 0,
182
- });
183
-
184
- cluster.addNodegroupCapacity('custom-node-group', {
185
- instanceTypes: [new ec2.InstanceType('m5.large')],
186
- minSize: 4,
187
- diskSize: 100,
188
- amiType: eks.NodegroupAmiType.AL2_X86_64_GPU,
189
- });
190
- ```
191
-
192
- To set node taints, you can set `taints` option.
193
-
194
- ```ts
195
- declare const cluster: eks.Cluster;
196
- cluster.addNodegroupCapacity('custom-node-group', {
197
- instanceTypes: [new ec2.InstanceType('m5.large')],
198
- taints: [
199
- {
200
- effect: eks.TaintEffect.NO_SCHEDULE,
201
- key: 'foo',
202
- value: 'bar',
203
- },
204
- ],
205
- });
206
- ```
207
-
208
- #### Spot Instances Support
209
-
210
- Use `capacityType` to create managed node groups comprised of spot instances. To maximize the availability of your applications while using
211
- Spot Instances, we recommend that you configure a Spot managed node group to use multiple instance types with the `instanceTypes` property.
212
-
213
- > For more details visit [Managed node group capacity types](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types).
214
-
215
-
216
- ```ts
217
- declare const cluster: eks.Cluster;
218
- cluster.addNodegroupCapacity('extra-ng-spot', {
219
- instanceTypes: [
220
- new ec2.InstanceType('c5.large'),
221
- new ec2.InstanceType('c5a.large'),
222
- new ec2.InstanceType('c5d.large'),
223
- ],
224
- minSize: 3,
225
- capacityType: eks.CapacityType.SPOT,
226
- });
227
-
228
- ```
229
-
230
- #### Launch Template Support
231
-
232
- You can specify a launch template that the node group will use. For example, this can be useful if you want to use
233
- a custom AMI or add custom user data.
234
-
235
- When supplying a custom user data script, it must be encoded in the MIME multi-part archive format, since Amazon EKS merges with its own user data. Visit the [Launch Template Docs](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html#launch-template-user-data)
236
- for mode details.
237
-
238
- ```ts
239
- declare const cluster: eks.Cluster;
240
-
241
- const userData = `MIME-Version: 1.0
242
- Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
243
-
244
- --==MYBOUNDARY==
245
- Content-Type: text/x-shellscript; charset="us-ascii"
246
-
247
- #!/bin/bash
248
- echo "Running custom user data script"
249
-
250
- --==MYBOUNDARY==--\\
251
- `;
252
- const lt = new ec2.CfnLaunchTemplate(this, 'LaunchTemplate', {
253
- launchTemplateData: {
254
- instanceType: 't3.small',
255
- userData: Fn.base64(userData),
256
- },
257
- });
258
-
259
- cluster.addNodegroupCapacity('extra-ng', {
260
- launchTemplateSpec: {
261
- id: lt.ref,
262
- version: lt.attrLatestVersionNumber,
263
- },
264
- });
265
-
266
- ```
267
-
268
- Note that when using a custom AMI, Amazon EKS doesn't merge any user data. Which means you do not need the multi-part encoding. and are responsible for supplying the required bootstrap commands for nodes to join the cluster.
269
- In the following example, `/ect/eks/bootstrap.sh` from the AMI will be used to bootstrap the node.
270
-
271
- ```ts
272
- declare const cluster: eks.Cluster;
273
- const userData = ec2.UserData.forLinux();
274
- userData.addCommands(
275
- 'set -o xtrace',
276
- `/etc/eks/bootstrap.sh ${cluster.clusterName}`,
277
- );
278
- const lt = new ec2.CfnLaunchTemplate(this, 'LaunchTemplate', {
279
- launchTemplateData: {
280
- imageId: 'some-ami-id', // custom AMI
281
- instanceType: 't3.small',
282
- userData: Fn.base64(userData.render()),
283
- },
284
- });
285
- cluster.addNodegroupCapacity('extra-ng', {
286
- launchTemplateSpec: {
287
- id: lt.ref,
288
- version: lt.attrLatestVersionNumber,
289
- },
290
- });
291
- ```
292
-
293
- You may specify one `instanceType` in the launch template or multiple `instanceTypes` in the node group, **but not both**.
294
-
295
- > For more details visit [Launch Template Support](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html).
296
-
297
- Graviton 2 instance types are supported including `c6g`, `m6g`, `r6g` and `t4g`.
298
- Graviton 3 instance types are supported including `c7g`.
299
-
300
- ### Fargate profiles
301
-
302
- AWS Fargate is a technology that provides on-demand, right-sized compute
303
- capacity for containers. With AWS Fargate, you no longer have to provision,
304
- configure, or scale groups of virtual machines to run containers. This removes
305
- the need to choose server types, decide when to scale your node groups, or
306
- optimize cluster packing.
307
-
308
- You can control which pods start on Fargate and how they run with Fargate
309
- Profiles, which are defined as part of your Amazon EKS cluster.
310
-
311
- See [Fargate Considerations](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html#fargate-considerations) in the AWS EKS User Guide.
312
-
313
- You can add Fargate Profiles to any EKS cluster defined in your CDK app
314
- through the `addFargateProfile()` method. The following example adds a profile
315
- that will match all pods from the "default" namespace:
316
-
317
- ```ts
318
- declare const cluster: eks.Cluster;
319
- cluster.addFargateProfile('MyProfile', {
320
- selectors: [ { namespace: 'default' } ],
321
- });
322
- ```
323
-
324
- You can also directly use the `FargateProfile` construct to create profiles under different scopes:
325
-
326
- ```ts
327
- declare const cluster: eks.Cluster;
328
- new eks.FargateProfile(this, 'MyProfile', {
329
- cluster,
330
- selectors: [ { namespace: 'default' } ],
331
- });
332
- ```
333
-
334
- To create an EKS cluster that **only** uses Fargate capacity, you can use `FargateCluster`.
335
- The following code defines an Amazon EKS cluster with a default Fargate Profile that matches all pods from the "kube-system" and "default" namespaces. It is also configured to [run CoreDNS on Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate-getting-started.html#fargate-gs-coredns).
336
-
337
- ```ts
338
- const cluster = new eks.FargateCluster(this, 'MyCluster', {
339
- version: eks.KubernetesVersion.V1_21,
340
- });
341
- ```
342
-
343
- `FargateCluster` will create a default `FargateProfile` which can be accessed via the cluster's `defaultProfile` property. The created profile can also be customized by passing options as with `addFargateProfile`.
344
-
345
- **NOTE**: Classic Load Balancers and Network Load Balancers are not supported on
346
- pods running on Fargate. For ingress, we recommend that you use the [ALB Ingress
347
- Controller](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html)
348
- on Amazon EKS (minimum version v1.1.4).
349
-
350
- ### Self-managed nodes
351
-
352
- Another way of allocating capacity to an EKS cluster is by using self-managed nodes.
353
- EC2 instances that are part of the auto-scaling group will serve as worker nodes for the cluster.
354
- This type of capacity is also commonly referred to as *EC2 Capacity** or *EC2 Nodes*.
355
-
356
- For a detailed overview please visit [Self Managed Nodes](https://docs.aws.amazon.com/eks/latest/userguide/worker.html).
357
-
358
- Creating an auto-scaling group and connecting it to the cluster is done using the `cluster.addAutoScalingGroupCapacity` method:
359
-
360
- ```ts
361
- declare const cluster: eks.Cluster;
362
- cluster.addAutoScalingGroupCapacity('frontend-nodes', {
363
- instanceType: new ec2.InstanceType('t2.medium'),
364
- minCapacity: 3,
365
- vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
366
- });
367
- ```
368
-
369
- To connect an already initialized auto-scaling group, use the `cluster.connectAutoScalingGroupCapacity()` method:
370
-
371
- ```ts
372
- declare const cluster: eks.Cluster;
373
- declare const asg: autoscaling.AutoScalingGroup;
374
- cluster.connectAutoScalingGroupCapacity(asg, {});
375
- ```
376
-
377
- To connect a self-managed node group to an imported cluster, use the `cluster.connectAutoScalingGroupCapacity()` method:
378
-
379
- ```ts
380
- declare const cluster: eks.Cluster;
381
- declare const asg: autoscaling.AutoScalingGroup;
382
- const importedCluster = eks.Cluster.fromClusterAttributes(this, 'ImportedCluster', {
383
- clusterName: cluster.clusterName,
384
- clusterSecurityGroupId: cluster.clusterSecurityGroupId,
385
- });
386
-
387
- importedCluster.connectAutoScalingGroupCapacity(asg, {});
388
- ```
389
-
390
- In both cases, the [cluster security group](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html#cluster-sg) will be automatically attached to
391
- the auto-scaling group, allowing for traffic to flow freely between managed and self-managed nodes.
392
-
393
- > **Note:** The default `updateType` for auto-scaling groups does not replace existing nodes. Since security groups are determined at launch time, self-managed nodes that were provisioned with version `1.78.0` or lower, will not be updated.
394
- > To apply the new configuration on all your self-managed nodes, you'll need to replace the nodes using the `UpdateType.REPLACING_UPDATE` policy for the [`updateType`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-autoscaling.AutoScalingGroup.html#updatetypespan-classapi-icon-api-icon-deprecated-titlethis-api-element-is-deprecated-its-use-is-not-recommended%EF%B8%8Fspan) property.
395
-
396
- You can customize the [/etc/eks/boostrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh) script, which is responsible
397
- for bootstrapping the node to the EKS cluster. For example, you can use `kubeletExtraArgs` to add custom node labels or taints.
398
-
399
- ```ts
400
- declare const cluster: eks.Cluster;
401
- cluster.addAutoScalingGroupCapacity('spot', {
402
- instanceType: new ec2.InstanceType('t3.large'),
403
- minCapacity: 2,
404
- bootstrapOptions: {
405
- kubeletExtraArgs: '--node-labels foo=bar,goo=far',
406
- awsApiRetryAttempts: 5,
407
- },
408
- });
409
- ```
410
-
411
- To disable bootstrapping altogether (i.e. to fully customize user-data), set `bootstrapEnabled` to `false`.
412
- You can also configure the cluster to use an auto-scaling group as the default capacity:
413
-
414
- ```ts
415
- const cluster = new eks.Cluster(this, 'HelloEKS', {
416
- version: eks.KubernetesVersion.V1_21,
417
- defaultCapacityType: eks.DefaultCapacityType.EC2,
418
- });
419
- ```
420
-
421
- This will allocate an auto-scaling group with 2 *m5.large* instances (this instance type suits most common use-cases, and is good value for money).
422
- To access the `AutoScalingGroup` that was created on your behalf, you can use `cluster.defaultCapacity`.
423
- You can also independently create an `AutoScalingGroup` and connect it to the cluster using the `cluster.connectAutoScalingGroupCapacity` method:
424
-
425
- ```ts
426
- declare const cluster: eks.Cluster;
427
- declare const asg: autoscaling.AutoScalingGroup;
428
- cluster.connectAutoScalingGroupCapacity(asg, {});
429
- ```
430
-
431
- This will add the necessary user-data to access the apiserver and configure all connections, roles, and tags needed for the instances in the auto-scaling group to properly join the cluster.
432
-
433
- #### Spot Instances
434
-
435
- When using self-managed nodes, you can configure the capacity to use spot instances, greatly reducing capacity cost.
436
- To enable spot capacity, use the `spotPrice` property:
437
-
438
- ```ts
439
- declare const cluster: eks.Cluster;
440
- cluster.addAutoScalingGroupCapacity('spot', {
441
- spotPrice: '0.1094',
442
- instanceType: new ec2.InstanceType('t3.large'),
443
- maxCapacity: 10,
444
- });
445
- ```
446
-
447
- > Spot instance nodes will be labeled with `lifecycle=Ec2Spot` and tainted with `PreferNoSchedule`.
448
-
449
- The [AWS Node Termination Handler](https://github.com/aws/aws-node-termination-handler) `DaemonSet` will be
450
- installed from [Amazon EKS Helm chart repository](https://github.com/aws/eks-charts/tree/master/stable/aws-node-termination-handler) on these nodes.
451
- The termination handler ensures that the Kubernetes control plane responds appropriately to events that
452
- can cause your EC2 instance to become unavailable, such as [EC2 maintenance events](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html)
453
- and [EC2 Spot interruptions](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html) and helps gracefully stop all pods running on spot nodes that are about to be
454
- terminated.
455
-
456
- > Handler Version: [1.7.0](https://github.com/aws/aws-node-termination-handler/releases/tag/v1.7.0)
457
- >
458
- > Chart Version: [0.9.5](https://github.com/aws/eks-charts/blob/v0.0.28/stable/aws-node-termination-handler/Chart.yaml)
459
-
460
- To disable the installation of the termination handler, set the `spotInterruptHandler` property to `false`. This applies both to `addAutoScalingGroupCapacity` and `connectAutoScalingGroupCapacity`.
461
-
462
- #### Bottlerocket
463
-
464
- [Bottlerocket](https://aws.amazon.com/bottlerocket/) is a Linux-based open-source operating system that is purpose-built by Amazon Web Services for running containers on virtual machines or bare metal hosts.
465
-
466
- `Bottlerocket` is supported when using managed nodegroups or self-managed auto-scaling groups.
467
-
468
- To create a Bottlerocket managed nodegroup:
469
-
470
- ```ts
471
- declare const cluster: eks.Cluster;
472
- cluster.addNodegroupCapacity('BottlerocketNG', {
473
- amiType: eks.NodegroupAmiType.BOTTLEROCKET_X86_64,
474
- });
475
- ```
476
-
477
- The following example will create an auto-scaling group of 2 `t3.small` Linux instances running with the `Bottlerocket` AMI.
478
-
479
- ```ts
480
- declare const cluster: eks.Cluster;
481
- cluster.addAutoScalingGroupCapacity('BottlerocketNodes', {
482
- instanceType: new ec2.InstanceType('t3.small'),
483
- minCapacity: 2,
484
- machineImageType: eks.MachineImageType.BOTTLEROCKET,
485
- });
486
- ```
487
-
488
- The specific Bottlerocket AMI variant will be auto selected according to the k8s version for the `x86_64` architecture.
489
- For example, if the Amazon EKS cluster version is `1.17`, the Bottlerocket AMI variant will be auto selected as
490
- `aws-k8s-1.17` behind the scene.
491
-
492
- > See [Variants](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#variants) for more details.
493
-
494
- Please note Bottlerocket does not allow to customize bootstrap options and `bootstrapOptions` properties is not supported when you create the `Bottlerocket` capacity.
495
-
496
- For more details about Bottlerocket, see [Bottlerocket FAQs](https://aws.amazon.com/bottlerocket/faqs/) and [Bottlerocket Open Source Blog](https://aws.amazon.com/blogs/opensource/announcing-the-general-availability-of-bottlerocket-an-open-source-linux-distribution-purpose-built-to-run-containers/).
497
-
498
- ### Endpoint Access
499
-
500
- When you create a new cluster, Amazon EKS creates an endpoint for the managed Kubernetes API server that you use to communicate with your cluster (using Kubernetes management tools such as `kubectl`)
501
-
502
- By default, this API server endpoint is public to the internet, and access to the API server is secured using a combination of
503
- AWS Identity and Access Management (IAM) and native Kubernetes [Role Based Access Control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC).
504
-
505
- You can configure the [cluster endpoint access](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) by using the `endpointAccess` property:
506
-
507
- ```ts
508
- const cluster = new eks.Cluster(this, 'hello-eks', {
509
- version: eks.KubernetesVersion.V1_21,
510
- endpointAccess: eks.EndpointAccess.PRIVATE, // No access outside of your VPC.
511
- });
512
- ```
513
-
514
- The default value is `eks.EndpointAccess.PUBLIC_AND_PRIVATE`. Which means the cluster endpoint is accessible from outside of your VPC, but worker node traffic and `kubectl` commands issued by this library stay within your VPC.
515
-
516
- ### Alb Controller
517
-
518
- Some Kubernetes resources are commonly implemented on AWS with the help of the [ALB Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.3/).
519
-
520
- From the docs:
521
-
522
- > AWS Load Balancer Controller is a controller to help manage Elastic Load Balancers for a Kubernetes cluster.
523
- >
524
- > * It satisfies Kubernetes Ingress resources by provisioning Application Load Balancers.
525
- > * It satisfies Kubernetes Service resources by provisioning Network Load Balancers.
526
-
527
- To deploy the controller on your EKS cluster, configure the `albController` property:
528
-
529
- ```ts
530
- new eks.Cluster(this, 'HelloEKS', {
531
- version: eks.KubernetesVersion.V1_21,
532
- albController: {
533
- version: eks.AlbControllerVersion.V2_4_1,
534
- },
535
- });
536
- ```
537
-
538
- Querying the controller pods should look something like this:
539
-
540
- ```console
541
- ❯ kubectl get pods -n kube-system
542
- NAME READY STATUS RESTARTS AGE
543
- aws-load-balancer-controller-76bd6c7586-d929p 1/1 Running 0 109m
544
- aws-load-balancer-controller-76bd6c7586-fqxph 1/1 Running 0 109m
545
- ...
546
- ...
547
- ```
548
-
549
- Every Kubernetes manifest that utilizes the ALB Controller is effectively dependant on the controller.
550
- If the controller is deleted before the manifest, it might result in dangling ELB/ALB resources.
551
- Currently, the EKS construct library does not detect such dependencies, and they should be done explicitly.
552
-
553
- For example:
554
-
555
- ```ts
556
- declare const cluster: eks.Cluster;
557
- const manifest = cluster.addManifest('manifest', {/* ... */});
558
- if (cluster.albController) {
559
- manifest.node.addDependency(cluster.albController);
560
- }
561
- ```
562
-
563
- ### VPC Support
564
-
565
- You can specify the VPC of the cluster using the `vpc` and `vpcSubnets` properties:
566
-
567
- ```ts
568
- declare const vpc: ec2.Vpc;
569
-
570
- new eks.Cluster(this, 'HelloEKS', {
571
- version: eks.KubernetesVersion.V1_21,
572
- vpc,
573
- vpcSubnets: [{ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }],
574
- });
575
- ```
576
-
577
- > Note: Isolated VPCs (i.e with no internet access) are not currently supported. See https://github.com/aws/aws-cdk/issues/12171
578
-
579
- If you do not specify a VPC, one will be created on your behalf, which you can then access via `cluster.vpc`. The cluster VPC will be associated to any EKS managed capacity (i.e Managed Node Groups and Fargate Profiles).
580
-
581
- Please note that the `vpcSubnets` property defines the subnets where EKS will place the _control plane_ ENIs. To choose
582
- the subnets where EKS will place the worker nodes, please refer to the **Provisioning clusters** section above.
583
-
584
- If you allocate self managed capacity, you can specify which subnets should the auto-scaling group use:
585
-
586
- ```ts
587
- declare const vpc: ec2.Vpc;
588
- declare const cluster: eks.Cluster;
589
- cluster.addAutoScalingGroupCapacity('nodes', {
590
- vpcSubnets: { subnets: vpc.privateSubnets },
591
- instanceType: new ec2.InstanceType('t2.medium'),
592
- });
593
- ```
594
-
595
- There are two additional components you might want to provision within the VPC.
596
-
597
- #### Kubectl Handler
598
-
599
- The `KubectlHandler` is a Lambda function responsible to issuing `kubectl` and `helm` commands against the cluster when you add resource manifests to the cluster.
600
-
601
- The handler association to the VPC is derived from the `endpointAccess` configuration. The rule of thumb is: *If the cluster VPC can be associated, it will be*.
602
-
603
- Breaking this down, it means that if the endpoint exposes private access (via `EndpointAccess.PRIVATE` or `EndpointAccess.PUBLIC_AND_PRIVATE`), and the VPC contains **private** subnets, the Lambda function will be provisioned inside the VPC and use the private subnets to interact with the cluster. This is the common use-case.
604
-
605
- If the endpoint does not expose private access (via `EndpointAccess.PUBLIC`) **or** the VPC does not contain private subnets, the function will not be provisioned within the VPC.
606
-
607
- If your use-case requires control over the IAM role that the KubeCtl Handler assumes, a custom role can be passed through the ClusterProps (as `kubectlLambdaRole`) of the EKS Cluster construct.
608
-
609
- #### Cluster Handler
610
-
611
- The `ClusterHandler` is a set of Lambda functions (`onEventHandler`, `isCompleteHandler`) responsible for interacting with the EKS API in order to control the cluster lifecycle. To provision these functions inside the VPC, set the `placeClusterHandlerInVpc` property to `true`. This will place the functions inside the private subnets of the VPC based on the selection strategy specified in the [`vpcSubnets`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-eks.Cluster.html#vpcsubnetsspan-classapi-icon-api-icon-experimental-titlethis-api-element-is-experimental-it-may-change-without-noticespan) property.
612
-
613
- You can configure the environment of the Cluster Handler functions by specifying it at cluster instantiation. For example, this can be useful in order to configure an http proxy:
614
-
615
- ```ts
616
- declare const proxyInstanceSecurityGroup: ec2.SecurityGroup;
617
- const cluster = new eks.Cluster(this, 'hello-eks', {
618
- version: eks.KubernetesVersion.V1_21,
619
- clusterHandlerEnvironment: {
620
- https_proxy: 'http://proxy.myproxy.com',
621
- },
622
- /**
623
- * If the proxy is not open publicly, you can pass a security group to the
624
- * Cluster Handler Lambdas so that it can reach the proxy.
625
- */
626
- clusterHandlerSecurityGroup: proxyInstanceSecurityGroup,
627
- });
628
- ```
629
-
630
- ### Kubectl Support
631
-
632
- The resources are created in the cluster by running `kubectl apply` from a python lambda function.
633
-
634
- By default, CDK will create a new python lambda function to apply your k8s manifests. If you want to use an existing kubectl provider function, for example with tight trusted entities on your IAM Roles - you can import the existing provider and then use the imported provider when importing the cluster:
635
-
636
- ```ts
637
- const handlerRole = iam.Role.fromRoleArn(this, 'HandlerRole', 'arn:aws:iam::123456789012:role/lambda-role');
638
- const kubectlProvider = eks.KubectlProvider.fromKubectlProviderAttributes(this, 'KubectlProvider', {
639
- functionArn: 'arn:aws:lambda:us-east-2:123456789012:function:my-function:1',
640
- kubectlRoleArn: 'arn:aws:iam::123456789012:role/kubectl-role',
641
- handlerRole,
642
- });
643
-
644
- const cluster = eks.Cluster.fromClusterAttributes(this, 'Cluster', {
645
- clusterName: 'cluster',
646
- kubectlProvider,
647
- });
648
- ```
649
-
650
- #### Environment
651
-
652
- You can configure the environment of this function by specifying it at cluster instantiation. For example, this can be useful in order to configure an http proxy:
653
-
654
- ```ts
655
- const cluster = new eks.Cluster(this, 'hello-eks', {
656
- version: eks.KubernetesVersion.V1_21,
657
- kubectlEnvironment: {
658
- 'http_proxy': 'http://proxy.myproxy.com',
659
- },
660
- });
661
- ```
662
-
663
- #### Runtime
664
-
665
- The kubectl handler uses `kubectl`, `helm` and the `aws` CLI in order to
666
- interact with the cluster. These are bundled into AWS Lambda layers included in
667
- the `@aws-cdk/lambda-layer-awscli` and `@aws-cdk/lambda-layer-kubectl` modules.
668
-
669
- You can specify a custom `lambda.LayerVersion` if you wish to use a different
670
- version of these tools. The handler expects the layer to include the following
671
- three executables:
672
-
673
- ```text
674
- helm/helm
675
- kubectl/kubectl
676
- awscli/aws
677
- ```
678
-
679
- See more information in the
680
- [Dockerfile](https://github.com/aws/aws-cdk/tree/main/packages/%40aws-cdk/lambda-layer-awscli/layer) for @aws-cdk/lambda-layer-awscli
681
- and the
682
- [Dockerfile](https://github.com/aws/aws-cdk/tree/main/packages/%40aws-cdk/lambda-layer-kubectl/layer) for @aws-cdk/lambda-layer-kubectl.
683
-
684
- ```ts
685
- const layer = new lambda.LayerVersion(this, 'KubectlLayer', {
686
- code: lambda.Code.fromAsset('layer.zip'),
687
- });
688
- ```
689
-
690
- Now specify when the cluster is defined:
691
-
692
- ```ts
693
- declare const layer: lambda.LayerVersion;
694
- declare const vpc: ec2.Vpc;
695
-
696
- const cluster1 = new eks.Cluster(this, 'MyCluster', {
697
- kubectlLayer: layer,
698
- vpc,
699
- clusterName: 'cluster-name',
700
- version: eks.KubernetesVersion.V1_21,
701
- });
702
-
703
- // or
704
- const cluster2 = eks.Cluster.fromClusterAttributes(this, 'MyCluster', {
705
- kubectlLayer: layer,
706
- vpc,
707
- clusterName: 'cluster-name',
708
- });
709
- ```
710
-
711
- #### Memory
712
-
713
- By default, the kubectl provider is configured with 1024MiB of memory. You can use the `kubectlMemory` option to specify the memory size for the AWS Lambda function:
714
-
715
- ```ts
716
- new eks.Cluster(this, 'MyCluster', {
717
- kubectlMemory: Size.gibibytes(4),
718
- version: eks.KubernetesVersion.V1_21,
719
- });
720
-
721
- // or
722
- declare const vpc: ec2.Vpc;
723
- eks.Cluster.fromClusterAttributes(this, 'MyCluster', {
724
- kubectlMemory: Size.gibibytes(4),
725
- vpc,
726
- clusterName: 'cluster-name',
727
- });
728
- ```
729
-
730
- ### ARM64 Support
731
-
732
- Instance types with `ARM64` architecture are supported in both managed nodegroup and self-managed capacity. Simply specify an ARM64 `instanceType` (such as `m6g.medium`), and the latest
733
- Amazon Linux 2 AMI for ARM64 will be automatically selected.
734
-
735
- ```ts
736
- declare const cluster: eks.Cluster;
737
- // add a managed ARM64 nodegroup
738
- cluster.addNodegroupCapacity('extra-ng-arm', {
739
- instanceTypes: [new ec2.InstanceType('m6g.medium')],
740
- minSize: 2,
741
- });
742
-
743
- // add a self-managed ARM64 nodegroup
744
- cluster.addAutoScalingGroupCapacity('self-ng-arm', {
745
- instanceType: new ec2.InstanceType('m6g.medium'),
746
- minCapacity: 2,
747
- })
748
- ```
749
-
750
- ### Masters Role
751
-
752
- When you create a cluster, you can specify a `mastersRole`. The `Cluster` construct will associate this role with the `system:masters` [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) group, giving it super-user access to the cluster.
753
-
754
- ```ts
755
- declare const role: iam.Role;
756
- new eks.Cluster(this, 'HelloEKS', {
757
- version: eks.KubernetesVersion.V1_21,
758
- mastersRole: role,
759
- });
760
- ```
761
-
762
- If you do not specify it, a default role will be created on your behalf, that can be assumed by anyone in the account with `sts:AssumeRole` permissions for this role.
763
-
764
- This is the role you see as part of the stack outputs mentioned in the [Quick Start](#quick-start).
765
-
766
- ```console
767
- $ aws eks update-kubeconfig --name cluster-xxxxx --role-arn arn:aws:iam::112233445566:role/yyyyy
768
- Added new context arn:aws:eks:rrrrr:112233445566:cluster/cluster-xxxxx to /home/boom/.kube/config
769
- ```
770
-
771
- ### Encryption
772
-
773
- When you create an Amazon EKS cluster, envelope encryption of Kubernetes secrets using the AWS Key Management Service (AWS KMS) can be enabled.
774
- The documentation on [creating a cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
775
- can provide more details about the customer master key (CMK) that can be used for the encryption.
776
-
777
- You can use the `secretsEncryptionKey` to configure which key the cluster will use to encrypt Kubernetes secrets. By default, an AWS Managed key will be used.
778
-
779
- > This setting can only be specified when the cluster is created and cannot be updated.
780
-
781
- ```ts
782
- const secretsKey = new kms.Key(this, 'SecretsKey');
783
- const cluster = new eks.Cluster(this, 'MyCluster', {
784
- secretsEncryptionKey: secretsKey,
785
- version: eks.KubernetesVersion.V1_21,
786
- });
787
- ```
788
-
789
- You can also use a similar configuration for running a cluster built using the FargateCluster construct.
790
-
791
- ```ts
792
- const secretsKey = new kms.Key(this, 'SecretsKey');
793
- const cluster = new eks.FargateCluster(this, 'MyFargateCluster', {
794
- secretsEncryptionKey: secretsKey,
795
- version: eks.KubernetesVersion.V1_21,
796
- });
797
- ```
798
-
799
- The Amazon Resource Name (ARN) for that CMK can be retrieved.
800
-
801
- ```ts
802
- declare const cluster: eks.Cluster;
803
- const clusterEncryptionConfigKeyArn = cluster.clusterEncryptionConfigKeyArn;
804
- ```
805
-
806
- ## Permissions and Security
807
-
808
- Amazon EKS provides several mechanism of securing the cluster and granting permissions to specific IAM users and roles.
809
-
810
- ### AWS IAM Mapping
811
-
812
- As described in the [Amazon EKS User Guide](https://docs.aws.amazon.com/en_us/eks/latest/userguide/add-user-role.html), you can map AWS IAM users and roles to [Kubernetes Role-based access control (RBAC)](https://kubernetes.io/docs/reference/access-authn-authz/rbac).
813
-
814
- The Amazon EKS construct manages the *aws-auth* `ConfigMap` Kubernetes resource on your behalf and exposes an API through the `cluster.awsAuth` for mapping
815
- users, roles and accounts.
816
-
817
- Furthermore, when auto-scaling group capacity is added to the cluster, the IAM instance role of the auto-scaling group will be automatically mapped to RBAC so nodes can connect to the cluster. No manual mapping is required.
818
-
819
- For example, let's say you want to grant an IAM user administrative privileges on your cluster:
820
-
821
- ```ts
822
- declare const cluster: eks.Cluster;
823
- const adminUser = new iam.User(this, 'Admin');
824
- cluster.awsAuth.addUserMapping(adminUser, { groups: [ 'system:masters' ]});
825
- ```
826
-
827
- A convenience method for mapping a role to the `system:masters` group is also available:
828
-
829
- ```ts
830
- declare const cluster: eks.Cluster;
831
- declare const role: iam.Role;
832
- cluster.awsAuth.addMastersRole(role);
833
- ```
834
-
835
- ### Cluster Security Group
836
-
837
- When you create an Amazon EKS cluster, a [cluster security group](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html)
838
- is automatically created as well. This security group is designed to allow all traffic from the control plane and managed node groups to flow freely
839
- between each other.
840
-
841
- The ID for that security group can be retrieved after creating the cluster.
842
-
843
- ```ts
844
- declare const cluster: eks.Cluster;
845
- const clusterSecurityGroupId = cluster.clusterSecurityGroupId;
846
- ```
847
-
848
- ### Node SSH Access
849
-
850
- If you want to be able to SSH into your worker nodes, you must already have an SSH key in the region you're connecting to and pass it when
851
- you add capacity to the cluster. You must also be able to connect to the hosts (meaning they must have a public IP and you
852
- should be allowed to connect to them on port 22):
853
-
854
- See [SSH into nodes](test/example.ssh-into-nodes.lit.ts) for a code example.
855
-
856
- If you want to SSH into nodes in a private subnet, you should set up a bastion host in a public subnet. That setup is recommended, but is
857
- unfortunately beyond the scope of this documentation.
858
-
859
- ### Service Accounts
860
-
861
- With services account you can provide Kubernetes Pods access to AWS resources.
862
-
863
- ```ts
864
- declare const cluster: eks.Cluster;
865
- // add service account
866
- const serviceAccount = cluster.addServiceAccount('MyServiceAccount');
867
-
868
- const bucket = new s3.Bucket(this, 'Bucket');
869
- bucket.grantReadWrite(serviceAccount);
870
-
871
- const mypod = cluster.addManifest('mypod', {
872
- apiVersion: 'v1',
873
- kind: 'Pod',
874
- metadata: { name: 'mypod' },
875
- spec: {
876
- serviceAccountName: serviceAccount.serviceAccountName,
877
- containers: [
878
- {
879
- name: 'hello',
880
- image: 'paulbouwer/hello-kubernetes:1.5',
881
- ports: [ { containerPort: 8080 } ],
882
- },
883
- ],
884
- },
885
- });
886
-
887
- // create the resource after the service account.
888
- mypod.node.addDependency(serviceAccount);
889
-
890
- // print the IAM role arn for this service account
891
- new CfnOutput(this, 'ServiceAccountIamRole', { value: serviceAccount.role.roleArn });
892
- ```
893
-
894
- Note that using `serviceAccount.serviceAccountName` above **does not** translate into a resource dependency.
895
- This is why an explicit dependency is needed. See <https://github.com/aws/aws-cdk/issues/9910> for more details.
896
-
897
- It is possible to pass annotations and labels to the service account.
898
-
899
- ```ts
900
- declare const cluster: eks.Cluster;
901
- // add service account with annotations and labels
902
- const serviceAccount = cluster.addServiceAccount('MyServiceAccount', {
903
- annotations: {
904
- 'eks.amazonaws.com/sts-regional-endpoints': 'false',
905
- },
906
- labels: {
907
- 'some-label': 'with-some-value',
908
- },
909
- });
910
- ```
911
-
912
- You can also add service accounts to existing clusters.
913
- To do so, pass the `openIdConnectProvider` property when you import the cluster into the application.
914
-
915
- ```ts
916
- // you can import an existing provider
917
- const provider = eks.OpenIdConnectProvider.fromOpenIdConnectProviderArn(this, 'Provider', 'arn:aws:iam::123456:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/AB123456ABC');
918
-
919
- // or create a new one using an existing issuer url
920
- declare const issuerUrl: string;
921
- const provider2 = new eks.OpenIdConnectProvider(this, 'Provider', {
922
- url: issuerUrl,
923
- });
924
-
925
- const cluster = eks.Cluster.fromClusterAttributes(this, 'MyCluster', {
926
- clusterName: 'Cluster',
927
- openIdConnectProvider: provider,
928
- kubectlRoleArn: 'arn:aws:iam::123456:role/service-role/k8sservicerole',
929
- });
930
-
931
- const serviceAccount = cluster.addServiceAccount('MyServiceAccount');
932
-
933
- const bucket = new s3.Bucket(this, 'Bucket');
934
- bucket.grantReadWrite(serviceAccount);
935
- ```
936
-
937
- Note that adding service accounts requires running `kubectl` commands against the cluster.
938
- This means you must also pass the `kubectlRoleArn` when importing the cluster.
939
- See [Using existing Clusters](https://github.com/aws/aws-cdk/tree/main/packages/@aws-cdk/aws-eks#using-existing-clusters).
940
-
941
- ## Applying Kubernetes Resources
942
-
943
- The library supports several popular resource deployment mechanisms, among which are:
944
-
945
- ### Kubernetes Manifests
946
-
947
- The `KubernetesManifest` construct or `cluster.addManifest` method can be used
948
- to apply Kubernetes resource manifests to this cluster.
949
-
950
- > When using `cluster.addManifest`, the manifest construct is defined within the cluster's stack scope. If the manifest contains
951
- > attributes from a different stack which depend on the cluster stack, a circular dependency will be created and you will get a synth time error.
952
- > To avoid this, directly use `new KubernetesManifest` to create the manifest in the scope of the other stack.
953
-
954
- The following examples will deploy the [paulbouwer/hello-kubernetes](https://github.com/paulbouwer/hello-kubernetes)
955
- service on the cluster:
956
-
957
- ```ts
958
- declare const cluster: eks.Cluster;
959
- const appLabel = { app: "hello-kubernetes" };
960
-
961
- const deployment = {
962
- apiVersion: "apps/v1",
963
- kind: "Deployment",
964
- metadata: { name: "hello-kubernetes" },
965
- spec: {
966
- replicas: 3,
967
- selector: { matchLabels: appLabel },
968
- template: {
969
- metadata: { labels: appLabel },
970
- spec: {
971
- containers: [
972
- {
973
- name: "hello-kubernetes",
974
- image: "paulbouwer/hello-kubernetes:1.5",
975
- ports: [ { containerPort: 8080 } ],
976
- },
977
- ],
978
- },
979
- },
980
- },
981
- };
982
-
983
- const service = {
984
- apiVersion: "v1",
985
- kind: "Service",
986
- metadata: { name: "hello-kubernetes" },
987
- spec: {
988
- type: "LoadBalancer",
989
- ports: [ { port: 80, targetPort: 8080 } ],
990
- selector: appLabel,
991
- }
992
- };
993
-
994
- // option 1: use a construct
995
- new eks.KubernetesManifest(this, 'hello-kub', {
996
- cluster,
997
- manifest: [ deployment, service ],
998
- });
999
-
1000
- // or, option2: use `addManifest`
1001
- cluster.addManifest('hello-kub', service, deployment);
1002
- ```
1003
-
1004
- #### ALB Controller Integration
1005
-
1006
- The `KubernetesManifest` construct can detect ingress resources inside your manifest and automatically add the necessary annotations
1007
- so they are picked up by the ALB Controller.
1008
-
1009
- > See [Alb Controller](#alb-controller)
1010
-
1011
- To that end, it offers the following properties:
1012
-
1013
- * `ingressAlb` - Signal that the ingress detection should be done.
1014
- * `ingressAlbScheme` - Which ALB scheme should be applied. Defaults to `internal`.
1015
-
1016
- #### Adding resources from a URL
1017
-
1018
- The following example will deploy the resource manifest hosting on remote server:
1019
-
1020
- ```text
1021
- // This example is only available in TypeScript
1022
-
1023
- import * as yaml from 'js-yaml';
1024
- import * as request from 'sync-request';
1025
-
1026
- declare const cluster: eks.Cluster;
1027
- const manifestUrl = 'https://url/of/manifest.yaml';
1028
- const manifest = yaml.safeLoadAll(request('GET', manifestUrl).getBody());
1029
- cluster.addManifest('my-resource', manifest);
1030
- ```
1031
-
1032
- #### Dependencies
1033
-
1034
- There are cases where Kubernetes resources must be deployed in a specific order.
1035
- For example, you cannot define a resource in a Kubernetes namespace before the
1036
- namespace was created.
1037
-
1038
- You can represent dependencies between `KubernetesManifest`s using
1039
- `resource.node.addDependency()`:
1040
-
1041
- ```ts
1042
- declare const cluster: eks.Cluster;
1043
- const namespace = cluster.addManifest('my-namespace', {
1044
- apiVersion: 'v1',
1045
- kind: 'Namespace',
1046
- metadata: { name: 'my-app' },
1047
- });
1048
-
1049
- const service = cluster.addManifest('my-service', {
1050
- metadata: {
1051
- name: 'myservice',
1052
- namespace: 'my-app',
1053
- },
1054
- spec: { }, // ...
1055
- });
1056
-
1057
- service.node.addDependency(namespace); // will apply `my-namespace` before `my-service`.
1058
- ```
1059
-
1060
- **NOTE:** when a `KubernetesManifest` includes multiple resources (either directly
1061
- or through `cluster.addManifest()`) (e.g. `cluster.addManifest('foo', r1, r2,
1062
- r3,...)`), these resources will be applied as a single manifest via `kubectl`
1063
- and will be applied sequentially (the standard behavior in `kubectl`).
1064
-
1065
- ---
1066
-
1067
- Since Kubernetes manifests are implemented as CloudFormation resources in the
1068
- CDK. This means that if the manifest is deleted from your code (or the stack is
1069
- deleted), the next `cdk deploy` will issue a `kubectl delete` command and the
1070
- Kubernetes resources in that manifest will be deleted.
1071
-
1072
- #### Resource Pruning
1073
-
1074
- When a resource is deleted from a Kubernetes manifest, the EKS module will
1075
- automatically delete these resources by injecting a _prune label_ to all
1076
- manifest resources. This label is then passed to [`kubectl apply --prune`].
1077
-
1078
- [`kubectl apply --prune`]: https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/#alternative-kubectl-apply-f-directory-prune-l-your-label
1079
-
1080
- Pruning is enabled by default but can be disabled through the `prune` option
1081
- when a cluster is defined:
1082
-
1083
- ```ts
1084
- new eks.Cluster(this, 'MyCluster', {
1085
- version: eks.KubernetesVersion.V1_21,
1086
- prune: false,
1087
- });
1088
- ```
1089
-
1090
- #### Manifests Validation
1091
-
1092
- The `kubectl` CLI supports applying a manifest by skipping the validation.
1093
- This can be accomplished by setting the `skipValidation` flag to `true` in the `KubernetesManifest` props.
1094
-
1095
- ```ts
1096
- declare const cluster: eks.Cluster;
1097
- new eks.KubernetesManifest(this, 'HelloAppWithoutValidation', {
1098
- cluster,
1099
- manifest: [{ foo: 'bar' }],
1100
- skipValidation: true,
1101
- });
1102
- ```
1103
-
1104
- ### Helm Charts
1105
-
1106
- The `HelmChart` construct or `cluster.addHelmChart` method can be used
1107
- to add Kubernetes resources to this cluster using Helm.
1108
-
1109
- > When using `cluster.addHelmChart`, the manifest construct is defined within the cluster's stack scope. If the manifest contains
1110
- > attributes from a different stack which depend on the cluster stack, a circular dependency will be created and you will get a synth time error.
1111
- > To avoid this, directly use `new HelmChart` to create the chart in the scope of the other stack.
1112
-
1113
- The following example will install the [NGINX Ingress Controller](https://kubernetes.github.io/ingress-nginx/) to your cluster using Helm.
1114
-
1115
- ```ts
1116
- declare const cluster: eks.Cluster;
1117
- // option 1: use a construct
1118
- new eks.HelmChart(this, 'NginxIngress', {
1119
- cluster,
1120
- chart: 'nginx-ingress',
1121
- repository: 'https://helm.nginx.com/stable',
1122
- namespace: 'kube-system',
1123
- });
1124
-
1125
- // or, option2: use `addHelmChart`
1126
- cluster.addHelmChart('NginxIngress', {
1127
- chart: 'nginx-ingress',
1128
- repository: 'https://helm.nginx.com/stable',
1129
- namespace: 'kube-system',
1130
- });
1131
- ```
1132
-
1133
- Helm charts will be installed and updated using `helm upgrade --install`, where a few parameters
1134
- are being passed down (such as `repo`, `values`, `version`, `namespace`, `wait`, `timeout`, etc).
1135
- This means that if the chart is added to CDK with the same release name, it will try to update
1136
- the chart in the cluster.
1137
-
1138
- Additionally, the `chartAsset` property can be an `aws-s3-assets.Asset`. This allows the use of local, private helm charts.
1139
-
1140
- ```ts
1141
- import * as s3Assets from 'aws-cdk-lib/aws-s3-assets';
1142
-
1143
- declare const cluster: eks.Cluster;
1144
- const chartAsset = new s3Assets.Asset(this, 'ChartAsset', {
1145
- path: '/path/to/asset'
1146
- });
1147
-
1148
- cluster.addHelmChart('test-chart', {
1149
- chartAsset: chartAsset,
1150
- });
1151
- ```
1152
-
1153
- ### OCI Charts
1154
-
1155
- OCI charts are also supported.
1156
- Also replace the `${VARS}` with appropriate values.
1157
-
1158
- ```ts
1159
- declare const cluster: eks.Cluster;
1160
- // option 1: use a construct
1161
- new eks.HelmChart(this, 'MyOCIChart', {
1162
- cluster,
1163
- chart: 'some-chart',
1164
- repository: 'oci://${ACCOUNT_ID}.dkr.ecr.${ACCOUNT_REGION}.amazonaws.com/${REPO_NAME}',
1165
- namespace: 'oci',
1166
- version: '0.0.1'
1167
- });
1168
-
1169
- ```
1170
-
1171
- Helm charts are implemented as CloudFormation resources in CDK.
1172
- This means that if the chart is deleted from your code (or the stack is
1173
- deleted), the next `cdk deploy` will issue a `helm uninstall` command and the
1174
- Helm chart will be deleted.
1175
-
1176
- When there is no `release` defined, a unique ID will be allocated for the release based
1177
- on the construct path.
1178
-
1179
- By default, all Helm charts will be installed concurrently. In some cases, this
1180
- could cause race conditions where two Helm charts attempt to deploy the same
1181
- resource or if Helm charts depend on each other. You can use
1182
- `chart.node.addDependency()` in order to declare a dependency order between
1183
- charts:
1184
-
1185
- ```ts
1186
- declare const cluster: eks.Cluster;
1187
- const chart1 = cluster.addHelmChart('MyChart', {
1188
- chart: 'foo',
1189
- });
1190
- const chart2 = cluster.addHelmChart('MyChart', {
1191
- chart: 'bar',
1192
- });
1193
-
1194
- chart2.node.addDependency(chart1);
1195
- ```
1196
-
1197
- #### CDK8s Charts
1198
-
1199
- [CDK8s](https://cdk8s.io/) is an open-source library that enables Kubernetes manifest authoring using familiar programming languages. It is founded on the same technologies as the AWS CDK, such as [`constructs`](https://github.com/aws/constructs) and [`jsii`](https://github.com/aws/jsii).
1200
-
1201
- > To learn more about cdk8s, visit the [Getting Started](https://cdk8s.io/docs/latest/getting-started/) tutorials.
1202
-
1203
- The EKS module natively integrates with cdk8s and allows you to apply cdk8s charts on AWS EKS clusters via the `cluster.addCdk8sChart` method.
1204
-
1205
- In addition to `cdk8s`, you can also use [`cdk8s+`](https://cdk8s.io/docs/latest/plus/), which provides higher level abstraction for the core kubernetes api objects.
1206
- You can think of it like the `L2` constructs for Kubernetes. Any other `cdk8s` based libraries are also supported, for example [`cdk8s-debore`](https://github.com/toricls/cdk8s-debore).
1207
-
1208
- To get started, add the following dependencies to your `package.json` file:
1209
-
1210
- ```json
1211
- "dependencies": {
1212
- "cdk8s": "^2.0.0",
1213
- "cdk8s-plus-22": "^2.0.0-rc.30",
1214
- "constructs": "^10.0.0"
1215
- }
1216
- ```
1217
-
1218
- Note that here we are using `cdk8s-plus-22` as we are targeting Kubernetes version 1.22.0. If you operate a different kubernetes version, you should
1219
- use the corresponding `cdk8s-plus-XX` library.
1220
- See [Select the appropriate cdk8s+ library](https://cdk8s.io/docs/latest/plus/#i-operate-kubernetes-version-1xx-which-cdk8s-library-should-i-be-using)
1221
- for more details.
1222
-
1223
- Similarly to how you would create a stack by extending `aws-cdk-lib.Stack`, we recommend you create a chart of your own that extends `cdk8s.Chart`,
1224
- and add your kubernetes resources to it. You can use `aws-cdk` construct attributes and properties inside your `cdk8s` construct freely.
1225
-
1226
- In this example we create a chart that accepts an `s3.Bucket` and passes its name to a kubernetes pod as an environment variable.
1227
-
1228
- `+ my-chart.ts`
1229
-
1230
- ```ts nofixture
1231
- import { aws_s3 as s3 } from 'aws-cdk-lib';
1232
- import * as constructs from 'constructs';
1233
- import * as cdk8s from 'cdk8s';
1234
- import * as kplus from 'cdk8s-plus-22';
1235
-
1236
- export interface MyChartProps {
1237
- readonly bucket: s3.Bucket;
1238
- }
1239
-
1240
- export class MyChart extends cdk8s.Chart {
1241
- constructor(scope: constructs.Construct, id: string, props: MyChartProps) {
1242
- super(scope, id);
1243
-
1244
- new kplus.Pod(this, 'Pod', {
1245
- containers: [
1246
- {
1247
- image: 'my-image',
1248
- env: {
1249
- BUCKET_NAME: kplus.EnvValue.fromValue(props.bucket.bucketName),
1250
- },
1251
- }
1252
- ],
1253
- });
1254
- }
1255
- }
1256
- ```
1257
-
1258
- Then, in your AWS CDK app:
1259
-
1260
- ```ts fixture=cdk8schart
1261
- declare const cluster: eks.Cluster;
1262
-
1263
- // some bucket..
1264
- const bucket = new s3.Bucket(this, 'Bucket');
1265
-
1266
- // create a cdk8s chart and use `cdk8s.App` as the scope.
1267
- const myChart = new MyChart(new cdk8s.App(), 'MyChart', { bucket });
1268
-
1269
- // add the cdk8s chart to the cluster
1270
- cluster.addCdk8sChart('my-chart', myChart);
1271
- ```
1272
-
1273
- ##### Custom CDK8s Constructs
1274
-
1275
- You can also compose a few stock `cdk8s+` constructs into your own custom construct. However, since mixing scopes between `aws-cdk` and `cdk8s` is currently not supported, the `Construct` class
1276
- you'll need to use is the one from the [`constructs`](https://github.com/aws/constructs) module, and not from `@aws-cdk/core` like you normally would.
1277
- This is why we used `new cdk8s.App()` as the scope of the chart above.
1278
-
1279
- ```ts nofixture
1280
- import * as constructs from 'constructs';
1281
- import * as cdk8s from 'cdk8s';
1282
- import * as kplus from 'cdk8s-plus-21';
1283
-
1284
- export interface LoadBalancedWebService {
1285
- readonly port: number;
1286
- readonly image: string;
1287
- readonly replicas: number;
1288
- }
1289
-
1290
- const app = new cdk8s.App();
1291
- const chart = new cdk8s.Chart(app, 'my-chart');
1292
-
1293
- export class LoadBalancedWebService extends constructs.Construct {
1294
- constructor(scope: constructs.Construct, id: string, props: LoadBalancedWebService) {
1295
- super(scope, id);
1296
-
1297
- const deployment = new kplus.Deployment(chart, 'Deployment', {
1298
- replicas: props.replicas,
1299
- containers: [ new kplus.Container({ image: props.image }) ],
1300
- });
1301
-
1302
- deployment.exposeViaService({
1303
- port: props.port,
1304
- serviceType: kplus.ServiceType.LOAD_BALANCER,
1305
- });
1306
- }
1307
- }
1308
- ```
1309
-
1310
- ##### Manually importing k8s specs and CRD's
1311
-
1312
- If you find yourself unable to use `cdk8s+`, or just like to directly use the `k8s` native objects or CRD's, you can do so by manually importing them using the `cdk8s-cli`.
1313
-
1314
- See [Importing kubernetes objects](https://cdk8s.io/docs/latest/cli/import/) for detailed instructions.
1315
-
1316
- ## Patching Kubernetes Resources
1317
-
1318
- The `KubernetesPatch` construct can be used to update existing kubernetes
1319
- resources. The following example can be used to patch the `hello-kubernetes`
1320
- deployment from the example above with 5 replicas.
1321
-
1322
- ```ts
1323
- declare const cluster: eks.Cluster;
1324
- new eks.KubernetesPatch(this, 'hello-kub-deployment-label', {
1325
- cluster,
1326
- resourceName: "deployment/hello-kubernetes",
1327
- applyPatch: { spec: { replicas: 5 } },
1328
- restorePatch: { spec: { replicas: 3 } },
1329
- })
1330
- ```
1331
-
1332
- ## Querying Kubernetes Resources
1333
-
1334
- The `KubernetesObjectValue` construct can be used to query for information about kubernetes objects,
1335
- and use that as part of your CDK application.
1336
-
1337
- For example, you can fetch the address of a [`LoadBalancer`](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer) type service:
1338
-
1339
- ```ts
1340
- declare const cluster: eks.Cluster;
1341
- // query the load balancer address
1342
- const myServiceAddress = new eks.KubernetesObjectValue(this, 'LoadBalancerAttribute', {
1343
- cluster: cluster,
1344
- objectType: 'service',
1345
- objectName: 'my-service',
1346
- jsonPath: '.status.loadBalancer.ingress[0].hostname', // https://kubernetes.io/docs/reference/kubectl/jsonpath/
1347
- });
1348
-
1349
- // pass the address to a lambda function
1350
- const proxyFunction = new lambda.Function(this, 'ProxyFunction', {
1351
- handler: 'index.handler',
1352
- code: lambda.Code.fromInline('my-code'),
1353
- runtime: lambda.Runtime.NODEJS_14_X,
1354
- environment: {
1355
- myServiceAddress: myServiceAddress.value,
1356
- },
1357
- })
1358
- ```
1359
-
1360
- Specifically, since the above use-case is quite common, there is an easier way to access that information:
1361
-
1362
- ```ts
1363
- declare const cluster: eks.Cluster;
1364
- const loadBalancerAddress = cluster.getServiceLoadBalancerAddress('my-service');
1365
- ```
1366
-
1367
- ## Using existing clusters
1368
-
1369
- The Amazon EKS library allows defining Kubernetes resources such as [Kubernetes
1370
- manifests](#kubernetes-resources) and [Helm charts](#helm-charts) on clusters
1371
- that are not defined as part of your CDK app.
1372
-
1373
- First, you'll need to "import" a cluster to your CDK app. To do that, use the
1374
- `eks.Cluster.fromClusterAttributes()` static method:
1375
-
1376
- ```ts
1377
- const cluster = eks.Cluster.fromClusterAttributes(this, 'MyCluster', {
1378
- clusterName: 'my-cluster-name',
1379
- kubectlRoleArn: 'arn:aws:iam::1111111:role/iam-role-that-has-masters-access',
1380
- });
1381
- ```
1382
-
1383
- Then, you can use `addManifest` or `addHelmChart` to define resources inside
1384
- your Kubernetes cluster. For example:
1385
-
1386
- ```ts
1387
- declare const cluster: eks.Cluster;
1388
- cluster.addManifest('Test', {
1389
- apiVersion: 'v1',
1390
- kind: 'ConfigMap',
1391
- metadata: {
1392
- name: 'myconfigmap',
1393
- },
1394
- data: {
1395
- Key: 'value',
1396
- Another: '123454',
1397
- },
1398
- });
1399
- ```
1400
-
1401
- At the minimum, when importing clusters for `kubectl` management, you will need
1402
- to specify:
1403
-
1404
- * `clusterName` - the name of the cluster.
1405
- * `kubectlRoleArn` - the ARN of an IAM role mapped to the `system:masters` RBAC
1406
- role. If the cluster you are importing was created using the AWS CDK, the
1407
- CloudFormation stack has an output that includes an IAM role that can be used.
1408
- Otherwise, you can create an IAM role and map it to `system:masters` manually.
1409
- The trust policy of this role should include the the
1410
- `arn:aws::iam::${accountId}:root` principal in order to allow the execution
1411
- role of the kubectl resource to assume it.
1412
-
1413
- If the cluster is configured with private-only or private and restricted public
1414
- Kubernetes [endpoint access](#endpoint-access), you must also specify:
1415
-
1416
- * `kubectlSecurityGroupId` - the ID of an EC2 security group that is allowed
1417
- connections to the cluster's control security group. For example, the EKS managed [cluster security group](#cluster-security-group).
1418
- * `kubectlPrivateSubnetIds` - a list of private VPC subnets IDs that will be used
1419
- to access the Kubernetes endpoint.
1420
-
1421
- ## Logging
1422
-
1423
- EKS supports cluster logging for 5 different types of events:
1424
-
1425
- * API requests to the cluster.
1426
- * Cluster access via the Kubernetes API.
1427
- * Authentication requests into the cluster.
1428
- * State of cluster controllers.
1429
- * Scheduling decisions.
1430
-
1431
- You can enable logging for each one separately using the `clusterLogging`
1432
- property. For example:
1433
-
1434
- ```ts
1435
- const cluster = new eks.Cluster(this, 'Cluster', {
1436
- // ...
1437
- version: eks.KubernetesVersion.V1_21,
1438
- clusterLogging: [
1439
- eks.ClusterLoggingTypes.API,
1440
- eks.ClusterLoggingTypes.AUTHENTICATOR,
1441
- eks.ClusterLoggingTypes.SCHEDULER,
1442
- ],
1443
- });
1444
- ```
1445
-
1446
- ## Known Issues and Limitations
1447
-
1448
- * [One cluster per stack](https://github.com/aws/aws-cdk/issues/10073)
1449
- * [Service Account dependencies](https://github.com/aws/aws-cdk/issues/9910)
1450
- * [Support isolated VPCs](https://github.com/aws/aws-cdk/issues/12171)