無料でビルドを開始
CircleCI.comアカデミーブログコミュニティサポート

ステップ 4 - ポストインストール

1+ year ago2 min read
このページの内容

CircleCI Server v4.x のポストインストールステップを開始する前に、 ステップ 1 - 前提条件 ステップ 2 - コアサービスのインストール ステップ 3 - ビルドサービスのインストール が実行済みであることを確認してください。

バックアップと復元

CircleCI Server のバックアップは、 Velero を介して作成できます。 Velero はインストールステップの前提条件でクラスタにインストールしています。

AWS でのバックアップと復元の設定

これらの手順は、 Velero ドキュメント を元にしています。

  1. AWS S3 バケットを作成します

    BUCKET=<YOUR_BUCKET>
    REGION=<YOUR_REGION>
    aws s3api create-bucket \
        --bucket $BUCKET \
        --region $REGION \
        --create-bucket-configuration LocationConstraint=$REGION
  2. 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>
  3. 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
  4. 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

GCP でのバックアップと復元の設定

これらの手順は、 Velero GCP プラグイン を元にしています。

  1. GCP バケットを作成します

タイプミスのリスクを減らすために、一部のパラメーターをシェル変数として設定できます。 すべての手順を 1 度のセッションで完了できず再開する場合は、必要に応じて変数を再設定してください。 たとえば、以下の手順では、バケット名に対応する変数を定義できます。 <YOUR_BUCKET> プレースホルダーを、バックアップ用に作成するバケット名に置き換えてください。

+

BUCKET=<YOUR_BUCKET>

gsutil mb gs://$BUCKET/
  1. Velero の権限を設定します

    +

    gcloud config list

    + プロジェクトが適切に参照されている場合、以下のように変数を設定します。

    +

    PROJECT_ID=$(gcloud config get-value project)
    1. サービスアカウントを作成します。

      gcloud iam service-accounts create velero \
          --display-name "Velero service account"

      以下のコマンドを実行して、サービスアカウントが正常に作成されたことを確認します。

      gcloud iam service-accounts list
    2. 次に、サービスアカウントの電子メールアドレスを変数に格納します。 必要に応じてサービスアカウントに付けた表示名に合わせてコマンドを変更してください。

      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}
    3. 次に、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 ロールも必要です。

  2. 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 のドキュメント を参照してください。

  3. 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

S3 互換ストレージを使ってバックアップと復元を設定する

以下の手順では、S3 互換オブジェクトストレージ (AWS S3 に限らない) をバックアップに使用していることが前提です。

これらの手順は、 Velero ドキュメント を元にしています。

  1. 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 を実行して確認できます。

  2. バケットを作成します

    バックアップ用のバケットを作成します。 Velero では、他のコンテンツが含まれた既存のバケットを使用できないので、新しいバケットを使用する必要があります。

    mc mb ${ALIAS}/<YOUR_BUCKET>
  3. ユーザーとポリシーの作成

    Velero がバケットにアクセスするためのユーザーとポリシーを作成します。

    # ユーザーを作成します
    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>
  4. 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
  5. 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

バックアップを作成します

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ガイド を参照してください。


Suggest an edit to this page

Make a contribution
Learn how to contribute