ресурс aws_eks_cluster
Используйте aws_eks_cluster ресурс проверки InSpec, чтобы протестировать свойства отдельного кластера 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 | Данные 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
Интеграция с другими ресурсами
Используйте сочетание ресурсов AWS InSpec для проверки, что ваш кластер 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 action, установленные на «Разрешить».
Подробную документацию можно найти по адресу Политики 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/