Menu Close

Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

43.2. 创建主要镜像

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

注意

如果您已有一个主要镜像,您可以使用它而不是创建新镜像。

流程

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

  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
    提供云提供商身份和访问管理(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 镜像的基础镜像。查看 红帽® 云访问
    9
    指定 False 以禁用 S3 存储桶的创建。
    10
    提供安全组名称。
    11
    提供现有集群在其中运行的 VPC 子网。
    12
    指定 overlay2 作为 Docker 存储类型。
    13
    指定 LVM 和 /var/lib/docker 目录的挂载点。
    14
    如果使用红帽云,将此参数值设置为 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。您可以指定创建启动配置时生成的 AMI。