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

必要なステップ

  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 作成すべきコントローラーの数。例: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

Avi Networks

プロジェクトについて

Ansible role to deploy the Avi Controller on GKE

インストール
ansible-galaxy install avinetworks.avicontroller_gke
ライセンス
apache-2.0
ダウンロード
2.2k
所有者