20.2. 보안 그룹 구성
AWS에 OpenShift Container Platform을 설치할 때 적절한 보안 그룹을 설정해야 합니다.
설치에 실패하지 않고 보안 그룹에 있어야 하는 일부 포트입니다. 설치하려는 클러스터 구성에 따라 더 많은 항목이 필요할 수 있습니다. 자세한 내용은 보안 그룹을 적절하게 조정하려면 Required Ports (필수 포트)를 참조하십시오.
모든 OpenShift Container Platform 호스트 |
|
etcd 보안 그룹 |
|
마스터 보안 그룹 |
|
노드 보안 그룹 |
|
인프라 노드(OpenShift Container Platform 라우터를 호스팅할 수 있는 노드) |
|
CRI-O |
CRIO를 사용하는 경우 |
마스터 및/또는 라우터의 부하 분산을 위해 외부 로드 밸런서(ELB)를 구성하는 경우 ELB에 대한 Ingress 및 Egress 보안 그룹도 적절하게 구성해야 합니다.
20.2.1. 감지된 IP 주소 및 호스트 이름 덮어쓰기
AWS에서 변수를 재정의해야 하는 상황은 다음과 같습니다.
Variable | 사용법 |
---|---|
|
사용자는 DNS 호스트 이름과 |
| 네트워크 인터페이스가 여러 개 구성되어 있으며 기본값이 아닌 다른 인터페이스 하나를 사용하려고 합니다. |
|
|
|
|
특히 EC2 호스트의 경우 DNS 호스트 이름과 DNS
확인이
활성화된 VPC에 배포해야 합니다.
20.2.1.1. AWS(Amazon Web Services)용 OpenShift Container Platform 레지스트리 구성
AWS(Amazon Web Services)는 OpenShift Container Platform이 OpenShift Container Platform 컨테이너 레지스트리를 사용하여 컨테이너 이미지를 저장하는 데 사용할 수 있는 오브젝트 클라우드 스토리지를 제공합니다.
자세한 내용은 Amazon S3 을 참조하십시오.
사전 요구 사항
OpenShift Container Platform은 이미지 스토리지에 S3를 사용합니다. 설치 프로그램에서 레지스트리를 구성할 수 있도록 프로그램 액세스
권한이 있는 S3 버킷, IAM 정책 및 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. S3을 사용하도록 OpenShift Container Platform 인벤토리 구성
절차
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 1 openshift_hosted_registry_storage_s3_secretkey=g/8PmTYDQVGssFWWFvfawHpDbZyGkjGNZhbWQpjH 2 openshift_hosted_registry_storage_s3_bucket=openshift-registry-storage 3 openshift_hosted_registry_storage_s3_region=us-east-1 4 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 5 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 레지스트리 수동 구성
AWS(Amazon Web Services) 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 매개 변수를 포함하도록 파일을 편집합니다. 레지스트리 구성 파일의
스토리지
섹션에서 accountname, accountkey, 컨테이너 및 영역을 지정합니다.storage: delete: enabled: true cache: blobdescriptor: inmemory s3: accesskey: AKIAJ6VLREDHATSPBUA 1 secretkey: g/8PmTYDQVGssFWWFvfawHpDbZyGkjGNZhbWQpjH 2 region: us-east-1 3 bucket: openshift-registry-storage 4 encrypt: False secure: true v4auth: true rootdirectory: /registry 5 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
시크릿은 레지스트리 오브젝트 스토리지에 AWS S3을 사용할 때 모든 매개 변수를 제공하는REGISTRY_CONFIGURATION_PATH
에 마운트합니다.$ 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
설치 프로그램에서 설치 설명서의 Storage 에 표시된 대로 확장 레지스트리 기능을 사용하여 원하는 구성으로 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