Menyediakan Fedora CoreOS di Alibaba Cloud (Aliyun)

Panduan ini menunjukkan cara menyediakan node Fedora CoreOS (FCOS) baru di Alibaba Cloud. Saat ini, Fedora tidak memublikasikan citra Fedora CoreOS di dalam Alibaba Cloud, jadi Anda harus mengunduh citra Alibaba Cloud dari Fedora dan mengunggahnya ke salah satu bucket Object Storage Service (OSS) Anda.

Persyaratan

Sebelum menyediakan mesin FCOS, Anda harus memiliki file konfigurasi Ignition yang berisi kustomisasi Anda. Jika belum memilikinya, lihat [Producing an Ignition File](xref:producing-ign.adoc).

Fedora CoreOS memiliki pengguna bawaan bernama core yang dapat digunakan untuk menjelajahi sistem operasi. Jika Anda ingin menggunakannya, selesaikan [konfigurasinya](xref:authentication.adoc) dengan menambahkan, misalnya, kunci SSH.

Jika Anda tidak ingin menggunakan Ignition untuk memulai, Anda dapat memanfaatkan dukungan Afterburn.

Anda juga perlu memiliki akses ke akun Alibaba Cloud dan Object Storage Service (OSS) yang telah diaktifkan. Contoh di bawah ini menggunakan Alibaba Cloud CLI dan jq sebagai pemroses JSON di baris perintah.

Mengunduh citra Alibaba Cloud

Fedora CoreOS dirancang untuk diperbarui secara otomatis, dengan jadwal yang berbeda untuk setiap aliran (stream). Setelah Anda memilih aliran yang sesuai, unduh, verifikasi, dan dekompres citra Alibaba Cloud terbaru:

STREAM="stable"
coreos-installer download --decompress -s $STREAM -p aliyun -f qcow2.xz

Sebagai alternatif, Anda dapat mengunduh citra Alibaba Cloud secara manual dari halaman unduhan. Verifikasikan hasil unduhan, ikuti petunjuk pada halaman tersebut, dan lakukan dekompresi.

Mengunggah citra ke Alibaba Cloud

  1. Buat bucket yang belum ada di akun Alibaba Cloud Anda dengan nama yang unik secara global atau gunakan bucket yang sudah ada:

    Contoh membuat bucket Alibaba Cloud OSS (Object Storage Service)
    REGION="ap-southeast-1"
    BUCKET_NAME="my-bucket"
    BUCKET_URL="oss://${BUCKET_NAME}"
    aliyun oss mb "${BUCKET_URL}" --region="${REGION}" --acl=private
  2. Unggah citra FCOS:

    Contoh mengunggah FCOS ke bucket Alibaba Cloud OSS
    DOWNLOADED_IMAGE="./image.qcow2"
    IMAGE_NAME="my-fcos-image"
    IMAGE_BLOB="${IMAGE_NAME}.qcow2"
    aliyun oss cp "${DOWNLOADED_IMAGE}" "${BUCKET_URL}/${IMAGE_BLOB}" \
        --region="${REGION}" --acl=private
  3. Impor citra FCOS yang telah diunggah:

    Contoh mengimpor FCOS ke Alibaba Cloud ECS
    TASK_ID=$(aliyun ecs ImportImage \
        --region="${REGION}" \
        --DiskDeviceMapping.1.OSSBucket="${BUCKET_NAME}" \
        --DiskDeviceMapping.1.OSSObject="${IMAGE_BLOB}" \
        --ImageName="${IMAGE_NAME}" \
        | jq --raw-output .TaskId)
  4. Tunggu hingga citra berhasil diimpor

    Contoh menunggu dengan batas waktu selama satu jam
    aliyun ecs DescribeTasks --region="${REGION}" --TaskIds="${TASK_ID}" \
        --waiter expr='TaskSet.Task[0].TaskStatus' to=Finished timeout=3600
  5. Tentukan ID dari citra FCOS yang telah diimpor:

    Contoh menentukan ID citra FCOS yang telah diimpor
    IMAGE_ID=$(aliyun ecs DescribeImages --region="${REGION}" --ImageName="${IMAGE_NAME}" \
        | jq --raw-output .Images.Image[0].ImageId)
  6. Hapus blob yang telah diunggah

    Contoh menghapus blob yang telah diunggah
    aliyun oss rm "${BUCKET_URL}/${IMAGE_BLOB}" --region "${REGION}"

