0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NetApp Astra Control のインストール

Last updated at Posted at 2021-08-06

初版: 2021年8月7日
2021/10/3,2022/2/2 新しい記事のリンクを追加、前提条件のアップデート
2021/1/7 ACC v21.12 に対応

はじめに

Astra Contro Centerは、オンプレミスでのK8sアプリケーションのデータのライフサイクルを管理するためのソリューションです。
ステートフルなワークロードのデータ保護、バックアップ、移行を容易にし、運用負荷を低減します。
本投稿は、Astra Controlのインストールについて記載しています。

関連投稿一覧

前提条件

ACCのインストールには、以下が必要となります。

ACCをデプロイする環境の必要要件

準備するもの 詳細
NetAppストレージ
(ACCの管理データの保存先)
  • ONTAP バージョン 9.5以上、またはAstra Data Store(ADS) ※GA版は2022年春頃リリース予定
  • 300GB以上の空き容量
  • ONTAPストレージおよびADSは、事前にNetApp Tridentにてバックエンドとして登録しておく必要があります
  • ONTAPストレージおよびADSをバックエンドとしたデフォルトのStorageClassを作成しておく必要があります
  • (OpenShiftの場合) ACCは、アプリケーションのCloneを行う際に、必要に応じてファイルの所有権を変更できるようONTAPストレージにスーパーユーザとユーザIDが設定されている必要があります。
    以下のコマンド実行します。
    export-policy rule modify -vserver -policyname -ruleindex 1 -superuser sysm --anon 65534 (デフォルト値)
ACCを展開するK8sクラスタ
  • Red Hat OpenShift Container Platform4.4.8/4.7/4.8、Rancher2.5、Kubernetes1.19-1.21(1.21x含む)該当クラスタのkubeconfig
  • 3つ以上のコントローラノード: 4CPU、16GB RAM、120GBディスク容量
  • 3つ以上のWorkerノード:12CPU、32GB RAM、50GBディスク容量
  • ボリュームスナップショットCRDとボリュームスナップショットコントローラ(snapshot-controller)がインストールされていること
  • Astra Trident v21.10.1以降がインストールされていること
  • WebUIのPodに外部からアクセスするためのロードバランサ
    ACCは、LoadBalancerタイプのサービス (svc名:traefik) 作成します
    MetalLBの設定方法はこちらを参照ください
  • 内部DNSサーバを使用している場合は、ローカル端末からACCにFQDNでアクセスするために、DNSレコードを登録しておく必要があります。(ローカル端末の/etc/hostsエントリでも可)
イメージ格納用のプライベートレジストリ ACCのイメージをPushするためのプラベートイメージレジストリ
(オプション) オブジェクトストレージ AWS S3、AWS S3互換ストレージ、NetApp StorageGrid、OntapS3 など
(互換ストレージは全ての機能に対応しない場合があります)
ACCライセンス こちらより入手(self-managed softwareの方を選択ください)、もしくは営業担当にお問い合わせください

ACCで管理するK8sクラスタの必要要件

準備するもの 詳細
NetAppストレージ
(アプリケーションのPVの保存先)
ONTAP バージョン 9.5以上
※ ONTAPストレージは、事前にNetApp Tridentにてバックエンドとして登録しておく必要があります
※ ONTAPストレージをバックエンドとしたデフォルトのStorageClassを作成しておく必要があります
ACCに登録するK8sクラスタ
  • Red Hat OpenShift Container Platform4.4.8/4.7/4.8、Rancher2.5、Kubernetes1.19-1.21(1.21x含む)
  • 該当クラスタのkubeconfig
  • 管理対象の各Workerノードにもプライベートレジストリの証明書がインストールされている必要があります。インストールされていない場合は、Backup/Cloneが失敗します。

ネットワーク・その他の要件

プロダクト ポート プロトコル 方向 用途
ACC 443 HTTPS Ingress UI/APIアクセス
Port443が、ACCをホストしているクラスタと各管理対象クラスタの間で双方向に開いていることが必要
ACC 9090 HTTPS Ingress (ACCをホストしているクラスターへ)
Egress(各管理対象クラスタの各workerノードのノードIPアドレスからのランダムポート)
メトリクスデータの送信
各管理対象クラスタがACCをホストしているクラスタの9090ポートにアクセスできることが必要
Trident 34571 HTTPS Ingress Node-Pod通信
Trident 9220 HTTP Ingress メトリクスエンドポイント

