9.4.16. 부트스트랩 Ignition 파일 준비

OpenShift Container Platform 설치 프로세스는 부트스트랩 Ignition 구성 파일에서 생성되는 부트스트랩 시스템에 의존합니다.

파일을 편집하고 업로드합니다. 그런 다음 RHOSP(Red Hat OpenStack Platform)에서 기본 파일을 다운로드하는 데 사용하는 보조 부트스트랩 Ignition 구성 파일을 만듭니다.

사전 요구 사항

  • 설치 관리자에서 생성되는 부트스트랩 Ignition 파일, bootstrap.ign이 있습니다.
  • 설치 관리자 메타데이터 파일의 인프라 ID는 환경 변수($ INFRA_ID)로 설정됩니다.

    • 변수가 설정되지 않은 경우 Kubernetes 매니페스트 및 Ignition 구성 파일 생성을 참조하십시오.
  • 부트스트랩 Ignition 파일을 저장할 수 있는 HTTP(S) 액세스 가능 방법이 있습니다.

    • 문서화된 프로시저에는 RHOSP 이미지 서비스(Glance)를 사용하지만 RHOSP 스토리지 서비스(Swift), Amazon S3, 내부 HTTP 서버 또는 애드혹 Nova 서버를 사용할 수도 있습니다.

절차

  1. 다음 Python 스크립트를 실행합니다. 이 스크립트는 부트스트랩 Ignition 파일을 수정하여 호스트 이름 및 사용 가능한 경우 실행 시 CA 인증서 파일을 설정합니다.

    import base64
    import json
    import os
    
    with open('bootstrap.ign', 'r') as f:
        ignition = json.load(f)
    
    files = ignition['storage'].get('files', [])
    
    infra_id = os.environ.get('INFRA_ID', 'openshift').encode()
    hostname_b64 = base64.standard_b64encode(infra_id + b'-bootstrap\n').decode().strip()
    files.append(
    {
        'path': '/etc/hostname',
        'mode': 420,
        'contents': {
            'source': 'data:text/plain;charset=utf-8;base64,' + hostname_b64
        }
    })
    
    ca_cert_path = os.environ.get('OS_CACERT', '')
    if ca_cert_path:
        with open(ca_cert_path, 'r') as f:
            ca_cert = f.read().encode()
            ca_cert_b64 = base64.standard_b64encode(ca_cert).decode().strip()
    
        files.append(
        {
            'path': '/opt/openshift/tls/cloud-ca-cert.pem',
            'mode': 420,
            'contents': {
                'source': 'data:text/plain;charset=utf-8;base64,' + ca_cert_b64
            }
        })
    
    ignition['storage']['files'] = files;
    
    with open('bootstrap.ign', 'w') as f:
        json.dump(ignition, f)
  2. RHOSP CLI를 사용하여 부트스트랩 Ignition 파일을 사용하는 이미지를 생성합니다.

    $ openstack image create --disk-format=raw --container-format=bare --file bootstrap.ign <image_name>
  3. 이미지의 세부 사항을 가져옵니다.

    $ openstack image show <image_name>

    file 값을 기록해 둡니다. 해당 패턴은 v2/images/<image_ID>/file입니다.

    참고

    생성된 이미지가 활성화되어 있는지 확인합니다.

  4. 이미지 서비스의 공용 주소를 검색합니다.

    $ openstack catalog show image
  5. 공용 주소를 이미지 file 값과 결합하고 그 결과를 저장 위치로 저장합니다. 위치 패턴은 <image_service_public_URL>/v2/images/<image_ID>/file입니다.
  6. 인증 토큰을 생성하고 토큰 ID를 저장합니다.

    $ openstack token issue -c id -f value
  7. $INFRA_ID-bootstrap-ignition.json 파일에 다음 내용을 삽입하고 사용자 값과 일치하도록 자리 표시자를 편집합니다.

    {
      "ignition": {
        "config": {
          "merge": [{
            "source": "<storage_url>", 1
            "httpHeaders": [{
              "name": "X-Auth-Token", 2
              "value": "<token_ID>" 3
            }]
          }]
        },
        "security": {
          "tls": {
            "certificateAuthorities": [{
              "source": "data:text/plain;charset=utf-8;base64,<base64_encoded_certificate>" 4
            }]
          }
        },
        "version": "3.1.0"
      }
    }
    1
    ignition.config.merge.source 값을 부트스트랩 Ignition 파일 스토리지 URL로 바꿉니다.
    2
    httpHeadersname"X-Auth-Token"으로 설정합니다.
    3
    httpHeadersvalue를 토큰의 ID로 설정합니다.
    4
    부트스트랩 Ignition 파일 서버가 자체 서명 인증서를 사용하는 경우 base64 인코딩 인증서를 포함합니다.
  8. 보조 Ignition 구성 파일을 저장합니다.

부트스트랩 Ignition 데이터는 설치 중에 RHOSP로 전달됩니다.

주의

부트스트랩 Ignition 파일에는 clouds.yaml 자격 증명과 같은 민감한 정보가 들어 있습니다. 파일을 안전한 곳에 저장하고 설치 프로세스를 완료한 후에는 삭제해야 합니다.