google_container_cluster ресурс
Синтаксис
Используется google_container_cluster для проверки ресурса кластера Google.
Ресурс бета-версии
Этот ресурс имеет доступные поля бета-версии. Для получения этих полей включите 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 мастер user/password
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 КБ. Объект, содержащий список пар «ключ»: значение. Пример: { «имя»: «ключ», «масса»: «1,3кг», «количество»: «3» }
image_type- Тип изображения, который нужно использовать для этого узла. Обратите внимание, что для данного типа изображения будет использоваться последняя версия.
labels- Карта меток Kubernetes (пар ключ/значение), которые будут применены к каждому узлу. Они будут добавлены в дополнение к любым меткам по умолчанию, которые Kubernetes может применить к узлу. В случае конфликта в ключах меток применяемый набор может отличаться в зависимости от версии Kubernetes — лучше всего считать поведение неопределенным, и конфликты следует избегать. Для получения дополнительной информации, включая использование и допустимые значения, см.: http://kubernetes.io/v1.1/docs/user-guide/labels.html Объект, содержащий список пар «ключ»: значение. Пример: { «имя»: «ключ», «масса»: «1,3кг», «количество»: «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- Список аппаратных ускорителей, которые нужно подключить к каждому узлу. См. 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-адреса балансировщика нагрузки. Этот диапазон не должен пересекаться с другими используемыми диапазонами в сети кластера.
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- Конфигурация функции горизонтального масштабирования pod, которая увеличивает или уменьшает количество реплицируемых pod контроллером репликации на основе использования ресурсов существующих pod.
disabled- Включена ли функция горизонтального масштабирования pod в кластере. При включении она гарантирует, что pod Heapster запущен в кластере, который также используется службой Google Cloud Monitoring.
kubernetes_dashboard
- Настройка Kubernetes Dashboard. Этот модуль устарел и будет отключен в версии 1.15. Рекомендуется использовать консоль Google Cloud для управления и мониторинга кластеров Kubernetes, рабочих нагрузок и приложений.
disabled- Включен ли Kubernetes Dashboard для данного кластера.
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 legacy.
enabled- Включен ли ABAC авторизатор для данного кластера. При включении, идентификаторам системы, включая учетные записи служб, узлы и контроллеры, будут статически предоставлены разрешения помимо тех, которые предоставляются настройкой RBAC или IAM.
network_policy- Настройки для функции NetworkPolicy.
provider- Выбранный поставщик NetworkPolicy.
Возможные значения:
- PROVIDER_UNSPECIFIED
- CALICO
enabled- Включена ли функция NetworkPolicy в кластере.
default_max_pods_constraint- Предельное ограничение на максимальное количество под, которые могут выполняться одновременно на узле в пуле узлов этого кластера. Учитывается только если кластер создан с поддержкой 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 кластера. Дополнительный диапазон будет использоваться для адресов под.
services_secondary_range_name- Имя дополнительного диапазона, которое будет использоваться для блока CIDR сервисов. Дополнительный диапазон будет использоваться для адресов сервисов ClusterIPs.
cluster_ipv4_cidr_block- Диапазон IP-адресов для под кластера. Если этот параметр установлен, то cluster.cluster_ipv4_cidr должен быть пустым. Данный параметр применим только при useIpAliases = true. Укажите пустое значение, чтобы использовать диапазон с размерами по умолчанию. Укажите /netmask (например, /14), чтобы использовать диапазон с заданной маской сети.
node_ipv4_cidr_block- Диапазон IP-адресов 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-адрес конечной точки Master этого кластера. Конечная точка доступна из интернета по адресу https://имя_пользователя:пароль@конечная_точка/. Смотрите свойство masterAuth этого ресурса для получения имени пользователя и пароля.
initial_cluster_version- Версия программного обеспечения Master-узла и kubelet, используемые в кластере при его первом создании. Версию можно обновлять со временем.
current_master_version- Текущая версия программного обеспечения Master-узла.
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 части диапазона контейнеров.
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/