# How to Operate Infra and Apps with the OSM Declarative Framework The tutorial assumes that you have added a VIM/Cloud account to OSM. ```bash export OSM_HOSTNAME=$(kubectl get -n osm -o jsonpath="{.spec.rules[0].host}" ingress nbi-ingress) ``` Create a cluster: ```bash CLUSTER_NAME=mydemo CLUSTER_VM_SIZE=Standard_D2_v2 CLUSTER_NODES=2 REGION_NAME=northeurope VIM_ACCOUNT=azure-site RESOURCE_GROUP= KUBERNETES_VERSION="1.30" osm cluster-create --node-count ${CLUSTER_NODES} --node-size ${CLUSTER_VM_SIZE} --version ${KUBERNETES_VERSION} --vim-account ${VIM_ACCOUNT} --description "Mydemo cluster" ${CLUSTER_NAME} --region-name ${REGION_NAME} --resource-group ${RESOURCE_GROUP} ``` Check progress: ```bash osm cluster-list ``` When the cluster is created, the field `resourceState` should be `READY`. Get credentials: ```bash osm cluster-show mydemo -o jsonpath='{.credentials}' | yq -P > ~/kubeconfig-mydemo.yaml export KUBECONFIG=~/kubeconfig-mydemo.yaml # Check that the credentials work kubectl get nodes ``` Refreshing credentials in case they are renewed by the cloud policy: ```bash osm cluster-get-credentials mydemo > ~/kubeconfig-mydemo.yaml export KUBECONFIG=~/kubeconfig-mydemo.yaml ``` OKA addition: ```bash export OSM_PACKAGES_FOLDER="${HOME}/osm-packages" export OKA_FOLDER="${OSM_PACKAGES_FOLDER}/oka/apps" osm oka-add jenkins ${OKA_FOLDER}/jenkins --description jenkins --profile-type app-profile osm oka-add testapp ${OKA_FOLDER}/testapp --description testapp --profile-type app-profile osm oka-add testacme ${OKA_FOLDER}/testacme --description testacme --profile-type app-profile ``` Check the progress: ```bash osm oka-list ``` When the OKAs are created, the field `resourceState` should be `READY`. KSU creation: ```bash osm ksu-create --ksu testapp --profile mydemo --profile-type app-profile --oka testapp --params ${OKA_FOLDER}/testapp-params.yaml osm ksu-create --ksu testacme --profile mydemo --profile-type app-profile --oka testacme --params ${OKA_FOLDER}/testacme-params.yaml osm ksu-create --ksu jenkins --description "Jenkins" --profile mydemo --profile-type app-profile --oka jenkins --params ${OKA_FOLDER}/jenkins-params.yaml ``` Check the progress: ```bash osm ksu-list ``` When the KSUs are created, the field `resourceState` should be `READY`. Check in the destination cluster: ```bash export KUBECONFIG=~/kubeconfig-mydemo.yaml watch "kubectl get ns; echo; kubectl get ks -A; echo; kubectl get hr -A" watch "kubectl get all -n testapp" watch "kubectl get all -n testacme" watch "kubectl get all -n jenkins" ``` KSU deletion: ```bash osm ksu-delete testapp osm ksu-delete testacme osm ksu-delete jenkins ``` Cluster scale: ```bash CLUSTER_NAME=mydemo osm cluster-scale ${CLUSTER_NAME} --node-count 3 ``` Check progress: ```bash osm cluster-list ``` When the cluster is created, the field `resourceState` should be `READY`. Cluster deletion: ```bash osm cluster-delete ${CLUSTER_NAME} ```