ACCでは、デフォルトのストレージクラスを設定する必要があります。
ACCでは、Astra Tridentが提供する以下のドライバをサポートしています。

ドライバ プロトコル
ontap-nas NFS
ontap-nas-flexgroup NFS
ontap-san iSCSI
ontap-san-economy iSCSI

セットアップ手順

以下にAstra Control Center をセットアップする流れを記載します。

Astra Control のイメージバンドルをダウンロード

NetAppのサポートサイトのダウンロードページ から「Astra」というキーワードで検索し、「Astra Control Center」のページに移動してソフトウェアをダウンロードします。
Screen Shot 2022-01-06 at 16.20.28.png
kubectlコマンドを実行する端末に、ダウンロードしたソフトウェアを解凍します。

$ tar -vxzf astra-control-center-[Astraのバージョン].tar.gz
$ cd astra-control-center-[Astraのバージョン]

ダウンロードしたイメージをローカルレジストリに格納

ダウンロードしたバンドルの中には、3つのCustom Resource Definition(CRD)のYAMLファイルとイメージが格納されています。
まずは、ダウンロードしたイメージをローカルのレジストリにPushします。
ここでは、ローカルレジストリのパスは、pregistry11.green.lab:5000 を使用しています。

$ export REGISTRY=pregistry11.green.lab:5000
$ sudo docker login $REGISTRY

