avinetworks.avicontroller_gke

avinetworks.avicontroller_gke

Ansible角色,用于在Google GKE上部署Avi Controller。我们将只部署一个控制器集群,每个命名空间下有1个或3个控制器。

警告:

  • 该角色将覆盖任何现有的配置(如果此处的值与k8s配置不同,将会被覆盖)

需求

  • GKE集群
  • GKE节点池(如果使用亲和性或节点选择器,则需要标签)

所需的操作系统包

  • 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 设置部署的状态,例如presentabsentsuspendedresume
avi_force_state false 允许强制设置部署状态,跳过检查,truefalse
avi_controller_count 1 我们应该创建多少个控制器,例如13
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_file位置
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 }} 从K8s请求的初始CPU,以运行控制器。
avi_controller_req_mem {{ avi_controller_memory_size // 2 }} 从K8s请求的初始内存,以运行控制器。
avi_controller_cpu_count 8 控制器CPU数量
avi_controller_memory_size 27 控制器内存大小(GB)
avi_controller_disk_size 64 控制器SSD磁盘大小(GB)
avi_controller_version 18.2.3-9063-20190501.224326 应该在pod上使用的Avi版本
avi_controller_container_image avinetworks/controller:{{ avi_controller_version }} 将用于创建控制器pod的镜像
avi_controller_namespace_labels None 您希望附加到命名空间的K8s标签
avi_gcp_compute_addresses Auto-generated 由角色为控制器创建的计算地址数组
avi_controller_affinity None 设置控制器pod的k8s亲和性
avi_controller_nodeselector None 设置控制器pod的节点选择器
avi_setup_yaml None 通过K8s ConfigMap以setup.json的方式提供给控制器

高级变量

这些值不是必需的,并且是高级的,除非需要特定的覆盖,否则不应更新。

默认变量

变量 说明
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

删除控制器集群

当您删除控制器集群时,我们会检查以确保您没有任何当前的VS或服务引擎,以防止留下孤立的服务引擎。

- 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

作者信息

Eric Anderson

Avi Networks

关于项目

Ansible role to deploy the Avi Controller on GKE

安装
ansible-galaxy install avinetworks.avicontroller_gke
许可证
apache-2.0
下载
2.2k
拥有者