OpenShift Image and ImageStream Operations: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
No edit summary
 
(60 intermediate revisions by the same user not shown)
Line 2: Line 2:


* [[OpenShift_Operations#Subjects|OpenShift Operations]]
* [[OpenShift_Operations#Subjects|OpenShift Operations]]
* [[OpenShift_Concepts#Image_Stream|OpenShift Concepts - Image Streams]]


=Overview=
=Overview=


=Get Image Streams Available to a Project=
* [[OpenShift Concepts#Image|Image]]
* [[OpenShift Concepts#Image_Stream|Image Streams]]
 
=Image Operations=
 
==<span id='List Images available to the Project'></span>List Images available to the Cluster==
 
[[Oc_get#images.2C_image|oc get images]]
 
The command lists all images averrable in the cluster. The images are not project-scoped, but cluster-scoped, so any user from any project that has sufficient cluster-level privileges can get information about any image available to any project. One role that permits inspecting image information is [[OpenShift_Security_Concepts#.2Fcluster-reader|/cluster-reader]]. On the other hand, a user that only has project-level privileges cannot inspect images.
 
==Image Information==
 
oc get image <''image-name''>
 
oc get image/<''image-name''>
 
oc get image sha256:41976593d219eb2008a533e7f6fbb17e1fc3391065e2d592cc0b05defe5d5562
 
Returns [[OpenShift Concepts#Image|image]] information.
 
==Image Tagging==
 
Tag an image from a project with a new tag in a different project (the service account of the process that does the tagging must have an "edit" role in the target project):
 
oc tag <''source-project''>/<''image-name''>:latest <''target-project''>/<''different-image-name''>:<''version-tag''>
 
More details: https://github.com/NovaOrdis/novaordis-session-servlet/blob/master/openshift/Jenkinsfile-Full.groovy
 
=Image Stream Operations=
 
==Get Image Streams Available to a Project==


  oc project <''project-name''>
  oc project <''project-name''>


  oc get imagestreams
  oc get imagestreams
oc get is
oc get is -n openshift
==Get Information about an Image Stream==
oc describe is jboss-eap64-openshift
==Create an Image Stream==
===Create an Individual Image Stream with import-image===
This command fetches the latest version of an image from a remote repository and updates the image stream tag if it does not match the previous value. It is idempotent, running the command multiple times will not create duplicate entries.
The command can be used repeatedly to pull from the remote repository the latest images corresponding to this stream.
Also see: {{Internal|OpenShift_DeploymentConfig_Definition#imagePullPolicy|Deployment Configuration imagePullPolicy}}
When importing an image, only the image metadata is copied, not the image contents.
If the image stream does not exist, a new image stream named "" is created if --confirm is provided.
[[oc import-image]] <''imagestream-name''>[:''tag''] \
    --from <''registry''/''image''> [--confirm]
[[oc import-image]] local-redhat-openjdk-18/openjdk18-openshift \
    --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirm
===<span id='Create_an_Individual_Image_Stream_from_YAML.7CJSON'></span>Create an Individual Image Stream from YAML/JSON===
====Image Available in an OpenShift Registry====
Inspect the [[OpenShift_Concepts#Integrated_Registry_Console|integrated registry console]] for a suitable image and create a YAML file similar to the one specified below.
The Docker image name is found under the "Pull repository" section and represents the <''repository-name''>[:''tag''] of the image.
apiVersion: v1
kind: ImageStream
metadata:
  name: my-own-eap7-is
spec:
  tags:
  - name: latest
    from:
      kind: DockerImage
      name: registry.access.redhat.com/jboss-eap-7/eap70-openshift:latest
then:
[[oc create]] -f ./my-own-eap7-is.yaml
====Image Available in an Docker Hub====
postgresql-95-debug.yaml:
apiVersion: v1
kind: ImageStream
metadata:
  name: postgresql-95-debug
spec:
  tags:
  - name: "1"
    from:
      kind: DockerImage
      name: ovidiufeodorov/postgresql-95-debug:1
   


=Create an Image Stream=
ovidiufeodorov/postgresql-95-debug:1 will be resolved to [[Docker Concepts#Docker_Hub|Docker Hub]] automatically.


The following procedure will create a image stream named "" in the "openshift" project.
then:


An example of image stream definition file is available at https://raw.githubusercontent.com/jboss-openshift/application-templates/master/jboss-image-streams.json. A version is also available here: [[OpenShift JBoss ImageStream Definition Example]].
oc create -f ./postgresql-95-debug.yaml
 
===Import Image Streams in Bulk===
 
The following procedure will create a set of image streams in the "openshift" project. An example of image stream definition file is available at https://raw.githubusercontent.com/jboss-openshift/application-templates/master/jboss-image-streams.json. A version is also available here: [[OpenShift JBoss ImageStream Definition Example]].


  oc login -u system:admin
  oc login -u system:admin
  oc create -f ./jboss-image-streams.json -n openshift
  oc create -f ./jboss-image-streams.json -n openshift
The output is similar to:
imagestream "jboss-webserver31-tomcat7-openshift" created
imagestream "jboss-webserver31-tomcat8-openshift" created
imagestream "jboss-eap71-openshift" created
imagestream "jboss-decisionserver64-openshift" created
imagestream "jboss-processserver64-openshift" created
imagestream "jboss-datagrid71-openshift" created
imagestream "jboss-datagrid65-client-openshift" created
imagestream "jboss-datagrid71-client-openshift" created
imagestream "jboss-datavirt63-driver-openshift" created
imagestream "jboss-amq-63" created
imagestream "redhat-sso71-openshift" created
Error from server (AlreadyExists): imagestreams "jboss-webserver30-tomcat7-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-webserver30-tomcat8-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-eap64-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-eap70-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-decisionserver62-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-decisionserver63-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-processserver63-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-datagrid65-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-datavirt63-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-amq-62" already exists
Error from server (AlreadyExists): imagestreams "redhat-sso70-openshift" already exists
Error from server (AlreadyExists): imagestreams "redhat-openjdk18-openshift" already exists

Latest revision as of 23:25, 25 January 2018

Internal

Overview

Image Operations

List Images available to the Cluster

oc get images

The command lists all images averrable in the cluster. The images are not project-scoped, but cluster-scoped, so any user from any project that has sufficient cluster-level privileges can get information about any image available to any project. One role that permits inspecting image information is /cluster-reader. On the other hand, a user that only has project-level privileges cannot inspect images.

Image Information

oc get image <image-name>
oc get image/<image-name>
oc get image sha256:41976593d219eb2008a533e7f6fbb17e1fc3391065e2d592cc0b05defe5d5562

Returns image information.

Image Tagging

Tag an image from a project with a new tag in a different project (the service account of the process that does the tagging must have an "edit" role in the target project):

oc tag <source-project>/<image-name>:latest <target-project>/<different-image-name>:<version-tag>

More details: https://github.com/NovaOrdis/novaordis-session-servlet/blob/master/openshift/Jenkinsfile-Full.groovy

Image Stream Operations

Get Image Streams Available to a Project

oc project <project-name>
oc get imagestreams
oc get is
oc get is -n openshift

Get Information about an Image Stream

oc describe is jboss-eap64-openshift

Create an Image Stream

Create an Individual Image Stream with import-image

This command fetches the latest version of an image from a remote repository and updates the image stream tag if it does not match the previous value. It is idempotent, running the command multiple times will not create duplicate entries.

The command can be used repeatedly to pull from the remote repository the latest images corresponding to this stream.

Also see:

Deployment Configuration imagePullPolicy

When importing an image, only the image metadata is copied, not the image contents.

If the image stream does not exist, a new image stream named "" is created if --confirm is provided.

oc import-image <imagestream-name>[:tag] \
   --from <registry/image> [--confirm]
oc import-image local-redhat-openjdk-18/openjdk18-openshift \
   --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirm

Create an Individual Image Stream from YAML/JSON

Image Available in an OpenShift Registry

Inspect the integrated registry console for a suitable image and create a YAML file similar to the one specified below.

The Docker image name is found under the "Pull repository" section and represents the <repository-name>[:tag] of the image.

apiVersion: v1
kind: ImageStream
metadata:
  name: my-own-eap7-is
spec:
  tags:
  - name: latest
    from:
      kind: DockerImage
      name: registry.access.redhat.com/jboss-eap-7/eap70-openshift:latest

then:

oc create -f ./my-own-eap7-is.yaml

Image Available in an Docker Hub

postgresql-95-debug.yaml:

apiVersion: v1
kind: ImageStream
metadata:
  name: postgresql-95-debug
spec:
  tags:
  - name: "1"
    from:
      kind: DockerImage
      name: ovidiufeodorov/postgresql-95-debug:1
    

ovidiufeodorov/postgresql-95-debug:1 will be resolved to Docker Hub automatically.

then:

oc create -f ./postgresql-95-debug.yaml

Import Image Streams in Bulk

The following procedure will create a set of image streams in the "openshift" project. An example of image stream definition file is available at https://raw.githubusercontent.com/jboss-openshift/application-templates/master/jboss-image-streams.json. A version is also available here: OpenShift JBoss ImageStream Definition Example.

oc login -u system:admin
oc create -f ./jboss-image-streams.json -n openshift

The output is similar to:

imagestream "jboss-webserver31-tomcat7-openshift" created
imagestream "jboss-webserver31-tomcat8-openshift" created
imagestream "jboss-eap71-openshift" created
imagestream "jboss-decisionserver64-openshift" created
imagestream "jboss-processserver64-openshift" created
imagestream "jboss-datagrid71-openshift" created
imagestream "jboss-datagrid65-client-openshift" created
imagestream "jboss-datagrid71-client-openshift" created
imagestream "jboss-datavirt63-driver-openshift" created
imagestream "jboss-amq-63" created
imagestream "redhat-sso71-openshift" created
Error from server (AlreadyExists): imagestreams "jboss-webserver30-tomcat7-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-webserver30-tomcat8-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-eap64-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-eap70-openshift" already exists 
Error from server (AlreadyExists): imagestreams "jboss-decisionserver62-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-decisionserver63-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-processserver63-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-datagrid65-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-datavirt63-openshift" already exists
Error from server (AlreadyExists): imagestreams "jboss-amq-62" already exists
Error from server (AlreadyExists): imagestreams "redhat-sso70-openshift" already exists
Error from server (AlreadyExists): imagestreams "redhat-openjdk18-openshift" already exists