Ресурс google_container_cluster
Синтаксис
Для проверки ресурса Google Cluster используется google_container_cluster
Ресурс беты
Этот ресурс содержит поля беты. Чтобы получить доступ к этим полям, добавьте beta: true в конструктор ресурса
Примеры
describe google_container_cluster(project: 'chef-gcp-inspec', location: 'europe-west2-a', name: 'gcp-inspec-kube-cluster') do
it { should exist }
its('locations.sort'){ should cmp [ 'europe-west2-a', 'europe-west2-b', 'europe-west2-c' ].sort }
its('master_auth.username') { should eq 'gcp-inspec-kube-admin' }
end
describe google_container_cluster(project: 'chef-gcp-inspec', location: 'europe-west2-a', name: 'nonexistent') do
it { should_not exist }
end
Проверка, что кластер GCP контейнеров находится в определённом состоянии (например, «RUNNING»)
describe google_container_cluster(project: 'chef-inspec-gcp', location: 'europe-west2-a', name: 'inspec-gcp-kube-cluster') do
its('status') { should eq 'RUNNING' }
end
Проверка, что кластер GCP контейнеров имеет ожидаемые данные пользователя/пароля kube master
describe google_container_cluster(project: 'chef-inspec-gcp', location: 'europe-west2-a', name: 'inspec-gcp-kube-cluster') do
its('master_auth.username'){ should eq "user_name"}
its('master_auth.password'){ should eq "choose_something_strong"}
end
Проверка, что расположение, где запущен кластер GCP контейнеров, соответствует ожидаемому
describe google_container_cluster(project: 'chef-inspec-gcp', location: 'europe-west2-a', name: 'inspec-gcp-kube-cluster') do
its('locations.sort'){should cmp ["europe-west2-a", "europe-west2-b", "europe-west2-c"].sort}
end
Проверка настроек сети и подсети кластера GCP контейнеров
describe google_container_cluster(project: 'chef-inspec-gcp', location: 'europe-west2-a', name: 'inspec-gcp-kube-cluster') do
its('network'){should eq "default"}
its('subnetwork'){should eq "default"}
end
Проверка настроек конфигурации пула узлов кластера GCP контейнеров
describe google_container_cluster(project: 'chef-inspec-gcp', location: 'europe-west2-a', name: 'inspec-gcp-kube-cluster') do
its('node_config.disk_size_gb'){should eq 100}
its('node_config.image_type'){should eq "COS"}
its('node_config.machine_type'){should eq "n1-standard-1"}
its('node_ipv4_cidr_size'){should eq 24}
its('node_pools.count'){should eq 1}
end
Свойства
Свойства, к которым можно получить доступ из ресурса google_container_cluster:
name- Имя этого кластера. Имя должно быть уникальным в рамках этого проекта и местоположения, и может содержать до 40 символов. Допустимы только строчные буквы, цифры и дефисы. Имя должно начинаться с буквы и заканчиваться цифрой или буквой.
description- Необязательное описание этого кластера.
initial_node_count- Количество узлов для создания в этом кластере. Вы должны убедиться, что квоты ресурсов Compute Engine достаточны для этого количества экземпляров. Вам также должны быть доступны квоты на брандмауэры и маршруты. Для запросов это поле следует использовать только вместо объекта «nodePool», так как эта конфигурация (вместе с «nodeConfig») будет использована для создания объекта «NodePool» с автоматически сгенерированным именем. Не используйте это поле и nodePool одновременно. Это поле устарело. Используйте вместо него nodePool.initial_node_count.
node_config- Параметры, используемые при создании узлов кластера. Для запросов это поле следует использовать только вместо объекта «nodePool», так как эта конфигурация (вместе с «initialNodeCount») будет использована для создания объекта «NodePool» с автоматически сгенерированным именем. Не используйте это поле и nodePool одновременно. Для ответов это поле будет заполняться конфигурацией узла первого пула узлов. Если не указано иное, используются значения по умолчанию.
machine_type- Имя типа машины Google Compute Engine (например, n1-standard-1). Если не указано иное, используется тип машины по умолчанию n1-standard-1.
disk_size_gb- Размер диска, подключенного к каждому узлу, указанный в ГБ. Минимальный разрешенный размер диска — 10 ГБ. Если не указано иное, используется размер диска по умолчанию — 100 ГБ.
oauth_scopes- Набор областей Google API, которые должны быть доступны на всех виртуальных машинах узлов в рамках учетной записи «по умолчанию». Следующие области рекомендуются, но не являются обязательными, и по умолчанию не включены: https://www.googleapis.com/auth/compute необходим для подключения постоянного хранилища к узлам. https://www.googleapis.com/auth/devstorage.read_only необходим для взаимодействия с gcr.io (Google Container Registry). Если не указано иное, области не добавляются, за исключением случаев включения Cloud Logging или Cloud Monitoring, в которых случае добавляются необходимые области.
service_account- Учетная запись службы Google Cloud Platform, которая должна использоваться виртуальными машинами узлов. Если учетная запись службы не указана, используется учетная запись службы «по умолчанию».
metadata- Ключевые пары «ключ/значение» метаданных, назначенные экземплярам в кластере. Ключи должны соответствовать регулярному выражению [a-zA-Z0-9-_]+ и иметь длину менее 128 байт. Они отображаются как часть URL в сервере метаданных. Кроме того, чтобы избежать неоднозначности, ключи не должны конфликтовать с другими ключами метаданных для проекта или быть одним из четырех зарезервированных ключей: «instance-template», «kube-env», «startup-script» и «user-data». Значения являются строками произвольной формы и имеют смысл только в интерпретации образа, выполняемого на экземпляре. Единственное ограничение, которое к ним применяется, заключается в том, что размер каждого значения должен быть меньше или равен 32 КБ. Общий размер всех ключей и значений должен быть меньше 512 КБ. Объект, содержащий список пар «ключ»: значение. Пример: { «name»: «ключ», «mass»: «1.3кг», «count»: «3» }
image_type- Тип образа, который следует использовать для этого узла. Обратите внимание, что для данного типа образа будет использоваться последняя версия.
labels- Карта меток Kubernetes (пар «ключ/значение»), которые необходимо применить к каждому узлу. Они будут добавлены в дополнение к любым меткам по умолчанию, которые Kubernetes может применить к узлу. В случае конфликта ключей меток применённый набор может отличаться в зависимости от версии Kubernetes — лучше всего предполагать неопределённое поведение, и следует избегать конфликтов. Для получения дополнительной информации, включая использование и допустимые значения, см.: http://kubernetes.io/v1.1/docs/user-guide/labels.html Объект, содержащий список пар «ключ»: значение. Пример: { «name»: «ключ», «mass»: «1.3кг», «count»: «3» }
local_ssd_count- Количество локальных SSD-дисков, которые необходимо подключить к узлу. Предел для этого значения зависит от максимального количества дисков, доступных на машине в зоне. Для получения дополнительной информации см.: https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits.
tags- Список меток экземпляров, применённых ко всем узлам. Метки используются для определения допустимых источников или целей для сетевых брандмауэров и указываются клиентом при создании кластера или пула узлов. Каждая метка в списке должна соответствовать RFC1035.
preemptible- Создаются ли узлы как предварительные виртуальные машины. Для получения дополнительной информации о предварительных виртуальных машинах см.: https://cloud.google.com/compute/docs/instances/preemptible.
accelerators- Список аппаратных ускорителей, которые должны быть подключены к каждому узлу. Дополнительную информацию об аппаратной поддержке GPU см. по ссылке https://cloud.google.com/compute/docs/gpus.
accelerator_count- Количество карт ускорителей, доступных для экземпляра.
accelerator_type- Имя ресурса типа ускорителя.
disk_type- Тип диска, подключенного к каждому узлу (например, «pd-standard» или «pd-ssd»). Если не указано иное, используется тип диска по умолчанию «pd-standard».
min_cpu_platform- Минимальная платформа процессора, которая должна использоваться этим экземпляром. Экземпляр может быть запланирован на указанной или более новой платформе процессора.
taints- Список меток Kubernetes, которые необходимо применить к каждому узлу. Дополнительную информацию об использовании и допустимых значениях см. по адресу: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
key- Ключ для метки.
value- Значение для метки.
effect- Эффект метки.
Возможные значения:
- EFFECT_UNSPECIFIED
- NO_SCHEDULE
- PREFER_NO_SCHEDULE
- NO_EXECUTE
master_auth- Информация об аутентификации для доступа к мастер-точке.
username- Имя пользователя для аутентификации по HTTP с использованием базовой аутентификации на мастер-точке.
password- Пароль для аутентификации по HTTP с использованием базовой аутентификации на мастер-точке. Поскольку мастер-точка открыта для интернета, необходимо создать надежный пароль с минимальной длиной 16 символов.
client_certificate_config- Конфигурация для аутентификации с помощью сертификата клиента в кластере. Для кластеров до версии 1.12, если конфигурация не указана, выдан сертификат клиента.
issue_client_certificate- Выдать сертификат клиента.
cluster_ca_certificate- Закодированный в Base64 открытый сертификат, являющийся корнем доверия для кластера.
client_certificate- Закодированный в Base64 открытый сертификат, используемый клиентами для аутентификации в конечной точке кластера.
client_key- Закодированный в Base64 закрытый ключ, используемый клиентами для аутентификации в конечной точке кластера.
logging_service- Служба регистрации, которую должен использовать кластер для записи журналов. В настоящее время доступны следующие варианты: logging.googleapis.com — служба Google Cloud Logging. none — журналы из кластера не будут экспортироваться. Если оставить пустой строкой, будет использоваться logging.googleapis.com.
Возможные значения:
- logging.googleapis.com
- none
monitoring_service- Служба мониторинга, которую должен использовать кластер для записи метрик. В настоящее время доступны следующие варианты: monitoring.googleapis.com — служба Google Cloud Monitoring. none — метрики из кластера не будут экспортироваться. Если оставить пустой строкой, будет использоваться monitoring.googleapis.com.
Возможные значения:
- monitoring.googleapis.com
- none
network- Имя сети Google Compute Engine, к которой подключен кластер. Если не указано иное, будет использоваться сеть по умолчанию.
private_cluster_config- Конфигурация для частного кластера.
enable_private_nodes- Используют ли узлы только внутренние IP-адреса. Если включено, все узлы получают только частные адреса RFC 1918 и взаимодействуют с мастером через частную сеть.
enable_private_endpoint- Используется ли внутренний IP-адрес мастера как конечная точка кластера.
master_ipv4_cidr_block- Диапазон IP-адресов в формате CIDR, который следует использовать для размещенной сети мастера. Этот диапазон будет использоваться для назначения внутренних IP-адресов мастеру или набору мастеров, а также для VIP-адреса ILB. Этот диапазон не должен перекрываться ни с каким другим используемым диапазоном в сети кластера.
private_endpoint- Внутренний IP-адрес конечной точки мастера данного кластера.
public_endpoint- Внешний IP-адрес конечной точки мастера данного кластера.
cluster_ipv4_cidr- Диапазон IP-адресов контейнерных под в этом кластере в формате CIDR (например, 10.96.0.0/14). Оставьте пустым для автоматического выбора или укажите блок /14 в 10.0.0.0/8.
enable_tpu- (Необязательно) Включить ли ресурсы Cloud TPU в этом кластере. См. официальную документацию - https://cloud.google.com/tpu/docs/kubernetes-engine-setup
tpu_ipv4_cidr_block- Диапазон IP-адресов Cloud TPU в этом кластере в формате CIDR (например,
1.2.3.4/29). addons_config- Конфигурации для различных дополнений, доступных для работы в кластере.
http_load_balancing- Конфигурация плагина HTTP (L7) балансировки нагрузки, которая позволяет легко настроить балансировщики HTTP для служб в кластере.
disabled- Включен ли плагин HTTP балансировки нагрузки в кластере. При включении он запускает небольшой pod в кластере, который управляет балансировщиками нагрузки.
horizontal_pod_autoscaling- Конфигурация для функции автоматического масштабирования горизонтальных под, которая увеличивает или уменьшает количество реплик под контроллера репликации на основе использования ресурсов существующих под.
disabled- Включена ли функция автоматического горизонтального масштабирования под в кластере. При включении она гарантирует запуск под Heapster в кластере, который также используется службой Cloud Monitoring.
kubernetes_dashboard
- Настройка панели управления Kubernetes. Этот аддон устарел и будет отключен в версии 1.15. Рекомендуется использовать Консоль Google Cloud для управления и мониторинга ваших кластеров Kubernetes, рабочих нагрузок и приложений.
disabled- Включена ли панель управления Kubernetes для этого кластера.
network_policy_config- Настройка NetworkPolicy. Этот параметр отслеживает только включение/выключение аддона на узле Мастер, не отслеживая включение NetworkPolicy на узлах.
disabled- Включен ли NetworkPolicy для этого кластера.
subnetwork- Имя подсети Google Compute Engine, к которой подключен кластер.
locations- Список зон Google Compute Engine, в которых должны размещаться узлы кластера.
resource_labels- Метки ресурсов кластера для аннотирования связанных ресурсов Google Compute Engine.
label_fingerprint- Отпечаток набора меток для данного кластера.
legacy_abac- Настройка режима авторизации ABAC устаревшего типа.
enabled- Включен ли модуль авторизации ABAC для данного кластера. При включении идентификаторы в системе, включая учетные записи служб, узлы и контроллеры, получат статически назначенные разрешения, помимо тех, которые предоставляются настройкой RBAC или IAM.
network_policy- Настройки для функции NetworkPolicy.
provider- Выбранный поставщик NetworkPolicy.
Возможные значения:
- PROVIDER_UNSPECIFIED
- CALICO
enabled- Включена ли функция NetworkPolicy в кластере.
default_max_pods_constraint- Максимальное количество под (pods) которые могут быть запущены одновременно на узле в пуле узлов данного кластера. Действует только если кластер создан с поддержкой IP Alias.
max_pods_per_node- Ограничение на максимальное число под на узел.
ip_allocation_policy- Настройка способов выделения IP-адресов в кластере
use_ip_aliases- Используются ли alias IP-адреса для IP-адресов под в кластере
create_subnetwork- Будет ли автоматически создана новая подсеть для кластера
subnetwork_name- Настраиваемое имя подсети, которое будет использоваться, если createSubnetwork = true. Если этот параметр пустой, то будет выбрано автоматическое имя для новой подсети.
cluster_secondary_range_name- Имя вторичного диапазона, который будет использован для блока CIDR кластера. Вторичный диапазон будет использован для IP-адресов под.
services_secondary_range_name- Имя вторичного диапазона, который будет использован для блока CIDR сервисов. Вторичный диапазон будет использован для адресов сервисов ClusterIP. Это должен быть существующий вторичный диапазон, связанный с подсетью кластера.
cluster_ipv4_cidr_block- Диапазон IP-адресов для под кластера. Если этот параметр установлен, то cluster.cluster_ipv4_cidr должен быть пустым. Этот параметр применим только когда useIpAliases = true. Оставьте пустым, чтобы выбрать диапазон с настройками по умолчанию. Укажите /netmask (например, /14), чтобы выбрать диапазон со специфической маской подсети.
node_ipv4_cidr_block- Диапазон IP-адресов узлов в данном кластере. Применимо только если createSubnetwork = true. Оставьте пустым, чтобы выбрать диапазон с настройками по умолчанию. Укажите /netmask (например, /14), чтобы выбрать диапазон со специфической маской подсети.
services_ipv4_cidr_block- Диапазон IP-адресов сервисов в данном кластере. Если пусто, диапазон будет автоматически выбран с настройками по умолчанию. Применимо только когда useIpAliases = true. Оставьте пустым, чтобы выбрать диапазон с настройками по умолчанию. Укажите /netmask (например, /14), чтобы выбрать диапазон со специфической маской подсети.
tpu_ipv4_cidr_block- Диапазон IP-адресов Cloud TPUs в данном кластере. Если не указано, диапазон будет автоматически выбран с настройками по умолчанию. Применимо только когда useIpAliases = true. Если не указано, будет использован диапазон с настройками по умолчанию. Укажите /netmask (например, /14), чтобы выбрать диапазон со специфической маской подсети.
endpoint- IP-адрес конечной точки мастер-узла этого кластера. К конечной точке можно получить доступ из интернета по адресу https://имя_пользователя:пароль@конечная_точка/ Посмотрите свойство masterAuth данного ресурса для получения имени пользователя и пароля.
initial_cluster_version- Версия программного обеспечения мастер-узла и kubelets, использовавшиеся в кластере при его первоначальном создании. Версию можно обновлять со временем.
current_master_version- Текущая версия программного обеспечения мастер-узла.
current_node_version- Текущая версия программных компонентов узлов. Если они находятся на нескольких версиях из-за обновления, то это отражает минимальную версию всех узлов.
create_time- Дата создания кластера в формате RFC3339.
status- Текущий статус кластера.
Возможные значения:
- STATUS_UNSPECIFIED
- PROVISIONING
- RUNNING
- RECONCILING
- STOPPING
- ERROR
- DEGRADED
status_message- Дополнительная информация о текущем состоянии кластера, если доступна.
node_ipv4_cidr_size- Размер адресного пространства на каждом узле для размещения контейнеров. Выделяется из диапазона container_ipv4_cidr.
services_ipv4_cidr- Диапазон IP-адресов Kubernetes-сервисов в данном кластере в формате CIDR (например, 1.2.3.4/29). Адреса сервисов обычно находятся в последней /16 части диапазона container CIDR.
current_node_count- Количество узлов в настоящее время в кластере.
expire_time- Дата автоматического удаления кластера в формате RFC3339.
conditions- Условия, которые привели к текущему состоянию кластера.
code- Машинно-читаемый формат условия.
message- Человеко-читаемый формат условия.
master_authorized_networks_config- Настройка способов выделения IP-адресов в кластере
enabled- Включены ли авторизованные сети мастер-узла.
cidr_blocks- Определение до 50 внешних сетей, которые могут получить доступ к Kubernetes мастер-узлу через HTTPS.
display_name- Необязательное поле, используемое для идентификации блоков CIDR.
cidr_block- Блок, указанный в формате CIDR.
node_pools- Пулы узлов, принадлежащие данному кластеру
name- Имя пула узлов
pod_security_policy_config- (только для бета-версии) Настройка функции PodSecurityPolicy.
enabled- При включении новые под должны соответствовать политике PodSecurityPolicy.
binary_authorization- Настройка функции BinaryAuthorization.
enabled- Если включено, все изображения контейнеров будут проверены с помощью Binary Authorization.
location- Расположение, где развернут кластер
Разрешения GCP
Убедитесь, что API Kubernetes Engine включен для текущего проекта.
© 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/google_container_cluster/