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

Необходимые шаги

  1. Вам нужно будет установить ваш текущий кластер через gcloud, чтобы настроить правильные данные .kube/config. Для этого выполните следующую команду

    gcloud container clusters get-credentials <cluster-name> --region=<region> --zone=<zone>
    
  2. Убедитесь, что вы находитесь в правильном контексте, набрав

    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

Информация об авторе

Эрик Андерсон

Avi Networks

О проекте

Ansible role to deploy the Avi Controller on GKE

Установить
ansible-galaxy install avinetworks/ansible-role-avicontroller_gke
Лицензия
apache-2.0
Загрузки
2173
Владелец