OCP on AWS - Using Instance Disks for containers' ephemeral storage
Unfinished document
This document is still in progress and requires adjustments and source code modifications not fully documented in the steps.
This document describes how to use the EC2 Instance ephemeral disk mounted on the container ephemeral storage /var/lib/containers
on Kubernetes/OpenShift.
Table of Contents:
- Create the MachineConfig
- Create the MachineSet
- Create the MachineConfig
- Review the performance
- Review the performance
Create the MachineConfig
The MachineConfig should create the systemd units to:
- create the filesystem on the new device
- mount the device on the path
/var/lib/containers
- restore the SELinux context
Steps:
- Export the device path presented to your instance for the ephemeral device (in general
/dev/sdb1
):
- Create the MachineConfig manifest
INSTALL_DIR=$HOME/.ansible/okd-installer/clusters/azure-a414rc2e
mkdir $INSTALL_DIR
BIN_INSTALL=$HOME/.ansible/okd-installer/bin/openshift-install-linux-4.14.0-rc.2
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: azure-a414rc2e
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
baseDomain: splat.azure.devcluster.openshift.com
platform:
azure: {
"baseDomainResourceGroupName": "os4-common",
"cloudName": "AzurePublicCloud",
"outboundType": "Loadbalancer",
"region": "eastus"
}
EOF
$BIN_INSTALL create manifests --dir $INSTALL_DIR
MANIFEST_PATH=$INSTALL_DIR/openshift/98-var-lib-containers-master.yaml
export DEVICE_NAME=sdb1
cat <<EOF | envsubst > $MANIFEST_PATH
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: master
name: 98-var-lib-containers
spec:
config:
ignition:
version: 3.1.0
systemd:
units:
- contents: |
[Unit]
Description=Make File System on /dev/${DEVICE_NAME}
DefaultDependencies=no
BindsTo=dev-${DEVICE_NAME}.device
After=dev-${DEVICE_NAME}.device var.mount
Before=systemd-fsck@dev-${DEVICE_NAME}.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/bin/bash -c "/bin/rm -rf /var/lib/containers/*"
ExecStart=/usr/sbin/mkfs.xfs -f /dev/${DEVICE_NAME}
TimeoutSec=0
[Install]
WantedBy=var-lib-containers.mount
enabled: true
name: systemd-mkfs@dev-${DEVICE_NAME}.service
- contents: |
[Unit]
Description=Mount /dev/${DEVICE_NAME} to /var/lib/containers
Before=local-fs.target
Requires=systemd-mkfs@dev-${DEVICE_NAME}.service
After=systemd-mkfs@dev-${DEVICE_NAME}.service
[Mount]
What=/dev/${DEVICE_NAME}
Where=/var/lib/containers
Type=xfs
Options=defaults,prjquota
[Install]
WantedBy=local-fs.target
enabled: true
name: var-lib-containers.mount
- contents: |
[Unit]
Description=Restore recursive SELinux security contexts
DefaultDependencies=no
After=var-lib-containers.mount
Before=crio.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/restorecon -R /var/lib/containers/
TimeoutSec=0
[Install]
WantedBy=multi-user.target graphical.target
enabled: true
name: restorecon-var-lib-containers.service
EOF
$BIN_INSTALL create cluster --dir $INSTALL_DIR
Schenario 2 (smaller/tmp storage to /var/lib/containers)
export DEVICE_NAME=sdb1
CLUSTER_NAME=azure-a414rc2es
INSTALL_DIR=$HOME/.ansible/okd-installer/clusters/$CLUSTER_NAME
mkdir $INSTALL_DIR
BIN_INSTALL=$HOME/.ansible/okd-installer/bin/openshift-install-linux-4.14.0-rc.2
#> TODO create support to osDIsk PremiumV2_LRS
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
controlPlane:
platform:
azure:
osDisk:
diskSizeGB: 128
diskType: Premium_LRS
type: Standard_D4ds_v5
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
baseDomain: splat.azure.devcluster.openshift.com
platform:
azure: {
"baseDomainResourceGroupName": "os4-common",
"cloudName": "AzurePublicCloud",
"outboundType": "Loadbalancer",
"region": "eastus"
}
EOF
$BIN_INSTALL create manifests --dir $INSTALL_DIR
MANIFEST_PATH=$INSTALL_DIR/openshift/98-var-lib-containers-master.yaml
export DEVICE_NAME=sdb1
cat <<EOF | envsubst > $MANIFEST_PATH
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: master
name: 98-var-lib-containers
spec:
config:
ignition:
version: 3.1.0
systemd:
units:
- contents: |
[Unit]
Description=Make File System on /dev/${DEVICE_NAME}
DefaultDependencies=no
BindsTo=dev-${DEVICE_NAME}.device
After=dev-${DEVICE_NAME}.device var.mount
Before=systemd-fsck@dev-${DEVICE_NAME}.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/bin/bash -c "/bin/rm -rf /var/lib/containers/*"
ExecStart=/usr/sbin/mkfs.xfs -f /dev/${DEVICE_NAME}
TimeoutSec=0
[Install]
WantedBy=var-lib-containers.mount
enabled: true
name: systemd-mkfs@dev-${DEVICE_NAME}.service
- contents: |
[Unit]
Description=Mount /dev/${DEVICE_NAME} to /var/lib/containers
Before=local-fs.target
Requires=systemd-mkfs@dev-${DEVICE_NAME}.service
After=systemd-mkfs@dev-${DEVICE_NAME}.service
[Mount]
What=/dev/${DEVICE_NAME}
Where=/var/lib/containers
Type=xfs
Options=defaults,prjquota
[Install]
WantedBy=local-fs.target
enabled: true
name: var-lib-containers.mount
- contents: |
[Unit]
Description=Restore recursive SELinux security contexts
DefaultDependencies=no
After=var-lib-containers.mount
Before=crio.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/restorecon -R /var/lib/containers/
TimeoutSec=0
[Install]
WantedBy=multi-user.target graphical.target
enabled: true
name: restorecon-var-lib-containers.service
EOF
$BIN_INSTALL create cluster --dir $INSTALL_DIR
sleep 120;
worker=$(oc get nodes -l node-role.kubernetes.io/worker='' -o jsonpath='{.items[0].metadata.name}')
oc label node $worker node-role.kubernetes.io/tests=""
oc adm taint node $worker node-role.kubernetes.io/tests="":NoSchedule
sleep 300 && ~/opct/bin/opct-v0.5.0-alpha.1 run -w && ~/opct/bin/opct-v0.5.0-alpha.1 retrieve
Schenario 2 (smaller/tmp storage to /var/lib/etcd)
CLUSTER_NAME=azure-a414rc2etcd2
INSTALL_DIR=$HOME/.ansible/okd-installer/clusters/$CLUSTER_NAME
mkdir $INSTALL_DIR
BIN_INSTALL=$HOME/.ansible/okd-installer/bin/openshift-install-linux-4.14.0-rc.2
#> TODO create support to osDIsk PremiumV2_LRS
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
controlPlane:
platform:
azure:
osDisk:
diskSizeGB: 128
diskType: Premium_LRS
type: Standard_D4ds_v5
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
baseDomain: splat.azure.devcluster.openshift.com
platform:
azure: {
"baseDomainResourceGroupName": "os4-common",
"cloudName": "AzurePublicCloud",
"outboundType": "Loadbalancer",
"region": "eastus"
}
EOF
$BIN_INSTALL create manifests --dir $INSTALL_DIR
MANIFEST_PATH=$INSTALL_DIR/openshift/98-var-lib-containers-master.yaml
export DEVICE_PATH=/dev/disk/azure/resource-part1
export DEVICE_NAME=dev-disk-azure-resource
#export MOUNT_POINT_VARLIB=etcd
export MOUNT_POINT_NAME=var-lib-etcd
export MOUNT_POINT_PATH=/var/lib/etcd
export MACHINE_CONFIG_ROLE=master
cat <<EOF | envsubst > $MANIFEST_PATH
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: ${MACHINE_CONFIG_ROLE}
name: 98-mount-${MOUNT_POINT_NAME}
spec:
config:
ignition:
version: 3.1.0
systemd:
units:
- contents: |
[Unit]
Description=Make File System on ${DEVICE_PATH}
DefaultDependencies=no
BindsTo=${DEVICE_NAME}.device
After=${DEVICE_NAME}.device var.mount
Before=systemd-fsck@${DEVICE_NAME}.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/bin/bash -c "/bin/rm -rf ${MOUNT_POINT_PATH:-/tmp/none}/*"
ExecStart=/usr/sbin/mkfs.xfs -f ${DEVICE_PATH}
TimeoutSec=0
[Install]
WantedBy=${MOUNT_POINT_NAME}.mount
enabled: true
name: systemd-mkfs@${DEVICE_NAME}.service
- contents: |
[Unit]
Description=Mount ${DEVICE_PATH} to ${MOUNT_POINT_PATH}
Before=local-fs.target
Requires=systemd-mkfs@${DEVICE_NAME}.service
After=systemd-mkfs@${DEVICE_NAME}.service
[Mount]
What=${DEVICE_PATH}
Where=${MOUNT_POINT_PATH}
Type=xfs
Options=defaults,prjquota
[Install]
WantedBy=local-fs.target
enabled: true
name: ${MOUNT_POINT_NAME}.mount
- contents: |
[Unit]
Description=Restore recursive SELinux security contexts
DefaultDependencies=no
After=${MOUNT_POINT_NAME}.mount
Before=crio.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/restorecon -R ${MOUNT_POINT_PATH}
TimeoutSec=0
[Install]
WantedBy=multi-user.target graphical.target
enabled: true
name: restorecon-${MOUNT_POINT_NAME}.service
EOF
$BIN_INSTALL create cluster --dir $INSTALL_DIR
# ansible-runner
export KUBECONFIG=$INSTALL_DIR/auth/kubeconfig
ansible-playbook opct-runner/opct-run-tool-preflight.yaml -e cluster_name=$CLUSTER_NAME
# remove emptyDir
oc patch configs.imageregistry.operator.openshift.io cluster --type delete --patch '{"spec":{"storage":{"emptyDir":{}}}}'
sleep 300;
# worker=$(oc get nodes -l node-role.kubernetes.io/worker='' -o jsonpath='{.items[0].metadata.name}')
# oc label node $worker node-role.kubernetes.io/tests=""
# oc adm taint node $worker node-role.kubernetes.io/tests="":NoSchedule
~/opct/bin/opct-v0.5.0-alpha.1 run -w && ~/opct/bin/opct-v0.5.0-alpha.1 retrieve
Result:
- faster than ever etcd
- resilient to disk failures
Scenario 3: add data disk to etcd
It requires change in installer to support a install-config like this:
#> TODO create support to osDIsk PremiumV2_LRS
# required changes
CLUSTER_NAME=azetcd11
INSTALL_DIR=/tmp/azure-${CLUSTER_NAME}
mkdir $INSTALL_DIR
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
controlPlane:
platform:
azure:
osDisk:
diskSizeGB: 128
diskType: Premium_LRS
type: Standard_D4ds_v5
dataDisks:
- nameSuffix: etcd
diskSizeGB: 16
managedDisk:
storageAccountType: PremiumV2_LRS
lun: 0
CachingType: None
mountDevices:
- name: ephemeral
devicePath: /dev/disk/azure/resource-part1
mountPath: /var/lib/containers
- name: etcd
devicePath: /dev/disk/azure/scsi1/lun0
mountPath: /var/lib/etcd
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
baseDomain: splat.azure.devcluster.openshift.com
platform:
azure: {
"baseDomainResourceGroupName": "os4-common",
"cloudName": "AzurePublicCloud",
"outboundType": "Loadbalancer",
"region": "eastus"
}
EOF
export OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE="quay.io/openshift-release-dev/ocp-release:4.14.0-rc.2-x86_64"
./bin/openshift-install create manifests --dir $INSTALL_DIR
./bin/openshift-install create cluster --dir $INSTALL_DIR
- Sample MachineConfig
export DEVICE_PATH=/dev/disk/azure/scsi1/lun0
export DEVICE_NAME=dev-disk-azure-scsi1-lun0
#export MOUNT_POINT_VARLIB=etcd
export MOUNT_POINT_NAME=var-lib-etcd
export MOUNT_POINT_PATH=/var/lib/etcd
export MACHINE_CONFIG_ROLE=master
MANIFEST_PATH=$INSTALL_DIR/openshift/98-${DEVICE_NAME}-master.yaml
# LUN
cat <<EOF | envsubst > $MANIFEST_PATH
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: ${MACHINE_CONFIG_ROLE}
name: 98-mount-${MOUNT_POINT_NAME}
spec:
config:
ignition:
version: 3.1.0
systemd:
units:
- contents: |
[Unit]
Description=Make File System on ${DEVICE_PATH}
DefaultDependencies=no
BindsTo=${DEVICE_NAME}.device
After=${DEVICE_NAME}.device var.mount
Before=systemd-fsck@${DEVICE_NAME}.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/bin/bash -c "/bin/rm -rf ${MOUNT_POINT_PATH:-/tmp/none}/*"
ExecStart=/usr/sbin/mkfs.xfs -f ${DEVICE_PATH}
TimeoutSec=0
[Install]
WantedBy=${MOUNT_POINT_NAME}.mount
enabled: true
name: systemd-mkfs@${DEVICE_NAME}.service
- contents: |
[Unit]
Description=Mount ${DEVICE_PATH} to ${MOUNT_POINT_PATH}
Before=local-fs.target
Requires=systemd-mkfs@${DEVICE_NAME}.service
After=systemd-mkfs@${DEVICE_NAME}.service
[Mount]
What=${DEVICE_PATH}
Where=${MOUNT_POINT_PATH}
Type=xfs
Options=defaults,prjquota
[Install]
WantedBy=local-fs.target
enabled: true
name: ${MOUNT_POINT_NAME}.mount
- contents: |
[Unit]
Description=Restore recursive SELinux security contexts
DefaultDependencies=no
After=${MOUNT_POINT_NAME}.mount
Before=crio.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/restorecon -R ${MOUNT_POINT_PATH}
TimeoutSec=0
[Install]
WantedBy=multi-user.target graphical.target
enabled: true
name: restorecon-${MOUNT_POINT_NAME}.service
EOF
References:
- https://etcd.io/docs/v3.3/op-guide/hardware/
- https://zendesk.engineering/etcd-getting-30-more-write-s-318bcdbf7774
-
https://github.com/kubernetes-sigs/cluster-api-provider-azure/issues/448
-
https://www.redhat.com/en/blog/working-container-storage-library-and-tools-red-hat-enterprise-linux
you should set up storage in any manner that best fits your needs using standard Linux commands, but we recommend that you mount a large device on /var/lib/containers.
Role | Name | Price(useast) | vCPUs | CPU Architecture | Memory | Proccessor | OS disk size | Temp Disk | Max Disks | Sup Premium | Combined IOPS | Uncached IOPS | TP Write | TP Read |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Prod(cur) | Standard_D8s_v3 | 280.32 | 8 | x64 | 32 GiB | Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz | 1023 GiB | 64GiB | 16 | yes | 16k | 12.8k | 128 MiB/s | 128 MiB/s |
Prod(new) | Standard_D4s_v5 | 140.16 | 4 | x64 | 16 GiB | Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz | 1023 GiB | N/A | 8 | yes | 38.5k | 6.4k | 250MiB/s | 250MiB/s |
Use Cases / Samples Install-config
Use Case: Default IPI (Prod)
CLUSTER_NAME=az-a412rc2etcd-ded02
INSTANCE_TYPE=Standard_D4s_v5
INSTALL_DIR=/tmp/azure-${CLUSTER_NAME}
mkdir $INSTALL_DIR
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
controlPlane:
platform:
azure:
type: "${INSTANCE_TYPE}"
osDisk:
diskSizeGB: 120
diskType: PremiumV2_LRS
dataDisks:
- nameSuffix: etcd
diskSizeGB: 16
managedDisk:
storageAccountType: PremiumV2_LRS
lun: 0
CachingType: None
mountDevices:
- name: etcd
devicePath: /dev/disk/azure/scsi1/lun0
mountPath: /var/lib/etcd
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
baseDomain: splat.azure.devcluster.openshift.com
platform:
azure: {
"baseDomainResourceGroupName": "os4-common",
"cloudName": "AzurePublicCloud",
"outboundType": "Loadbalancer",
"region": "eastus"
}
EOF
export OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE="quay.io/openshift-release-dev/ocp-release:4.14.0-rc.2-x86_64"
./bin/openshift-install create manifests --dir $INSTALL_DIR
./bin/openshift-install create cluster --dir $INSTALL_DIR
- Default:
CLUSTER_NAME=az-a412rc2etcd
INSTALL_DIR=/tmp/azure-${CLUSTER_NAME}
mkdir $INSTALL_DIR
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
baseDomain: splat.azure.devcluster.openshift.com
platform:
azure: {
"baseDomainResourceGroupName": "os4-common",
"cloudName": "AzurePublicCloud",
"outboundType": "Loadbalancer",
"region": "eastus"
}
EOF
./bin/openshift-install create manifests --dir $INSTALL_DIR
./bin/openshift-install create cluster --dir $INSTALL_DIR
Flag OPENSHIFT_INSTALL_EXPERIMENTAL_ETCD_DEDICATED
- dedicated etcd:
export OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE="quay.io/openshift-release-dev/ocp-release:4.14.0-rc.2-x86_64"
export OPENSHIFT_INSTALL_EXPERIMENTAL_ETCD_DEDICATED=true
CLUSTER_NAME=az-a412rc2etcd-ded03
INSTALL_DIR=/tmp/azure-${CLUSTER_NAME}
mkdir $INSTALL_DIR
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
baseDomain: splat.azure.devcluster.openshift.com
platform:
azure:
baseDomainResourceGroupName: os4-common
cloudName: AzurePublicCloud
outboundType: Loadbalancer
region: eastus
EOF
./bin/openshift-install create manifests --dir $INSTALL_DIR
./bin/openshift-install create cluster --dir $INSTALL_DIR
- default:
export OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE="quay.io/openshift-release-dev/ocp-release:4.14.0-rc.2-x86_64"
unset OPENSHIFT_INSTALL_EXPERIMENTAL_ETCD_DEDICATED
CLUSTER_NAME=az-a412rc2-03ipi
INSTALL_DIR=/tmp/azure-${CLUSTER_NAME}
mkdir $INSTALL_DIR
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
baseDomain: splat.azure.devcluster.openshift.com
platform:
azure:
baseDomainResourceGroupName: os4-common
cloudName: AzurePublicCloud
outboundType: Loadbalancer
region: eastus
EOF
./bin/openshift-install create manifests --dir $INSTALL_DIR
./bin/openshift-install create cluster --dir $INSTALL_DIR
Use Case: Dev Cluster
- smaller instance type
- ephemeral to /var/lib/containers and smaller lun for etcd
CLUSTER_NAME=az-lun-eph-02
DOMAIN=splat.azure.devcluster.openshift.com
# may not work:
INSTANCE_TYPE=Standard_D4ds_v5
INSTALL_DIR=/tmp/azure-${CLUSTER_NAME}
mkdir $INSTALL_DIR
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
baseDomain: $DOMAIN
controlPlane:
platform:
azure:
osDisk:
diskSizeGB: 64
diskType: Premium_LRS
type: Standard_D4ds_v5
dataDisks:
- nameSuffix: etcd
diskSizeGB: 8
managedDisk:
storageAccountType: PremiumV2_LRS
lun: 0
CachingType: None
mountDevices:
- name: ephemeral
devicePath: /dev/disk/azure/resource-part1
mountPath: /var/lib/containers
- name: etcd
devicePath: /dev/disk/azure/scsi1/lun0
mountPath: /var/lib/etcd
platform:
azure:
baseDomainResourceGroupName: os4-common
cloudName: AzurePublicCloud
outboundType: Loadbalancer
region: eastus
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
EOF
export OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE="quay.io/openshift-release-dev/ocp-release:4.14.0-rc.2-x86_64"
./bin/openshift-install create manifests --dir $INSTALL_DIR
./bin/openshift-install create cluster --dir $INSTALL_DIR
Condidential
CLUSTER_NAME=az-conf-01
DOMAIN=splat.azure.devcluster.openshift.com
INSTANCE_TYPE=Standard_DC8ads_v5
INSTALL_DIR=/tmp/azure-${CLUSTER_NAME}
mkdir $INSTALL_DIR
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
baseDomain: $DOMAIN
compute:
- architecture: amd64
hyperthreading: Enabled
name: worker
platform:
azure:
type: $INSTANCE_TYPE
replicas: 3
controlPlane:
architecture: amd64
hyperthreading: Enabled
name: master
platform:
azure:
type: $INSTANCE_TYPE
dataDisks:
- nameSuffix: etcd
diskSizeGB: 16
managedDisk:
storageAccountType: PremiumV2_LRS
lun: 0
CachingType: None
mountDevices:
- name: etcd
devicePath: /dev/disk/azure/scsi1/lun0
mountPath: /var/lib/etcd
platform:
azure:
baseDomainResourceGroupName: os4-common
cloudName: AzurePublicCloud
outboundType: Loadbalancer
region: eastus
defaultMachinePlatform:
settings:
securityType: ConfidentialVM
confidentialVM:
uefiSettings:
secureBoot: Enabled
virtualizedTrustedPlatformModule: Enabled
osDisk:
diskSizeGB: 128
securityProfile:
securityEncryptionType: VMGuestStateOnly
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
EOF
export OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE="quay.io/openshift-release-dev/ocp-release:4.14.0-rc.2-x86_64"
./bin/openshift-install create manifests --dir $INSTALL_DIR
./bin/openshift-install create cluster --dir $INSTALL_DIR
Use Case: Prod distributed disks
#> TODO create support to osDIsk PremiumV2_LRS
# required changes
CLUSTER_NAME=azetcd11
INSTALL_DIR=/tmp/azure-${CLUSTER_NAME}
mkdir $INSTALL_DIR
cat << EOF > $INSTALL_DIR/install-config.yaml
apiVersion: v1
metadata:
name: $CLUSTER_NAME
controlPlane:
platform:
azure:
osDisk:
diskSizeGB: 64
diskType: PremiumV2_LRS
type: Standard_D4ds_v5
dataDisks:
- nameSuffix: etcd
diskSizeGB: 32
managedDisk:
storageAccountType: PremiumV2_LRS
lun: 0
CachingType: None
- nameSuffix: etcd
diskSizeGB: 64
managedDisk:
storageAccountType: PremiumV2_LRS
lun: 1
CachingType: None
mountDevices:
- name: etcd
devicePath: /dev/disk/azure/scsi1/lun0
mountPath: /var/lib/etcd
- name: ephemeral
devicePath: /dev/disk/azure/scsi1/lun1
mountPath: /var/lib/containers
publish: External
pullSecret: '$(cat ~/.openshift/pull-secret-latest.json)'
sshKey: |
$(cat ~/.ssh/id_rsa.pub)
baseDomain: splat.azure.devcluster.openshift.com
platform:
azure: {
"baseDomainResourceGroupName": "os4-common",
"cloudName": "AzurePublicCloud",
"outboundType": "Loadbalancer",
"region": "eastus"
}
EOF
export OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE="quay.io/openshift-release-dev/ocp-release:4.14.0-rc.2-x86_64"
./bin/openshift-install create manifests --dir $INSTALL_DIR
./bin/openshift-install create cluster --dir $INSTALL_DIR