ресурс aws_eks_cluster
Используйте ресурс проверки InSpec aws_eks_cluster для проверки свойств отдельного кластера AWS Elastic Container Service для Kubernetes.
Синтаксис
Блок ресурса aws_eks_cluster объявляет тесты для отдельного кластера EKS по имени кластера.
describe aws_eks_cluster('my-eks') do
it { should exist }
end
describe aws_eks_cluster(cluster_name: 'my-eks') do
it { should exist }
end
Параметры
cluster_name (обязательно)
Этот ресурс требует единственного параметра — имени кластера EKS. Его можно передать как строку или как запись cluster_name: 'value' ключ-значение в хэш.
См. также документацию AWS по кластерам EKS.
Свойства
| Свойство | Описание |
|---|---|
| arn | Amazon Resource Name (ARN) кластера. |
| name | Имя кластера. |
| endpoint | Точка входа для вашего сервера API Kubernetes. |
| status | Текущий статус кластера. |
| version | Версия сервера Kubernetes для кластера. |
| certificate_authority | Данные удостоверяющего центра для вашего кластера. |
| subnets_count | Количество подсетей, связанных с вашим кластером. |
| subnet_ids | Подсети, связанные с вашим кластером. |
| security_groups_count | Количество групп безопасности, связанных с вашим кластером. |
| security_group_ids | Группы безопасности, связанные с кросс-аккаунтовыми интерфейсами эластичной сети, которые используются для обеспечения связи между рабочими узлами и контрольной плоскостью Kubernetes. |
| role_arn | Amazon Resource Name (ARN) роли IAM, предоставляющей разрешения для контрольной плоскости Kubernetes на совершение вызовов операций API AWS от вашего имени. |
| vpc_id | VPC, связанный с вашим кластером. |
| created_at | Маркер времени эпохи Unix в секундах для момента создания кластера. |
| creating | Булево значение, указывающее, находится ли кластер в состоянии CREATING. |
| active | Булево значение, указывающее, находится ли кластер в состоянии ACTIVE. |
| failed | Булево значение, указывающее, находится ли кластер в состоянии FAILED. |
| deleting | Булево значение, указывающее, находится ли кластер в состоянии DELETING. |
| tags | Метки кластера |
Примеры
Проверка, что кластер EKS имеет как минимум 2 подсети
describe aws_eks_cluster('my-cluster') do
its('subnets_count') { should be > 1 }
end
Проверка, что кластер имеет правильный статус.
describe aws_eks_cluster(cluster_name: 'my-eks') do
its('status') { should eq 'ACTIVE' }
end
Проверка, что кластер EKS находится в правильной VPC
describe aws_eks_cluster('my-cluster') do
its('vpc_id') { should eq 'vpc-12345678' }
end
Проверка, что кластер EKS использует правильную роль IAM.
describe aws_eks_cluster('my-cluster') do
its('role_arn') { should cmp 'rn:aws:iam::012345678910:role/eks-service-role-AWSServiceRoleForAmazonEKS-J7ONKE3BQ4PI' }
end
Интеграция с другими ресурсами
Используйте комбинацию ресурсов InSpec AWS, чтобы убедиться, что ваш кластер EKS не использует Default VPC.
# Find the default Security Group for our VPC
cluster_vpc = aws_eks_cluster(cluster_name: 'my-cluster').vpc_id
default_sg = aws_security_group(group_name: 'default', vpc_id: cluster_vpc)
# Ensure we are not using the default Security Group
describe aws_eks_cluster(cluster_name: 'my-cluster') do
its('security_group_ids') { should_not include default_security_group.group_id }
end
Сопоставители
В этом ресурсе проверки InSpec нет специальных сопоставителей. Полный список доступных сопоставителей можно найти на странице Универсальные сопоставители.
exist
Управление будет пройдено, если описание вернёт как минимум один результат.
Используйте should_not для проверки того, что сущность не должна существовать.
describe aws_eks_cluster('AnExistingCluster') do
it { should exist }
end
describe aws_eks_cluster('ANonExistentCluster') do
it { should_not exist }
end
Разрешения AWS
Для вашего субъекта потребуется действие eks:DescribeCluster со значением разрешения.
Подробную документацию можно найти по адресу Политики IAM Amazon EKS, роли и разрешения. Документация по действиям EKS находится по адресу Структура политики
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/aws_eks_cluster/