Documents Product Categories Red Hat® OpenShift® Container Platform on Alibaba Cloud

Red Hat® OpenShift® Container Platform on Alibaba Cloud

Nov 15, 2024
-p= --server= --insecure- skip-tls-verify With an OAuth token: $ oc login --token= With a web browser: $ oc login --web You can now create a project or issue other commands for managing your cluster. Additional resources oc login oc logout 4.3. CREATING A NEW PROJECT A project enables a community of users to organize and manage their content in isolation. Projects are 26CHAPTER 4. CREATING AND BUILDING AN APPLICATION USING THE CLI A project enables a community of users to organize and manage their content in isolation. Projects are OpenShift Container Platform extensions to Kubernetes namespaces. Projects have additional features that enable user self-provisioning. Users must receive access to projects from administrators. Cluster administrators can allow developers to create their own projects. In most cases, users automatically have access to their own projects. Each project has its own set of objects, policies, constraints, and service accounts. Prerequisites You must have access to an OpenShift Container Platform cluster. You must have installed the OpenShift CLI (oc). Procedure To create a new project, enter the following command: $ oc new-project user-getting-started --display-name="Getting Started with OpenShift" Example output Now using project "user-getting-started" on server "https://openshift.example.com:6443". Additional resources oc new-project 4.4. GRANTING VIEW PERMISSIONS OpenShift Container Platform automatically creates a few special service accounts in every project. The default service account takes responsibility for running the pods. OpenShift Container Platform uses and injects this service account into every pod that launches. The following procedure creates a RoleBinding object for the default ServiceAccount object. The service account communicates with the OpenShift Container Platform API to learn about pods, services, and resources within the project. Prerequisites You must have access to an OpenShift Container Platform cluster. You must have installed the OpenShift CLI (oc). You have a deployed image. You must have cluster-admin or project-admin privileges. Procedure To add the view role to the default service account in the user-getting-started project, enter the following command: 27OpenShift Container Platform 4.17 Getting started $ oc adm policy add-role-to-user view -z default -n user-getting-started Additional resources Understanding authentication RBAC overview oc policy add-role-to-user 4.5. DEPLOYING YOUR FIRST IMAGE The simplest way to deploy an application in OpenShift Container Platform is to run an existing container image. The following procedure deploys a front-end component of an application called national-parks- app. The web application displays an interactive map. The map displays the location of major national parks across the world. Prerequisites You must have access to an OpenShift Container Platform cluster. Install the OpenShift CLI (oc). Procedure To deploy an application, enter the following command: $ oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l ''app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part- of=national-parks-app'' Example output --> Found container image 0c2f55f (12 months old) from quay.io for "quay.io/openshiftroadshow/parksmap:latest" * An image stream tag will be created as "parksmap:latest" that will track this image --> Creating resources with label app=national-parks-app,app.kubernetes.io/part-of=national- parks-app,component=parksmap,role=frontend ... imagestream.image.openshift.io "parksmap" created deployment.apps "parksmap" created service "parksmap" created --> Success Additional resources oc new-app 4.5.1. Creating a route External clients can access applications running on OpenShift Container Platform through the routing 28CHAPTER 4. CREATING AND BUILDING AN APPLICATION USING THE CLI External clients can access applications running on OpenShift Container Platform through the routing layer and the data object behind that is a route. The default OpenShift Container Platform router (HAProxy) uses the HTTP header of the incoming request to determine where to proxy the connection. Optionally, you can define security, such as TLS, for the route. Prerequisites You must have access to an OpenShift Container Platform cluster. You must have installed the OpenShift CLI (oc). You have a deployed image. You must have cluster-admin or project-admin privileges. Procedure 1. To retrieve the created application service, enter the following command: $ oc get service Example output NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE parksmap ClusterIP <123.456.789> 8080/TCP 8m29s 2. To create a route, enter the following command: $ oc create route edge parksmap --service=parksmap Example output route.route.openshift.io/parksmap created 3. To retrieve the created application route, enter the following command: $ oc get route Example output NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None Additional resources oc create route edge oc get 29OpenShift Container Platform 4.17 Getting started 4.5.2. Examining the pod OpenShift Container Platform leverages the Kubernetes concept of a pod, which is one or more containers deployed together on one host, and the smallest compute unit that can be defined, deployed, and managed. Pods are the rough equivalent of a machine instance, physical or virtual, to a container. You can view the pods in your cluster and to determine the health of those pods and the cluster as a whole. Prerequisites You must have access to an OpenShift Container Platform cluster. You must have installed the OpenShift CLI (oc). You have a deployed image. Procedure 1. To list all pods with node names, enter the following command: $ oc get pods Example output NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 77s 2. To list all pod details, enter the following command: $ oc describe pods Example output Name: parksmap-848bd4954b-5pvcc Namespace: user-getting-started Priority: 0 Node: ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c/10.0.128.4 Start Time: Sun, 13 Feb 2022 14:14:14 -0500 Labels: app=national-parks-app app.kubernetes.io/part-of=national-parks-app component=parksmap deployment=parksmap pod-template-hash=848bd4954b role=frontend Annotations: k8s.v1.cni.cncf.io/network-status: [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.131.0.14" ], "default": true, 30CHAPTER 4. CREATING AND BUILDING AN APPLICATION USING THE CLI "dns": {} }] k8s.v1.cni.cncf.io/network-status: [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.131.0.14" ], "default": true, "dns": {} }] openshift.io/generated-by: OpenShiftNewApp openshift.io/scc: restricted Status: Running IP: 10.131.0.14 IPs: IP: 10.131.0.14 Controlled By: ReplicaSet/parksmap-848bd4954b Containers: parksmap: Container ID: cri- o://4b2625d4f61861e33cc95ad6d455915ea8ff6b75e17650538cc33c1e3e26aeb8 Image: quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51a afbae73f2abd70a83d5fa173b Image ID: quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51a afbae73f2abd70a83d5fa173b Port: 8080/TCP Host Port: 0/TCP State: Running Started: Sun, 13 Feb 2022 14:14:25 -0500 Ready: True Restart Count: 0 Environment: Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-6f844 (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: kube-api-access-6f844: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: DownwardAPI: true ConfigMapName: openshift-service-ca.crt ConfigMapOptional: QoS Class: BestEffort Node-Selectors: Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s 31OpenShift Container Platform 4.17 Getting started node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 46s default-scheduler Successfully assigned user-getting- started/parksmap-848bd4954b-5pvcc to ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c Normal AddedInterface 44s multus Add eth0 [10.131.0.14/23] from ovn- kubernetes Normal Pulling 44s kubelet Pulling image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51 aafbae73f2abd70a83d5fa173b" Normal Pulled 35s kubelet Successfully pulled image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51 aafbae73f2abd70a83d5fa173b" in 9.49243308s Normal Created 35s kubelet Created container parksmap Normal Started 35s kubelet Started container parksmap Additional resources oc describe oc get oc label Viewing pods Viewing pod logs 4.5.3. Scaling the application In Kubernetes, a Deployment object defines how an application deploys. In most cases, users use Pod, Service, ReplicaSets, and Deployment resources together. In most cases, OpenShift Container Platform creates the resources for you. When you deploy the national-parks-app image, a deployment resource is created. In this example, only one Pod is deployed. The following procedure scales the national-parks-image to use two instances. Prerequisites You must have access to an OpenShift Container Platform cluster. You must have installed the OpenShift CLI (oc). You have a deployed image. Procedure To scale your application from one pod instance to two pod instances, enter the following command: $ oc scale --current-replicas=1 --replicas=2 deployment/parksmap 32CHAPTER 4. CREATING AND BUILDING AN APPLICATION USING THE CLI Example output deployment.apps/parksmap scaled Verification 1. To ensure that your application scaled properly, enter the following command: $ oc get pods Example output NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 7m39s parksmap-5f9579955-8tgft 1/1 Running 0 24s 2. To scale your application back down to one pod instance, enter the following command: $ oc scale --current-replicas=2 --replicas=1 deployment/parksmap Additional resources oc scale 4.6. DEPLOYING A PYTHON APPLICATION The following procedure deploys a back-end service for the parksmap application. The Python application performs 2D geo-spatial queries against a MongoDB database to locate and return map coordinates of all national parks in the world. The deployed back-end service is nationalparks. Prerequisites You must have access to an OpenShift Container Platform cluster. You must have installed the OpenShift CLI (oc). You have a deployed image. Procedure 1. To create a new Python application, enter the following command: $ oc new-app python~https://github.com/openshift-roadshow/nationalparks-py.git --name nationalparks -l ''app=national-parks- app,component=nationalparks,role=backend,app.kubernetes.io/part-of=national-parks- app,app.kubernetes.io/name=python'' --allow-missing-images=true Example output --> Found image 0406f6c (13 days old) in image stream "openshift/python" under tag "3.9- 33OpenShift Container Platform 4.17 Getting started ubi9" for "python" Python 3.9 ---------- Python 3.9 available as container is a base platform for building and running various Python 3.9 applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python''s elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms. Tags: builder, python, python39, python-39, rh-python39 * A source build using source code from https://github.com/openshift- roadshow/nationalparks-py.git will be created * The resulting image will be pushed to image stream tag "nationalparks:latest" * Use ''oc start-build'' to trigger a new build --> Creating resources with label app=national-parks- app,app.kubernetes.io/name=python,app.kubernetes.io/part-of=national-parks- app,component=nationalparks,role=backend ... imagestream.image.openshift.io "nationalparks" created buildconfig.build.openshift.io "nationalparks" created deployment.apps "nationalparks" created service "nationalparks" created --> Success 2. To create a route to expose your application, nationalparks, enter the following command: $ oc create route edge nationalparks --service=nationalparks Example output route.route.openshift.io/parksmap created 3. To retrieve the created application route, enter the following command: $ oc get route Example output NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD nationalparks nationalparks-user-getting-started.apps.cluster.example.com nationalparks 8080-tcp edge None parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None Additional resources oc new-app 4.7. CONNECTING TO A DATABASE 34CHAPTER 4. CREATING AND BUILDING AN APPLICATION USING THE CLI Deploy and connect a MongoDB database where the national-parks-app application stores location information. Once you mark the national-parks-app application as a backend for the map visualization tool, parksmap deployment uses the OpenShift Container Platform discover mechanism to display the map automatically. Prerequisites You must have access to an OpenShift Container Platform cluster. You must have installed the OpenShift CLI (oc). You have a deployed image. Procedure To connect to a database, enter the following command: $ oc new-app quay.io/centos7/mongodb-36-centos7 --name mongodb-nationalparks -e MONGODB_USER=mongodb -e MONGODB_PASSWORD=mongodb -e MONGODB_DATABASE=mongodb -e MONGODB_ADMIN_PASSWORD=mongodb -l ''app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=mongodb'' Example output --> Found container image dc18f52 (8 months old) from quay.io for "quay.io/centos7/mongodb-36-centos7" MongoDB 3.6 ----------- MongoDB (from humongous) is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemas. This container image contains programs to run mongod server. Tags: database, mongodb, rh-mongodb36 * An image stream tag will be created as "mongodb-nationalparks:latest" that will track this image --> Creating resources with label app.kubernetes.io/name=mongodb,app.kubernetes.io/part- of=national-parks-app ... imagestream.image.openshift.io "mongodb-nationalparks" created deployment.apps "mongodb-nationalparks" created service "mongodb-nationalparks" created --> Success Additional resources oc new-project 4.7.1. Creating a secret The Secret object provides a mechanism to hold sensitive information such as passwords, OpenShift Container Platform client configuration files, private source repository credentials, and so on. Secrets decouple sensitive content from the pods. You can mount secrets into containers using a volume plugin 35OpenShift Container Platform 4.17 Getting started or the system can use secrets to perform actions on behalf of a pod. The following procedure adds the secret nationalparks-mongodb-parameters and mounts it to the nationalparks workload. Prerequisites You must have access to an OpenShift Container Platform cluster. You must have installed the OpenShift CLI (oc). You have a deployed image. Procedure 1. To create a secret, enter the following command: $ oc create secret generic nationalparks-mongodb-parameters --from- literal=DATABASE_SERVICE_NAME=mongodb-nationalparks --from- literal=MONGODB_USER=mongodb --from-literal=MONGODB_PASSWORD=mongodb -- from-literal=MONGODB_DATABASE=mongodb --from- literal=MONGODB_ADMIN_PASSWORD=mongodb Example output secret/nationalparks-mongodb-parameters created 2. To update the environment variable to attach the mongodb secret to the nationalpartks workload, enter the following command: $ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks Example output deployment.apps/nationalparks updated 3. To show the status of the nationalparks deployment, enter the following command: $ oc rollout status deployment nationalparks Example output deployment "nationalparks" successfully rolled out 4. To show the status of the mongodb-nationalparks deployment, enter the following command: $ oc rollout status deployment mongodb-nationalparks Example output deployment "nationalparks" successfully rolled out deployment "mongodb-nationalparks" successfully rolled out Additional resources 36CHAPTER 4. CREATING AND BUILDING AN APPLICATION USING THE CLI Additional resources oc create secret generic oc set env oc rollout status 4.7.2. Loading data and displaying the national parks map You deployed the parksmap and nationalparks applications and then deployed the mongodb- nationalparks database. However, no data has been loaded into the database. Prerequisites You must have access to an OpenShift Container Platform cluster. You must have installed the OpenShift CLI (oc). You have a deployed image. Procedure 1. To load national parks data, enter the following command: $ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk ''{print $1;}'') -- curl -s http://localhost:8080/ws/data/load Example output "Items inserted in database: 2893" 2. To verify that your data is loaded properly, enter the following command: $ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk ''{print $1;}'') -- curl -s http://localhost:8080/ws/data/all Example output (trimmed) , {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}] 3. To add labels to the route, enter the following command: $ oc label route nationalparks type=parksmap-backend Example output route.route.openshift.io/nationalparks labeled 4. To retrieve your routes to view your map, enter the following command: $ oc get routes 37OpenShift Container Platform 4.17 Getting started Example output NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD nationalparks nationalparks-user-getting-started.apps.cluster.example.com nationalparks 8080-tcp edge None parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None 5. Copy and paste the HOST/PORT path you retrieved above into your web browser. Your browser should display a map of the national parks across the world. Figure 4.1. National parks across the world Additional resources oc exec oc label oc get 38">
To view the full page, please visit: Red Hat® OpenShift® Container Platform on Alibaba Cloud Product Userguide

Red Hat® OpenShift® Container Platform on Alibaba Cloud

Red Hat OpenShift Container Platform offers an opinionated application development platform built on enterprise-grade Kubernetes. You can now directly procure Red Hat OpenShift from Alibaba Cloud Marketplace.
Buy now