20.2. セキュリティーグループの設定
AWS に OpenShift Container Platform をインストールする際は、適切なセキュリティーグループがセットアップされていることを確認してください。
セキュリティーグループにはいくつかのポートを設定しておく必要があり、それらがないとインストールは失敗します。また、インストールしようとしているクラスターの設定によっては、追加のポートが必要になる場合があります。セキュリティーグループの詳細、およびその適切な調整方法については、必要なポート を参照してください。
| すべての OpenShift Container Platform ホスト |
|
| etcd セキュリティーグループ |
|
| マスターのセキュリティーグループ |
|
| ノードのセキュリティーグループ |
|
| インフラストラクチャーノード (OpenShift Container Platform ルーターをホストできるノード) |
|
| CRI-O |
CRI-O を使用している場合は、tcp/10010 を開き、 |
マスターまたはルートの負荷分散のために外部のロードバランサー (ELB) を設定する場合は、ELB の Ingress および Egress のセキュリティーグループを設定することも必要になります。
20.2.1. 検出された IP アドレスとホスト名の上書き リンクのコピーリンクがクリップボードにコピーされました!
AWS では、以下のような場合に変数の上書きが必要になります。
| 変数 | 使用法 |
|---|---|
|
|
ユーザーが |
|
| 複数のネットワークインターフェイスを設定しており、デフォルト以外のインターフェイスを使用することを検討している。 |
|
|
|
|
|
|
EC2 ホストの場合はとくに、DNS ホスト名 と DNS 解決 の両方が有効にされている VPC にデプロイされる必要があります。
20.2.1.1. Amazon Web Services (AWS) の OpenShift Container Platform レジストリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Amazon Web Services (AWS) は、OpenShift Container Platform が OpenShift Container Platform コンテナーイメージレジストリーを使用してコンテナーイメージを保存するために使用可能なオブジェクトクラウドストレージを提供します。
詳細は、Amazon S3 を参照してください。
前提条件
OpenShift Container Platform はイメージストレージに S3 を使用します。S3 バケット、IAM ポリシー、および Programmatic Access を持つ IAM ユーザーを作成し、インストーラーによるレジストリー設定を許可する必要があります。
以下の例では、awscli を使用して us-east-1 のリージョンに openshift-registry-storage という名前のバケットを作成します。
# aws s3api create-bucket \
--bucket openshift-registry-storage \
--region us-east-1
デフォルトポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads"
],
"Resource": "arn:aws:s3:::S3_BUCKET_NAME"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": "arn:aws:s3:::S3_BUCKET_NAME/*"
}
]
}
20.2.1.1.1. OpenShift Container Platform インベントリーを S3 を使用するように設定する リンクのコピーリンクがクリップボードにコピーされました!
手順
S3 バケットおよび IAM ユーザーを使用できるようにレジストリーの Ansible インベントリーを設定するには、以下を実行します。
[OSEv3:vars]
# AWS Registry Configuration
openshift_hosted_manage_registry=true
openshift_hosted_registry_storage_kind=object
openshift_hosted_registry_storage_provider=s3
openshift_hosted_registry_storage_s3_accesskey=AKIAJ6VLREDHATSPBUA
openshift_hosted_registry_storage_s3_secretkey=g/8PmTYDQVGssFWWFvfawHpDbZyGkjGNZhbWQpjH
openshift_hosted_registry_storage_s3_bucket=openshift-registry-storage
openshift_hosted_registry_storage_s3_region=us-east-1
openshift_hosted_registry_storage_s3_chunksize=26214400
openshift_hosted_registry_storage_s3_rootdirectory=/registry
openshift_hosted_registry_storage_s3_encrypt=false
openshift_hosted_registry_storage_s3_kmskeyid=aws_kms_key_id
openshift_hosted_registry_pullthrough=true
openshift_hosted_registry_acceptschema2=true
openshift_hosted_registry_enforcequota=true
openshift_hosted_registry_replicas=3
20.2.1.1.2. S3 を使用するための OpenShift Container Platform レジストリーの手動設定 リンクのコピーリンクがクリップボードにコピーされました!
Amazon Web Services (AWS) S3 オブジェクトストレージを使用するには、レジストリーの設定ファイルを編集し、レジストリー Pod にマウントします。
手順
現在の config.yml をエクスポートします。
$ oc get secret registry-config \ -o jsonpath='{.data.config\.yml}' -n default | base64 -d \ >> config.yml.old古い config.yml から新規の設定ファイルを作成します。
$ cp config.yml.old config.ymlファイルを編集して S3 パラメーターを追加します。レジストリーの設定ファイルの
storageセクションにアカウント名、アカウントキー、コンテナー、およびレルムを指定します。storage: delete: enabled: true cache: blobdescriptor: inmemory s3: accesskey: AKIAJ6VLREDHATSPBUA1 secretkey: g/8PmTYDQVGssFWWFvfawHpDbZyGkjGNZhbWQpjH2 region: us-east-13 bucket: openshift-registry-storage4 encrypt: False secure: true v4auth: true rootdirectory: /registry5 chunksize: "26214400"registry-configシークレットを削除します。$ oc delete secret registry-config -n defaultシークレットを再作成して、更新された設定ファイルを参照します。
$ oc create secret generic registry-config \ --from-file=config.yml -n default更新された設定を読み取るためにレジストリーを再デプロイします。
$ oc rollout latest docker-registry -n default
20.2.1.1.3. レジストリーが S3 ストレージを使用すること確認します。 リンクのコピーリンクがクリップボードにコピーされました!
レジストリーが Amazon S3 ストレージを使用していることを確認するには、以下を実行します。
手順
レジストリーの正常なデプロイ後に、レジストリー
deploymentconfigは registry-storage を AWS S3 ではなくemptydirとして記述しますが、AWS S3 バケットの設定はシークレットdocker-configに置かれます。docker-configシークレットはREGISTRY_CONFIGURATION_PATHにマウントされ、これにより、レジストリーオブジェクトストレージに AWS S3 を使用する場合にすべてのパラメーターが指定されます。$ oc describe dc docker-registry -n default ... Environment: REGISTRY_HTTP_ADDR: :5000 REGISTRY_HTTP_NET: tcp REGISTRY_HTTP_SECRET: SPLR83SDsPaGbGuwSMDfnDwrDRvGf6YXl4h9JQrToQU= REGISTRY_MIDDLEWARE_REPOSITORY_OPENSHIFT_ENFORCEQUOTA: false REGISTRY_HTTP_TLS_KEY: /etc/secrets/registry.key OPENSHIFT_DEFAULT_REGISTRY: docker-registry.default.svc:5000 REGISTRY_CONFIGURATION_PATH: /etc/registry/config.yml REGISTRY_OPENSHIFT_SERVER_ADDR: docker-registry.default.svc:5000 REGISTRY_HTTP_TLS_CERTIFICATE: /etc/secrets/registry.crt Mounts: /etc/registry from docker-config (rw) /etc/secrets from registry-certificates (rw) /registry from registry-storage (rw) Volumes: registry-storage: Type: EmptyDir (a temporary directory that shares a pod's lifetime)1 Medium: registry-certificates: Type: Secret (a volume populated by a Secret) SecretName: registry-certificates Optional: false docker-config: Type: Secret (a volume populated by a Secret) SecretName: registry-config Optional: false ....- 1
- Pod の寿命を共有する一時ディレクトリー
/registry マウントポイントが空であることを確認します。
$ oc exec \ $(oc get pod -l deploymentconfig=docker-registry \ -o=jsonpath='{.items[0].metadata.name}') -i -t -- ls -l /registry total 0空になるのは、S3 設定が
registry-configシークレットに定義されているためです。$ oc describe secret registry-config Name: registry-config Namespace: default Labels: <none> Annotations: <none> Type: Opaque Data ==== config.yml: 398 bytesインストーラーは、インストールドキュメントのストレージセクション で記載されているように、拡張されたレジストリー機能を使用して、希望の設定で config.yml ファイルを作成します。以下のコマンドで、ストレージバケット設定が保存されている
storageセクションを含めて設定ファイルを表示します。$ oc exec \ $(oc get pod -l deploymentconfig=docker-registry \ -o=jsonpath='{.items[0].metadata.name}') \ cat /etc/registry/config.yml version: 0.1 log: level: debug http: addr: :5000 storage: delete: enabled: true cache: blobdescriptor: inmemory s3: accesskey: AKIAJ6VLREDHATSPBUA secretkey: g/8PmTYDQVGssFWWFvfawHpDbZyGkjGNZhbWQpjH region: us-east-1 bucket: openshift-registry-storage encrypt: False secure: true v4auth: true rootdirectory: /registry chunksize: "26214400" auth: openshift: realm: openshift middleware: registry: - name: openshift repository: - name: openshift options: pullthrough: true acceptschema2: true enforcequota: true storage: - name: openshiftまたは、シークレットを表示することができます。
$ oc get secret registry-config -o jsonpath='{.data.config\.yml}' | base64 -d version: 0.1 log: level: debug http: addr: :5000 storage: delete: enabled: true cache: blobdescriptor: inmemory s3: accesskey: AKIAJ6VLREDHATSPBUA secretkey: g/8PmTYDQVGssFWWFvfawHpDbZyGkjGNZhbWQpjH region: us-east-1 bucket: openshift-registry-storage encrypt: False secure: true v4auth: true rootdirectory: /registry chunksize: "26214400" auth: openshift: realm: openshift middleware: registry: - name: openshift repository: - name: openshift options: pullthrough: true acceptschema2: true enforcequota: true storage: - name: openshift
emptyDir ボリュームを使用する場合には、/registry マウントポイントは以下のようになります。
$ oc exec \
$(oc get pod -l deploymentconfig=docker-registry \
-o=jsonpath='{.items[0].metadata.name}') -i -t -- df -h /registry
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 100G 226M 30G 1% /registry
$ oc exec \
$(oc get pod -l deploymentconfig=docker-registry \
-o=jsonpath='{.items[0].metadata.name}') -i -t -- ls -l /registry
total 0
drwxr-sr-x. 3 1000000000 1000000000 22 Jun 19 12:24 docker