avinetworks.avicontroller_gke
avinetworks.avicontroller_gke
Google GKE上にAvi ControllerをデプロイするためのAnsibleロールです。1つのコントローラークラスターを各ネームスペースに1または3のコントローラーでデプロイします。
警告:
- 別の値がk8sの設定と異なる場合、このロールは既存の設定を上書きします。
要件
- GKEクラスター
- AffinityまたはnodeSelectorを使用する場合は、ラベル付きのGKEノードプール
必要なOSパッケージ
- python >= 2.7
必要なPythonライブラリ
- openshift >= 0.6
- PyYAML >= 3.11
- requests >= 2.18.4
- google-auth >= 1.3.0
必要な環境変数
GKEとK8sを使用する際に、正しい認証を処理するためにいくつかの変数を環境レベルで定義する必要があります。
K8S_AUTH_KUBECONFIG=/location/of/.kubeconfig
# K8sに認証するために使用されるGOOGLE_APPLICATION_CREDENTIALS。代替方法は見つかりませんでした。
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 |
状態がabsent の場合のみ必要で、SEやバーチャルサービスがないことを確認するために使用 |
avi_controller_password |
はい (欠如) | None |
状態がabsent の場合のみ必要で、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 }} |
コントローラーポッドを作成するために使用されるイメージ |
avi_controller_namespace_labels |
いいえ | None |
ネームスペースに追加したいK8sラベル |
avi_gcp_compute_addresses |
いいえ | 自動生成 |
コントローラーのためにロールによって生成された計算アドレスの配列 |
avi_controller_affinity |
いいえ | None |
コントローラーポッドのk8sアフィニティを設定 |
avi_controller_nodeselector |
いいえ | None |
コントローラーポッドのnodeSelectorを設定 |
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 |
ステートフルセットが存在することを確認 |
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