ステップ 4 - ポストインストール
CircleCI Server v4.x のポストインストールステップを開始する前に、 ステップ 1 - 前提条件 、 ステップ 2 - コアサービスのインストール 、 ステップ 3 - ビルドサービスのインストール が実行済みであることを確認してください。
以下のセクションでは、 < > で示されている箇所にご自身の詳細情報を入力してください。 |
バックアップと復元
CircleCI Server のバックアップは、 Velero を介して作成できます。 Velero はインストールステップの前提条件でクラスタにインストールしています。
AWS でのバックアップと復元の設定
これらの手順は、 Velero ドキュメント を元にしています。
-
AWS S3 バケットを作成します
BUCKET=<YOUR_BUCKET> REGION=<YOUR_REGION> aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION
-
Velero の権限を設定します
IAM ユーザーを作成します。
aws iam create-user --user-name velero
必要な権限を付与するポリシーをユーザー
velero
にアタッチします。cat > velero-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeSnapshots", "ec2:CreateTags", "ec2:CreateVolume", "ec2:CreateSnapshot", "ec2:DeleteSnapshot" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::${BUCKET}/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${BUCKET}" ] } ] } EOF
aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.json
ユーザー
velero
用のアクセスキーを作成します。aws iam create-access-key --user-name velero
このコマンドの結果は以下のようになります。
{ "AccessKey": { "UserName": "velero", "Status": "Active", "CreateDate": "2017-07-31T22:24:41.576Z", "SecretAccessKey": <AWS_SECRET_ACCESS_KEY>, "AccessKeyId": <AWS_ACCESS_KEY_ID> } }
以下の内容を記載した、Velero 固有の認証情報ファイルをローカルディレクトリに作成します (例:
./credentials-velero
)。[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
AWS_ACCESS_KEY_ID
プレースホルダーとAWS_SECRET_ACCESS_KEY
プレースホルダーには、前の手順のcreate-access-key
リクエストで返された値を指定します。 -
Velero をインストールし、起動します
以下の
velero install
コマンドを実行します。 これにより、velero
という名前空間が作成され、Velero の実行に必要なリソースがすべてインストールされます。 必ず手順 2 で作成した、AWS 認証情報が含まれる正しいファイル名を指定してください。velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.2.0 \ --bucket $BUCKET \ --backup-location-config region=$REGION \ --snapshot-location-config region=$REGION \ --secret-file ./credentials-velero \ --use-restic \ --wait
-
Velero を検証します
Velero がクラスタにインストールされたら、新しい
velero
名前空間を確認します。 以下のように、Velero デプロイと restic デーモンセットがあれば成功です。$ kubectl get pods --namespace velero NAME READY STATUS RESTARTS AGE restic-5vlww 1/1 Running 0 2m restic-94ptv 1/1 Running 0 2m restic-ch6m9 1/1 Running 0 2m restic-mknws 1/1 Running 0 2m velero-68788b675c-dm2s7 1/1 Running 0 2m
restic はデーモンセットなので、Kubernetes クラスタ内のノード 1 つにつき 1 つの Pod が存在します。
GCP でのバックアップと復元の設定
これらの手順は、 Velero GCP プラグイン を元にしています。
-
GCP バケットを作成します
タイプミスのリスクを減らすために、一部のパラメーターをシェル変数として設定できます。 すべての手順を 1 度のセッションで完了できず再開する場合は、必要に応じて変数を再設定してください。 たとえば、以下の手順では、バケット名に対応する変数を定義できます。 <YOUR_BUCKET>
プレースホルダーを、バックアップ用に作成するバケット名に置き換えてください。
+
BUCKET=<YOUR_BUCKET>
gsutil mb gs://$BUCKET/
-
Velero の権限を設定します
CircleCI Server を GKE クラスタ内で実行している場合、RBAC オブジェクトを作成する必要があるため、使用する IAM ユーザーをクラスタの管理者に設定してください。 詳細については、 GKE のドキュメント を参照してください。 .. プロジェクト ID に対応するシェル変数を設定します。 現在の設定を確かめ、 gcloud
CLI が正しいプロジェクトを参照していることを確認します。+
gcloud config list
+ プロジェクトが適切に参照されている場合、以下のように変数を設定します。
+
PROJECT_ID=$(gcloud config get-value project)
-
サービスアカウントを作成します。
gcloud iam service-accounts create velero \ --display-name "Velero service account"
Velero で複数のクラスタを実行している場合は、サービスアカウントには velero
ではなく上記のような具体的な名前を付けることをお勧めします。以下のコマンドを実行して、サービスアカウントが正常に作成されたことを確認します。
gcloud iam service-accounts list
-
次に、サービスアカウントの電子メールアドレスを変数に格納します。 必要に応じてサービスアカウントに付けた表示名に合わせてコマンドを変更してください。
SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')
必要な権限をサービスアカウントに付与します。
ROLE_PERMISSIONS=( compute.disks.get compute.disks.create compute.disks.createSnapshot compute.snapshots.get compute.snapshots.create compute.snapshots.useReadOnly compute.snapshots.delete compute.zones.get ) gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.server gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}
-
次に、Velero でこのサービスアカウントを使用できるようにする必要があります。
-
オプション 1: JSON キーファイルを使用する場合
サービスアカウントとしてアクションを実行できるように Velero を認証するには、JSON 認証情報ファイルを Velero に渡します。 それにはまず、以下のコマンドを実行してキーを作成します。
gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAIL
このコマンドを実行すると、
credentials-velero
という名前のファイルがローカル作業ディレクトリに作成されます。 -
オプション 2: Workload Identity を使用する場合
クラスタで既に Workload Identity を使用している場合は、先ほど作成した GCP サービスアカウントを Velero の Kubernetes サービスアカウントにバインドします。 この場合、GCP サービスアカウントには、上記で指定済みの権限に加え、
iam.serviceAccounts.signBlob
ロールも必要です。
-
-
-
Velero をインストールし、起動します
サービスアカウントの認証方法に応じて、以下の
velero install
コマンドのいずれかを実行します。 これにより、velero
という名前空間が作成され、Velero の実行に必要なリソースがすべてインストールされます。+
velero install \ --provider gcp \ --plugins velero/velero-plugin-for-gcp:v1.2.0 \ --bucket $BUCKET \ --secret-file ./credentials-velero \ --use-restic \ --wait
-
Workload Identity を使用する場合
velero install \ --provider gcp \ --plugins velero/velero-plugin-for-gcp:v1.2.0 \ --bucket $BUCKET \ --no-secret \ --sa-annotations iam.gke.io/gcp-service-account=$SERVICE_ACCOUNT_EMAIL \ --backup-location-config serviceAccount=$SERVICE_ACCOUNT_EMAIL \ --use-restic \ --wait
システムをカスタマイズする他のオプションについては、 Velero のドキュメント を参照してください。
-
-
Velero を検証します
Velero がクラスタにインストールされたら、新しい
velero
名前空間を確認します。 以下のように、Velero デプロイと restic デーモンセットがあれば成功です。$ kubectl get pods --namespace velero NAME READY STATUS RESTARTS AGE restic-5vlww 1/1 Running 0 2m restic-94ptv 1/1 Running 0 2m restic-ch6m9 1/1 Running 0 2m restic-mknws 1/1 Running 0 2m velero-68788b675c-dm2s7 1/1 Running 0 2m
restic はデーモンセットなので、Kubernetes クラスタ内のノード 1 つにつき 1 つの Pod が存在します。
S3 互換ストレージを使ってバックアップと復元を設定する
以下の手順では、S3 互換オブジェクトストレージ (AWS S3 に限らない) をバックアップに使用していることが前提です。
これらの手順は、 Velero ドキュメント を元にしています。
-
mc
クライアントを設定します最初に、ストレージプロバイダーに接続できるよう
mc
を設定 します。# エイリアスは任意の名前でかまいませんが、以降のコマンドでも同じ値を使用してください。 export ALIAS=my-provider mc alias set $ALIAS <YOUR_MINIO_ENDPOINT> <YOUR_MINIO_ACCESS_KEY_ID> <YOUR_MINIO_SECRET_ACCESS_KEY>
クライアントが適切に設定されたかどうかは、
mc ls my-provider
を実行して確認できます。 -
バケットを作成します
バックアップ用のバケットを作成します。 Velero では、他のコンテンツが含まれた既存のバケットを使用できないので、新しいバケットを使用する必要があります。
mc mb ${ALIAS}/<YOUR_BUCKET>
-
ユーザーとポリシーの作成
Velero がバケットにアクセスするためのユーザーとポリシーを作成します。
次のスニペットに含まれる <YOUR_MINIO_ACCESS_KEY_ID>
と<YOUR_MINIO_SECRET_ACCESS_KEY>
には、Velero が MinIO にアクセスするために使用する認証情報を指定します。# ユーザーを作成します mc admin user add $ALIAS <YOUR_MINIO_ACCESS_KEY_ID> <YOUR_MINIO_SECRET_ACCESS_KEY> # ポリシーを作成します cat > velero-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::<YOUR_BUCKET>", "arn:aws:s3:::<YOUR_BUCKET>/*" ] } ] } EOF mc admin policy add $ALIAS velero-policy velero-policy.json # ユーザーをポリシーにバインドします mc admin policy set $ALIAS velero-policy user=<YOUR_VELERO_ACCESS_KEY_ID>
最後に、新しいユーザーの認証情報を以下の形式で記述したファイルを作成します (この例では
./credentials-velero
)。[default] aws_access_key_id=<YOUR_VELERO_ACCESS_KEY_ID> aws_secret_access_key=<YOUR_VELERO_SECRET_ACCESS_KEY>
-
Velero をインストールし、起動します
以下の
velero install
コマンドを実行します。 これにより、velero
という名前空間が作成され、Velero の実行に必要なリソースがすべてインストールされます。velero install --provider aws \ --plugins velero/velero-plugin-for-aws:v1.2.0 \ --bucket <YOUR_BUCKET> \ --secret-file ./credentials-velero \ --use-volume-snapshots=false \ --use-restic \ --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=<YOUR_ENDPOINT> \ --wait
-
Velero を検証します
Velero がクラスタにインストールされたら、新しい
velero
名前空間を確認します。 以下のように、Velero デプロイと restic デーモンセットがあれば成功です。$ kubectl get pods --namespace velero NAME READY STATUS RESTARTS AGE restic-5vlww 1/1 Running 0 2m restic-94ptv 1/1 Running 0 2m restic-ch6m9 1/1 Running 0 2m restic-mknws 1/1 Running 0 2m velero-68788b675c-dm2s7 1/1 Running 0 2m
restic はデーモンセットなので、Kubernetes クラスタ内のノード 1 つにつき 1 つのポッドが存在します。
バックアップを作成します
Velero がクラスタにインストールされ、最初のバックアップを作成する準備ができました。 問題が生じた場合は、 トラブルシューティング を参照してください。
-
バックアップを作成するには、以下のコマンドを実行します。
K8S_NS=$(helm list -o yaml | yq '.[].namespace') CHART=$(helm list -o yaml | yq '.[].chart' ) REV=$(helm list -o yaml | yq '.[].revision') RANDOM_STR=$(cat /dev/urandom | env LC_ALL=C tr -dc 'a-z0-9' | head -c 8) velero backup create "${K8S_NS}-${RANDOM_STR}" --include-namespaces "${K8S_NS}" --labels "chart--rev=${CHART}--${REV}"
-
バックアップから復元するには、以下のコマンドを実行します。
# すべての既存のバックアップを表示します velero backup get --show-labels # 特定のバックアップを復元します velero restore create --include-namespaces <circleci-namespace> --from-backup <backup-name>
詳細については、 Velero を参照してください。
メール通知
values.yaml
に以下を追加して、メール通知サポートを追加します。
smtp:
host: <hostname-of-submission-server>
user: <username-for-submission-server>
password: <password-for-submission-server
port: <mail-port>
Orb の管理
CircleCI Server システムには、固有のローカル Orb レジストリが含まれています。 このレジストリは、CircleCI Server からのみアクセスできます。 プロジェクトの設定ファイルリファレンスで参照された Orb はすべて、 サーバー の Orb レジストリ内の Orb を参照します。 Orb のメンテナンスはご自身で行う必要があります。 メンテナンス作業には以下が含まれます。
-
パブリックレジストリから Orb をコピーする
-
以前コピーした Orb を更新する
-
会社のプライベート Orb を登録する (存在する場合)
詳細およびこれらのタスクを完了するための手順については、 サーバーでの Orbガイド を参照してください。
次のステップ
ドキュメントの改善にご協力ください
このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。
- このページの編集をご提案ください (最初に「コントリビューションガイド」をご覧ください)。
- ドキュメントの問題点を報告する、またはフィードバックやコメントを送信するには、GitHub で issue を作成してください。
- CircleCI は、ユーザーの皆様の弊社プラットフォームにおけるエクスペリエンスを向上させる方法を常に模索しています。 フィードバックをお寄せいただける場合は、リサーチコミュニティにご参加ください。
サポートが必要ですか
CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。
または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。
CircleCI Documentation by CircleCI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.