for astraImageFile in $(ls images/*.tar) ; do
   astraImage=$(sudo docker load --input ${astraImageFile} | sed 's/Loaded image: //') 
   sudo docker tag ${astraImage} ${REGISTRY}/${astraImage} 
   sudo docker push ${REGISTRY}/${astraImage} 
done

$ sudo docker images
Pushしたイメージが表示されます

Astra Control Operator のインストール

Astra Control Center のインストールの前に、Astra Control Operatorと呼ばれるリソースを作成します。

Astra Control Operator 用のNameSpaceを作成

まずは、Astra Control Operator用のNameSpaceとSecretを作成します。

$ kubectl create ns netapp-acc-operator
namespace/netapp-acc-operator created
$ kubectl create secret docker-registry astra-registry-cred -n netapp-acc-operator --docker-server=pregistry11.green.lab:5000 --docker-username=[プライベートレジストリのログインユーザ名] --docker-password=[プライベートレジストリのログインパスワード]
secret/astra-registry-cred created

Astra Control Operator の設定ファイルの編集

astra_control_center_operator_deploy.yaml の以下の部分を編集します。

  • spec.template.spec.container[kube-rbac-proxy].image の「ASTRA_IMAGE_REGISTRY」の値をローカルレジストリのパスに変更します。
[変更前] 
image: ASTRA_IMAGE_REGISTRY/kube-rbac-proxy:v4.8.0

[サンプル] 
image: pregistry11.green.lab:5000/kube-rbac-proxy:v4.8.0
  • spec.template.spec.container[acc-operator].image の「ASTRA_IMAGE_REGISTRY」の値をローカルレジストリのパスに変更します。
[変更前] 
image: ASTRA_IMAGE_REGISTRY/acc-operator:21.10.19

[サンプル] 
image: pregistry11.green.lab:5000/acc-operator:21.10.19
  • spec.imagePullSecretsの値を以下のサンプルのように「astra-registry-cred」に変更します。 (Secretを使用しない場合は削除)
[変更前] 
imagePullSecrets: []

[変更後] 
imagePullSecrets:
- name <ローカルレジストリ用のSecret名>
      
[サンプル] 
imagePullSecrets:
- name "astra-registry-cred"

Astra Control Operator のインストール

Astra Control Operatorをインストールします。

$ kubectl apply -f astra_control_center_operator_deploy.yaml
namespace/netapp-acc-operator created
customresourcedefinition.apiextensions.k8s.io/astracontrolcenters.astra.netapp.io created
role.rbac.authorization.k8s.io/acc-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/acc-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/acc-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/acc-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/acc-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/acc-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/acc-operator-proxy-rolebinding created
configmap/acc-operator-manager-config created
service/acc-operator-controller-manager-metrics-service created
deployment.apps/acc-operator-controller-manager created

netapp-acc-operator namespaceに、Podが起動したのを確認します。

$ kubectl get pods -n netapp-acc-operator
NAME                                              READY   STATUS    RESTARTS   AGE
acc-operator-controller-manager-79449fb54-crd85   2/2     Running   0          3m33s

Astra Control Center のインストール

Astra Control Center 用のNameSpaceを作成

Astra Control Center用のNameSpaceとSecretを作成します。

$ kubectl create ns netapp-acc
namespace/netapp-acc created
[サンプル]
$ kubectl create secret docker-registry astra-registry-cred -n netapp-acc --docker-server=pregistry11.green.lab:5000 --docker-username=[プライベートレジストリのログインユーザ名] --docker-password=[プライベートレジストリのログインパスワード]
secret/astra-registry-cred created

Astra Control Center の設定ファイルの編集

astra_control_center_min.yaml の以下の部分を編集します。

  • spec.astraVersion: Astraのバージョンを記入
  • spec.astraAddress: Astra にアクセスするためにブラウザで使用するFQDNに変更
  • spec.autoSupport: インターネットに接続されていないサイトの場合は、enrolled=falseに変更
  • spec.email: 管理者のメールアドレスを入力
  • spec.imageRegistry.name: イメージをプッシュしたレジストリのパスに変更
  • spec.imageRegistry.secret: レジストリの認証情報を含むk8s secretに変更。(Secretを使用しない場合は削除)
astra_control_center_min.yaml
[サンプル]
apiVersion: astra.netapp.io/v1
kind: AstraControlCenter
metadata:
  name: astra
spec:
  accountName: "Example"
  astraVersion: "21.12.60"
  astraAddress: "greenlab.astra.netapp.io"
  autoSupport:
    enrolled: true
  email: "midorio@netapp.com"
  firstName: "Midori"
  lastName: "Oge"
  imageRegistry:
    name: "pregistry11.green.lab:5000"
    secret: "astra-registry-cred"

Astra Control Center のインストール

Astra Control Centerをインストールします。

$ kubectl apply -f astra_control_center_min.yaml -n netapp-acc
astracontrolcenter.astra.netapp.io/astra created

STATUSが全てRunningとなったことを確認します。(10分程度かかります)

$ kubectl get pods -n netapp-acc
NAME                                       READY   STATUS    RESTARTS   AGE
NAME                                       READY   STATUS    RESTARTS   AGE
acc-helm-repo-7f5c474976-qdmxm             1/1     Running   0          11m
activity-7f858dcbcb-fj97n                  1/1     Running   0          7m7s
api-token-authentication-fklsp             1/1     Running   0          7m38s
api-token-authentication-lmnfh             1/1     Running   0          7m38s
api-token-authentication-nlfgz             1/1     Running   0          7m38s
asup-6bc77bb6db-kgc8q                      1/1     Running   0          7m23s
authentication-5c9dfb679d-zkwl6            1/1     Running   0          6m13s
bucketservice-68776ddd9b-28p58             1/1     Running   0          7m25s
cert-manager-6f6575d578-rg9mk              1/1     Running   0          63s
cert-manager-cainjector-f48957988-c95z7    1/1     Running   0          63s
cert-manager-webhook-c9867676-vztmd        1/1     Running   0          63s
cloud-extension-6444468547-xw44c           1/1     Running   0          7m9s
cloud-insights-service-785d59cbc7-gsczz    1/1     Running   2          7m35s
composite-compute-84b8444469-h7h86         1/1     Running   0          7m28s
composite-volume-fb99bcb97-smgmf           1/1     Running   0          7m13s
credentials-795ff94f95-nc4rt               1/1     Running   0          7m11s
entitlement-5848dc8cdc-4g8hq               1/1     Running   0          7m19s
features-847bd5859f-zlpc8                  1/1     Running   0          7m33s
fluent-bit-ds-2dwmt                        1/1     Running   0          5m52s
fluent-bit-ds-7hd9p                        1/1     Running   0          5m52s
fluent-bit-ds-lc2cw                        1/1     Running   0          5m52s
fluent-bit-ds-pjlb8                        1/1     Running   0          5m52s
fluent-bit-ds-r8gjv                        1/1     Running   0          5m52s
fluent-bit-ds-xqmdr                        1/1     Running   0          5m52s
graphql-server-6bbbb9b549-55wx8            1/1     Running   0          5m45s
identity-7c8df44768-8wkw6                  1/1     Running   0          7m15s
influxdb2-0                                1/1     Running   0          10m
krakend-b7bd66976-2rjvt                    1/1     Running   0          5m37s
license-779cb8bff7-p55nc                   1/1     Running   0          7m1s
login-ui-577c49df76-965l8                  1/1     Running   0          5m42s
loki-0                                     1/1     Running   0          10m
monitoring-operator-6f5c9bbd8-wtqdn        2/2     Running   0          6m5s
nats-0                                     1/1     Running   0          10m
nats-1                                     1/1     Running   0          10m
nats-2                                     1/1     Running   0          10m
nautilus-8cf5f8f49-5vv7n                   1/1     Running   0          2m41s
nautilus-8cf5f8f49-6ztzb                   1/1     Running   0          7m21s
openapi-766b95cb96-84c6z                   1/1     Running   0          7m44s
polaris-consul-consul-25pc7                1/1     Running   0          10m
polaris-consul-consul-49bm5                1/1     Running   0          10m
polaris-consul-consul-js27g                1/1     Running   0          10m
polaris-consul-consul-server-0             1/1     Running   0          10m
polaris-consul-consul-server-1             1/1     Running   0          10m
polaris-consul-consul-server-2             1/1     Running   0          10m
polaris-mongodb-0                          2/2     Running   0          10m
polaris-mongodb-1                          2/2     Running   0          9m42s
polaris-mongodb-2                          2/2     Running   0          8m55s
polaris-ui-84b54b87cc-2gr24                1/1     Running   0          5m31s
polaris-vault-0                            1/1     Running   0          10m
polaris-vault-1                            1/1     Running   0          10m
polaris-vault-2                            1/1     Running   0          10m
public-metrics-775d95d754-chnrr            1/1     Running   1          7m46s
storage-backend-metrics-6d4b78bd85-cjddz   1/1     Running   0          7m3s
storage-provider-bdd5685c4-fpnr8           1/1     Running   0          7m42s
telegraf-ds-6zc76                          1/1     Running   0          5m52s
telegraf-ds-7zb5z                          1/1     Running   0          5m52s
telegraf-ds-fxdmq                          1/1     Running   0          5m52s
telegraf-ds-gldj5                          1/1     Running   0          5m52s
telegraf-ds-jx529                          1/1     Running   0          5m52s
telegraf-ds-pd2wt                          1/1     Running   0          5m52s
telegraf-rs-bvq44                          1/1     Running   0          5m52s
telemetry-service-5c4d549c78-b2hbg         1/1     Running   0          7m17s
tenancy-5bc74bf9f5-k7n67                   1/1     Running   0          7m40s
traefik-5d795d96cc-8qrxr                   1/1     Running   0          109s
traefik-5d795d96cc-h55tw                   1/1     Running   0          94s
trident-svc-7df87f9cf6-bx7x6               1/1     Running   0          7m30s
vault-controller-fc55bc469-md4wq           1/1     Running   0          7m57s

インストール完了確認

以下のコマンドでインストールのログを確認します。

$  kubectl logs deploy/acc-operator-controller-manager -n netapp-acc-operator -c manager -f

以下の「Successfully Reconciled AstraControlCenter」メッセージが出ていればインストールは完了しています。
{"level":"info","timestamp":"2022-01-07T05:03:59.550Z","logger":"acc.controllers.AstraControlCenterReconciler","msg":"Successfully Reconciled AstraControlCenter in 305.639µs","AstraControlCenter":"netapp-acc/astra","reconcileType":"NoOp"}

また以下を実行し、

$ kubectl get acc -o yaml -n netapp-acc

結果に、deploymentState: Deployed の行が含まれていることを確認します。

インストールがうまくいかない場合は、以下のコマンドでACC Operatorのログを確認ください。

WebUI にログイン

インストールが完了したら、ブラウザで astra_control_center_min.yamlで指定したFQDN(「astraAddress」の値)にアクセスします。
ログインユーザ名は、astra_control_center_min.yamlで指定した「email」の値となります。
初期パスワードは、以下のコマンドで確認できます。UUIDの頭に「ACC-」をつけた値を入力してください。

$ kubectl get astracontrolcenters -n netapp-acc
NAME    UUID
astra   1cfb739d-de93-441c-85b9-605a02fb670f

Screen Shot 2021-07-31 at 5.51.38.png

初期パスワードを変更する画面が表示されますので、要件に従って新しいパスワードを入力します。
Screen Shot 2021-07-31 at 5.53.23.png

ログインができましたので、次はこのUIを使ったAstra Control Centerの操作方法について記載しようと思います。
NetApp Astra Control を使ってみる ①UIの操作編 に続きます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?