createAddon method

Future<CreateAddonResponse> createAddon({
  1. required String addonName,
  2. required String clusterName,
  3. String? addonVersion,
  4. String? clientRequestToken,
  5. String? configurationValues,
  6. AddonNamespaceConfigRequest? namespaceConfig,
  7. List<AddonPodIdentityAssociations>? podIdentityAssociations,
  8. ResolveConflicts? resolveConflicts,
  9. String? serviceAccountRoleArn,
  10. Map<String, String>? tags,
})

Creates an Amazon EKS add-on.

Amazon EKS add-ons help to automate the provisioning and lifecycle management of common operational software for Amazon EKS clusters. For more information, see Amazon EKS add-ons in the Amazon EKS User Guide.

May throw ClientException. May throw InvalidParameterException. May throw InvalidRequestException. May throw ResourceInUseException. May throw ResourceNotFoundException. May throw ServerException.

Parameter addonName : The name of the add-on. The name must match one of the names returned by DescribeAddonVersions.

Parameter clusterName : The name of your cluster.

Parameter addonVersion : The version of the add-on. The version must match one of the versions returned by DescribeAddonVersions .

Parameter clientRequestToken : A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

Parameter configurationValues : The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by DescribeAddonConfiguration.

Parameter namespaceConfig : The namespace configuration for the addon. If specified, this will override the default namespace for the addon.

Parameter podIdentityAssociations : An array of EKS Pod Identity associations to be created. Each association maps a Kubernetes service account to an IAM role.

For more information, see Attach an IAM Role to an Amazon EKS add-on using EKS Pod Identity in the Amazon EKS User Guide.

Parameter resolveConflicts : How to resolve field value conflicts for an Amazon EKS add-on. Conflicts are handled based on the value you choose:

  • None – If the self-managed version of the add-on is installed on your cluster, Amazon EKS doesn't change the value. Creation of the add-on might fail.
  • Overwrite – If the self-managed version of the add-on is installed on your cluster and the Amazon EKS default value is different than the existing value, Amazon EKS changes the value to the Amazon EKS default value.
  • Preserve – This is similar to the NONE option. If the self-managed version of the add-on is installed on your cluster Amazon EKS doesn't change the add-on resource properties. Creation of the add-on might fail if conflicts are detected. This option works differently during the update operation. For more information, see UpdateAddon .
If you don't currently have the self-managed version of the add-on installed on your cluster, the Amazon EKS add-on is installed. Amazon EKS sets all values to default values, regardless of the option that you specify.

Parameter serviceAccountRoleArn : The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see Amazon EKS node IAM role in the Amazon EKS User Guide.

Parameter tags : Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.

Implementation

Future<CreateAddonResponse> createAddon({
  required String addonName,
  required String clusterName,
  String? addonVersion,
  String? clientRequestToken,
  String? configurationValues,
  AddonNamespaceConfigRequest? namespaceConfig,
  List<AddonPodIdentityAssociations>? podIdentityAssociations,
  ResolveConflicts? resolveConflicts,
  String? serviceAccountRoleArn,
  Map<String, String>? tags,
}) async {
  final $payload = <String, dynamic>{
    'addonName': addonName,
    if (addonVersion != null) 'addonVersion': addonVersion,
    'clientRequestToken': clientRequestToken ?? _s.generateIdempotencyToken(),
    if (configurationValues != null)
      'configurationValues': configurationValues,
    if (namespaceConfig != null) 'namespaceConfig': namespaceConfig,
    if (podIdentityAssociations != null)
      'podIdentityAssociations': podIdentityAssociations,
    if (resolveConflicts != null) 'resolveConflicts': resolveConflicts.value,
    if (serviceAccountRoleArn != null)
      'serviceAccountRoleArn': serviceAccountRoleArn,
    if (tags != null) 'tags': tags,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'POST',
    requestUri: '/clusters/${Uri.encodeComponent(clusterName)}/addons',
    exceptionFnMap: _exceptionFns,
  );
  return CreateAddonResponse.fromJson(response);
}