Membuat VSwitch

Tidak ada VPC atau VSwitch bawaan di Alibaba Cloud. Oleh karena itu, untuk membuat instans apa pun, sebuah VSwitch harus ada. Pilih salah satu yang sudah ada atau buat baru dengan langkah-langkah berikut.

  1. Buat VPC baru:

    Contoh membuat VPC baru
    VPC_CIDR="172.16.0.0/12"
    VPC_NAME="fcos-test"
    VPC_ID=$(aliyun vpc CreateVpc --region="${REGION}" \
        --CidrBlock="${VPC_CIDR}" --VpcName="${VPC_NAME}" \
        | jq --raw-output .VpcId)
  2. Pilih zona ketersediaan untuk membuat VSwitch:

    Contoh memilih zona ketersediaan
    ZONE_ID=$(aliyun ecs DescribeZones --region="${REGION}" \
        | jq --raw-output .Zones.Zone[0].ZoneId)
  3. Buat VSwitch baru:

    Contoh membuat VSwitch baru
    VSWITCH_CIDR="172.16.0.0/16"
    VSWITCH_NAME="${VPC_NAME}"
    VSWITCH_ID=$(aliyun vpc CreateVSwitch \
        --region="${REGION}" \
        --CidrBlock="${VSWITCH_CIDR}" \
        --VpcId="${VPC_ID}" \
        --VSwitchName="${VSWITCH_NAME}" \
        --ZoneId="${ZONE_ID}" \
        | jq --raw-output .VSwitchId)

Meluncurkan instans ECS

  1. Unggah kunci publik SSH ke Alibaba Cloud ECS

    Contoh mengunggah kunci publik SSH
    KEY_PAIR_NAME="fcos-key"
    PUBLIC_KEY_PATH="<Please fill the path to your public key>"
    PUBLIC_KEY_BODY=$(cat "${PUBLIC_KEY_PATH}")
    aliyun ecs ImportKeyPair --region="${REGION}" \
        --KeyPairName="${KEY_PAIR_NAME}" --PublicKeyBody="${PUBLIC_KEY_BODY}"
  2. Membuat instans ECS

    Contoh membuat instans ECS
    INSTANCE_NAME="my-fcos-vm"
    INSTANCE_TYPE="ecs.t6-c1m1.large"
    INSTANCE_ID=$(aliyun ecs CreateInstance \
        --region="${REGION}" \
        --KeyPairName="${KEY_PAIR_NAME}" \
        --ImageId="${IMAGE_ID}" \
        --InstanceName="${INSTANCE_NAME}" \
        --InstanceType="${INSTANCE_TYPE}" \
        --InternetChargeType=PayByTraffic \
        --InternetMaxBandwidthIn=5 \
        --InternetMaxBandwidthOut=5 \
        --VSwitchId="${VSWITCH_ID}" \
        | jq --raw-output .InstanceId)
Jika perintah gagal dengan pesan kesalahan “The specified parameter SystemDisk.Category is not valid.”, selesaikan masalah ini dengan menambahkan parameter --SystemDisk.Category=cloud_essd ke perintah tersebut.
  1. Alokasikan alamat IPv4 publik untuk instans yang telah dibuat sebelumnya

    Contoh mengalokasikan alamat IP publik
    PUBLIC_IP=$(aliyun ecs AllocatePublicIpAddress \
        --region="${REGION}" --InstanceId="${INSTANCE_ID}" \
        | jq --raw-output .IpAddress)
  2. Mulai instans

    Contoh memulai instans
    aliyun ecs StartInstance --region="${REGION}" --InstanceId="${INSTANCE_ID}"
  3. Tunggu hingga instans berjalan

    Contoh menunggu dan menentukan alamat IP publik
    aliyun ecs DescribeInstanceStatus --InstanceId.1="$INSTANCE_ID" --region="${REGION}" \
        --waiter expr='InstanceStatuses.InstanceStatus[0].Status' to=Running timeout=600
  4. Hubungkan ke instans baru melalui SSH

    Contoh Koneksi
    ssh core@"${PUBLIC_IP}"

Anda dapat memulai instans yang dikustomisasi dengan berkas Ignition Anda dengan menambahkan parameter --UserData=$(cat <Path ke konfigurasi Ignition Anda> | base64 -w0) ke perintah aliyun ecs CreateInstance yang digunakan untuk membuat instans baru.