Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

43.2. 创建 primed 镜像

您可以使用 Ansible playbook 自动创建一个 primed 镜像,供自动扩展器使用。您必须从现有 Amazon Web Services(AWS)集群中提供属性。

注意

如果您已经有 primed 镜像,您可以使用它而不是创建新镜像。

流程

在用于创建 OpenShift Container Platform 集群的主机上,创建一个 primed 镜像:

  1. 在本地主机上创建一个新的 Ansible 清单文件。此文件需要分配 cloudprovider 标志的变量,以便在参与的节点上启用自动扩展。如果没有这些变量,build_ami.yml playbook 无法使用 openshift_cloud_provider 角色:

    [OSEv3:children]
    masters
    nodes
    etcd
    
    [OSEv3:vars]
    openshift_deployment_type=openshift-enterprise
    ansible_ssh_user=ec2-user
    openshift_clusterid=mycluster
    ansible_become=yes
    openshift_cloudprovider_kind=aws 1
    openshift_cloudprovider_aws_access_key=<aws_access_key> 2
    openshift_cloudprovider_aws_secret_key=<aws_secret_key> 3
    
    [masters]
    [etcd]
    [nodes]
    1
    指定云供应商的类型。
    2
    提供云供应商 Identity and Access Management(IAM)访问密钥。
    3
    提供云提供 IAM secret 密钥。
  2. 在本地主机上创建置备文件 build-ami-provisioning-vars.yaml

    openshift_deployment_type: openshift-enterprise
    
    openshift_aws_clusterid: mycluster 1
    
    openshift_aws_region: us-east-1 2
    
    openshift_aws_create_vpc: false 3
    
    openshift_aws_vpc_name: production 4
    
    openshift_aws_subnet_az: us-east-1d 5
    
    openshift_aws_create_security_groups: false 6
    
    openshift_aws_ssh_key_name: production-ssh-key 7
    
    openshift_aws_base_ami: ami-12345678 8
    
    openshift_aws_create_s3: False 9
    
    openshift_aws_build_ami_group: default 10
    
    openshift_aws_vpc: 11
      name: "{{ openshift_aws_vpc_name }}"
      cidr: 172.18.0.0/16
      subnets:
        us-east-1:
        - cidr: 172.18.0.0/20
          az: "us-east-1d"
    
    container_runtime_docker_storage_type: overlay2 12
    container_runtime_docker_storage_setup_device: /dev/xvdb 13
    
    # atomic-openshift-node service requires gquota to be set on the
    # filesystem that hosts /var/lib/origin/openshift.local.volumes (OCP
    # emptydir). Often is it not ideal or cost effective to deploy a vol
    # for emptydir. This pushes emptydir up to the / filesystem. Base ami
    # often does not ship with gquota enabled for /. Set this bool true to
    # enable gquota on / filesystem when using Red Hat Cloud Access RHEL7
    # AMI or Amazon Market RHEL7 AMI.
    openshift_aws_ami_build_set_gquota_on_slashfs: true 14
    
    rhsub_user: user@example.com 15
    rhsub_pass: password 16
    rhsub_pool: pool-id 17
    1
    提供现有集群的名称。
    2
    提供现有集群正在运行的区域。
    3
    指定 False 来禁用 VPC 的创建。
    4
    提供集群在其中运行的现有 VPC 名称。
    5
    提供现有集群在其中运行的子网名称。
    6
    指定 False 来禁用安全组的创建。
    7
    提供要用于 SSH 访问的 AWS 密钥名称。
    8
    提供 AMI 镜像 ID,以用作 primed 镜像的基础镜像。请参阅 Red Hat® Cloud Access
    9
    指定 False 来禁用 S3 存储桶的创建。
    10
    提供安全组名称。
    11
    提供现有集群的 VPC 子网。
    12
    指定 overlay2 作为 Docker 存储类型。
    13
    指定 LVM 和 /var/lib/docker 目录的挂载点。
    14
    如果使用 Red Hat Cloud,则将此参数设置为 true,使其在文件系统中启用 gquota
    15
    为具有有效 OpenShift Container Platform 订阅的红帽帐户指定电子邮件地址。
    16
    指定红帽帐户的密码
    17
    为 OpenShift Container Platform 订阅指定一个池 ID。您可以使用创建集群时所用的相同池 ID。
  3. 运行 build_ami.yml playbook 以生成 primed 镜像:

    # ansible-playbook -i </path/to/inventory/file> \
        /usr/openshift-ansible/playbooks/aws/openshift-cluster/build_ami.yml \
        -e @build-ami-provisioning-vars.yaml

    playbook 运行后,您会在其输出中看到新镜像 ID 或 AMI。您可以指定在创建 Launch Configuration 时生成的 AMI。