コード例 #1
0
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonEKSConfig config = new AmazonEKSConfig();

            config.RegionEndpoint = region;
            ConfigureClient(config);
            AmazonEKSClient client = new AmazonEKSClient(creds, config);

            DescribeAddonVersionsResponse resp = new DescribeAddonVersionsResponse();

            do
            {
                DescribeAddonVersionsRequest req = new DescribeAddonVersionsRequest
                {
                    NextToken = resp.NextToken
                    ,
                    MaxResults = maxItems
                };

                resp = client.DescribeAddonVersions(req);
                CheckError(resp.HttpStatusCode, "200");

                foreach (var obj in resp.Addons)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.NextToken));
        }
コード例 #2
0
        public void EKSCreateCluster()
        {
            #region to-create-a-new-cluster-1527868185648

            var client   = new AmazonEKSClient();
            var response = client.CreateCluster(new CreateClusterRequest
            {
                Version            = "1.10",
                Name               = "prod",
                ClientRequestToken = "1d2129a1-3d38-460a-9756-e5b91fddb951",
                ResourcesVpcConfig = new VpcConfigRequest {
                    SecurityGroupIds = new List <string> {
                        "sg-6979fe18"
                    },
                    SubnetIds = new List <string> {
                        "subnet-6782e71e",
                        "subnet-e7e761ac"
                    }
                },
                RoleArn = "arn:aws:iam::012345678910:role/eks-service-role-AWSServiceRoleForAmazonEKS-J7ONKE3BQ4PI"
            });


            #endregion
        }
コード例 #3
0
        public void EKSListClusters()
        {
            #region to-list-your-available-clusters-1527868801040

            var client   = new AmazonEKSClient();
            var response = client.ListClusters(new ListClustersRequest
            {
            });

            List <string> clusters = response.Clusters;

            #endregion
        }
コード例 #4
0
        public void EKSDeleteCluster()
        {
            #region to-delete-a-cluster-1527868641252

            var client   = new AmazonEKSClient();
            var response = client.DeleteCluster(new DeleteClusterRequest
            {
                Name = "devel"
            });


            #endregion
        }
コード例 #5
0
        protected IAmazonEKS CreateClient(AWSCredentials credentials, RegionEndpoint region)
        {
            var config = new AmazonEKSConfig {
                RegionEndpoint = region
            };

            Amazon.PowerShell.Utils.Common.PopulateConfig(this, config);
            this.CustomizeClientConfig(config);
            var client = new AmazonEKSClient(credentials, config);

            client.BeforeRequestEvent += RequestEventHandler;
            client.AfterResponseEvent += ResponseEventHandler;
            return(client);
        }
コード例 #6
0
        public void EKSListTagsForResource()
        {
            #region to-list-tags-for-a-cluster-1568666903378

            var client   = new AmazonEKSClient();
            var response = client.ListTagsForResource(new ListTagsForResourceRequest
            {
                ResourceArn = "arn:aws:eks:us-west-2:012345678910:cluster/beta"
            });

            Dictionary <string, string> tags = response.Tags;

            #endregion
        }
コード例 #7
0
        public void EKSDescribeCluster()
        {
            #region to-describe-a-cluster-1527868708512

            var client   = new AmazonEKSClient();
            var response = client.DescribeCluster(new DescribeClusterRequest
            {
                Name = "devel"
            });

            Cluster cluster = response.Cluster;

            #endregion
        }
コード例 #8
0
        public override IEnumerable <KubernetesCluster> DiscoverClusters(string contextJson)
        {
            if (!TryGetDiscoveryContext <AwsAuthenticationDetails>(contextJson, out var authenticationDetails, out var workerPoolId))
            {
                yield break;
            }

            var accessKeyOrWorkerCredentials = authenticationDetails.Credentials.Type == "account"
                ? $"Access Key: {authenticationDetails.Credentials.Account.AccessKey}"
                : $"Using Worker Credentials on Worker Pool: {workerPoolId}";

            Log.Verbose("Looking for Kubernetes clusters in AWS using:");
            Log.Verbose($"  Regions: [{string.Join(",",authenticationDetails.Regions)}]");

            Log.Verbose("  Account:");
            Log.Verbose($"    {accessKeyOrWorkerCredentials}");

            if (authenticationDetails.Role.Type == "assumeRole")
            {
                Log.Verbose("  Role:");
                Log.Verbose($"    ARN: {authenticationDetails.Role.Arn}");
                if (!authenticationDetails.Role.SessionName.IsNullOrEmpty())
                {
                    Log.Verbose($"    Session Name: {authenticationDetails.Role.SessionName}");
                }
                if (authenticationDetails.Role.SessionDuration != null)
                {
                    Log.Verbose($"    Session Duration: {authenticationDetails.Role.SessionDuration}");
                }
                if (!authenticationDetails.Role.ExternalId.IsNullOrEmpty())
                {
                    Log.Verbose($"    External Id: {authenticationDetails.Role.ExternalId}");
                }
            }
            else
            {
                Log.Verbose("  Role: No IAM Role provided.");
            }

            if (!authenticationDetails.TryGetCredentials(Log, out var credentials))
            {
                yield break;
            }

            foreach (var region in authenticationDetails.Regions)
            {
                var client = new AmazonEKSClient(credentials,
                                                 RegionEndpoint.GetBySystemName(region));

                var clusters = client.ListClustersAsync(new ListClustersRequest()).GetAwaiter().GetResult();

                foreach (var cluster in clusters.Clusters.Select(c =>
                                                                 client.DescribeClusterAsync(new DescribeClusterRequest {
                    Name = c
                }).GetAwaiter().GetResult().Cluster))
                {
                    var credentialsRole = authenticationDetails.Role;
                    var assumedRole     = credentialsRole.Type == "assumeRole"
                        ? new AwsAssumeRole(credentialsRole.Arn,
                                            credentialsRole.SessionName,
                                            credentialsRole.SessionDuration,
                                            credentialsRole.ExternalId)
                        : null;

                    yield return(KubernetesCluster.CreateForEks(cluster.Arn,
                                                                cluster.Name,
                                                                cluster.Endpoint,
                                                                authenticationDetails.Credentials.AccountId,
                                                                assumedRole,
                                                                workerPoolId,
                                                                cluster.Tags.ToTargetTags()));
                }
            }
        }