avicontroller_gke
avinetworks.avicontroller_gke
Роль Ansible, которая разворачивает контроллер Avi на Google GKE. Мы будем разворачивать только один кластер контроллера с 1 или 3 контроллерами на пространство имён.
Предупреждение:
- Роль перезапишет любую существующую конфигурацию (если значение отличается от значения в конфигурации k8s, оно будет перезаписано)
Требования
- Кластер GKE
- Пул узлов GKE с метками, если используется affinity или nodeSelector
Необходимые пакеты ОС
- python >= 2.7
Необходимые библиотеки Python
- openshift >= 0.6
- PyYAML >= 3.11
- requests >= 2.18.4
- google-auth >= 1.3.0
Необходимые переменные окружения
При использовании GKE и K8s мы обнаружили, что некоторые переменные нужно задавать на уровне окружения для корректной аутентификации в GKE.
K8S_AUTH_KUBECONFIG=/location/of/.kubeconfig
# GOOGLE_APPLICATION_CREDENTIALS используется при попытке аутентификации в K8s, не удалось
# найти альтернативный способ это сделать.
GOOGLE_APPLICATION_CREDENTIALS=/location/of/service_account_file.json
Необходимые шаги
Вам нужно будет установить ваш текущий кластер через
gcloud
, чтобы настроить правильные данные .kube/config. Для этого выполните следующую командуgcloud container clusters get-credentials <cluster-name> --region=<region> --zone=<zone>
Убедитесь, что вы находитесь в правильном контексте, набрав
kubectl config current-context
Это должно вернуть что-то в таком формате.
gke_{{ gke_project }}_{{ region }}_{{ cluster_name }}
Переменные роли
Описание задаваемых переменных для этой роли должно быть здесь, включая любые переменные, которые находятся в defaults/main.yml, vars/main.yml, и любые переменные, которые можно или нужно задавать через параметры роли. Также следует упомянуть любые переменные, которые читаются из других ролей и/или глобальной области (то есть hostvars, group vars и т.д.).
Переменные
Переменная | Обязательно | Значение по умолчанию | Комментарии |
---|---|---|---|
avi_namespace |
Да | Пространство имён, в котором должен быть создан контроллер | |
avi_controller_state |
Нет | present |
Устанавливает состояние развертывания. например, present , absent , suspended , resume |
avi_force_state |
Нет | false |
Позволяет принудительно установить состояние развертывания. Пропускает проверки. true , false |
avi_controller_count |
Нет | 1 |
Количество контроллеров, которые мы должны создать. например, 1 или 3 |
avi_controller_prefix |
Нет | avi-controller |
Префикс, который должен иметь имя контроллера и ресурсов |
avi_controller_username |
Да (отсутствует) | admin |
Требуется только когда состояние отсутствует, используется для проверки отсутствия SE или виртуальных сервисов |
avi_controller_password |
Да (отсутствует) | None |
Требуется только когда состояние отсутствует, используется для проверки отсутствия SE или виртуальных сервисов |
avi_gcp_region |
Нет | Регион GCP, куда мы хотим развернуть контроллер | |
avi_gcp_project |
Нет | Проект GCP, в котором должен быть развернут контроллер | |
avi_gcp_auth_kind |
Нет | Тип аутентификации, используемый для GCP | |
avi_gcp_service_account_file |
Нет | Местоположение файла service_account, когда используется serviceaccount | |
avi_k8s_auth_kubeconfig |
Нет | {{ ansible_env.HOME }}/.kube/config |
Местоположение kubeconfig, который мы будем использовать |
avi_controller_storage_class_name |
Нет | {{ avi_controller_prefix }}-regionalpd-storageclass-ssd |
Имя класса хранения, который будет использоваться диском контроллера |
avi_controller_req_cpu |
Нет | {{ avi_controller_cpu_count // 2 }} |
Начально запрашиваемый CPU от K8s для работы контроллера. |
avi_controller_req_mem |
Нет | {{ avi_controller_memory_size // 2 }} |
Начально запрашиваемая память от K8s для работы контроллера. |
avi_controller_cpu_count |
Да | 8 |
Количество CPU контроллера |
avi_controller_memory_size |
Да | 27 |
Размер памяти контроллера в ГБ |
avi_controller_disk_size |
Нет | 64 |
Размер SSD диска контроллера в ГБ |
avi_controller_version |
Нет | 18.2.3-9063-20190501.224326 |
Версия Avi, которая должна быть использована в поде |
avi_controller_container_image |
Нет | avinetworks/controller:{{ avi_controller_version }} |
Образ, который будет использоваться для создания пода контроллера |
avi_controller_namespace_labels |
Нет | None |
Метки K8s, которые вы хотите прикрепить к пространству имён |
avi_gcp_compute_addresses |
Нет | Авто-генерируемый |
Массив адресов вычислений, созданных ролью для контроллеров |
avi_controller_affinity |
Нет | None |
Устанавливает аффинитет k8s для пода контроллера |
avi_controller_nodeselector |
Нет | None |
Устанавливает nodeSelector для пода контроллера |
avi_setup_yaml |
Нет | None |
Предоставлено как setup.json контроллеру через K8s ConfigMap |
Расширенные переменные
Эти значения не обязательны и являются расширенными, они не предназначены для обновления, за исключением случаев, когда необходимо конкретное переопределение.
Переменные по умолчанию
Переменная | Комментарии |
---|---|
avi_controller_k8s_namespace |
Определение пространства имён |
avi_controller_k8s_external_service |
Обеспечивает существование внешнего сервиса |
avi_controller_k8s_service |
Обеспечивает существование сервиса |
avi_controller_k8s_statefulset |
Обеспечивает существование statefulset |
avi_controller_k8s_storage_class |
Обеспечивает существование StorageClass |
Зависимости
Здесь должен быть список других ролей, размещённых на Galaxy, а также любые детали касательно параметров, которые могут потребоваться для других ролей, или переменных, которые используются из других ролей.
Использование
Обратите внимание, что при возобновлении развертывания это не отличается от состояния present
, при возобновлении приостановленного развертывания, пожалуйста, используйте deployment_state: present
.
Пример плейбука
Создание кластера контроллера
Включение примера использования вашей роли (например, с переменными, переданными в качестве параметров) всегда полезно:
- hosts: servers
roles:
- role: avinetworks.avicontroller_gke
avi_controller_count: 3
avi_controller_version: 18.2.3-9063-20190501.224326
avi_controller_prefix: deployment-address
avi_gcp_project: my-project
avi_gcp_region: us-west1
avi_gcp_auth_kind: serviceaccount
avi_gcp_service_account_file: ~/service_account_file.json
avi_namespace: 26abc3b9d1fc4cfc8f42ad86d9606fb9
avi_controller_disk_size: 64
avi_controller_container_image: "gcr.io/{{ avi_gcp_project }}/controller:{{ avi_controller_version }}"
avi_controller_storage_class_name: regionalpd-storageclass-ssd
avi_controller_affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node_label
operator: In
values:
- label_value
- hosts: servers
roles:
- role: avinetworks.avicontroller_gke
avi_controller_count: 3
avi_controller_version: 18.2.3-9063-20190501.224326
avi_controller_prefix: deployment-address
avi_gcp_project: my-project
avi_gcp_region: us-west1
avi_gcp_auth_kind: serviceaccount
avi_gcp_service_account_file: ~/service_account_file.json
avi_namespace: 26abc3b9d1fc4cfc8f42ad86d9606fb9
avi_controller_disk_size: 64
avi_controller_container_image: "gcr.io/{{ avi_gcp_project }}/controller:{{ avi_controller_version }}"
avi_controller_storage_class_name: regionalpd-storageclass-ssd
avi_controller_nodeselector:
node_label: label_value
Удаление кластера контроллера
При удалении кластера контроллера мы проверяем, чтобы у вас не было текущих виртуальных сервисов или движков сервисов, чтобы предотвратить возникновение «сиротских» движков сервисов.
- hosts: servers
roles:
- role: avinetworks.avicontroller_gke
avi_controller_state: absent
avi_controller_count: 3
avi_controller_version: 18.2.3-9063-20190501.224326
avi_controller_prefix: deployment-address
avi_gcp_project: my-project
avi_gcp_region: us-west1
avi_gcp_auth_kind: serviceaccount
avi_gcp_service_account_file: ~/service_account_file.json
avi_namespace: 26abc3b9d1fc4cfc8f42ad86d9606fb9
avi_controller_disk_size: 64
avi_controller_container_image: "gcr.io/{{ avi_gcp_project }}/controller:{{ avi_controller_version }}"
avi_controller_storage_class_name: regionalpd-storageclass-ssd
avi_controller_nodeselector:
node_label: label_value
Лицензия
Apache 2.0
Информация об авторе
Эрик Андерсон
Ansible role to deploy the Avi Controller on GKE
ansible-galaxy install avinetworks/ansible-role-avicontroller_gke