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
所需步骤
您需要通过
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_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
关于项目
Ansible role to deploy the Avi Controller on GKE
安装
ansible-galaxy install avinetworks.avicontroller_gke
许可证
apache-2.0
下载
2.2k
拥有者