OPENSHIFT-280-8-使用第三方模板创建应用

本文档介绍了如何在 OpenShift 中利用第三方模板创建 MySQL 应用。首先,通过网页界面或命令行获取 MySQL 模板。接着,使用 `oc export` 命令将模板导出为 YAML 文件并编辑。然后,应用修改后的模板,并检查项目中的 pod 和服务资源信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.登陆网页界面,找到相应模板。(也可以通过命令行)

 

2.oc export template mysql-ephemeral -n openshift > mysql-tmp.yaml将模板信息输出为模板资源文件。

[student@workstation wordpress]$ oc export template mysql-ephemeral -n openshift > mysql-tmp.yaml
[student@workstation wordpress]$ cat mysql-tmp.yaml 
apiVersion: v1
kind: Template
labels:
  template: mysql-ephemeral-template
message: |-
  The following service(s) have been created in your project: ${DATABASE_SERVICE_NAME}.

         Username: ${MYSQL_USER}
         Password: ${MYSQL_PASSWORD}
    Database Name: ${MYSQL_DATABASE}
   Connection URL: mysql://${DATABASE_SERVICE_NAME}:3306/

  For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/5.7/README.md.
metadata:
  annotations:
    description: |-
      MySQL database service, without persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/5.7/README.md.

      WARNING: Any data stored will be lost upon pod destruction. Only use this template for testing
    iconClass: icon-mysql-database
    openshift.io/display-name: MySQL (Ephemeral)
    tags: database,mysql
    template.openshift.io/documentation-url: https://docs.openshift.org/latest/using_images/db_images/mysql.html
    template.openshift.io/long-description: This template provides a standalone MySQL
      server with a database created.  The database is not stored on persistent storage,
      so any restart of the service will result in all data being lost.  The database
      name, username, and password are chosen via parameters when provisioning this
      service.
    template.openshift.io/provider-display-name: Red Hat, Inc.
    template.openshift.io/support-url: https://access.redhat.com
  creationTimestamp: null
  name: mysql-ephemeral
objects:
- apiVersion: v1
  kind: Secret
  metadata:
    name: ${DATABASE_SERVICE_NAME}
  stringData:
    database-password: ${MYSQL_PASSWORD}
    database-root-password: ${MYSQL_ROOT_PASSWORD}
    database-user: ${MYSQL_USER}
- apiVersion: v1
  kind: Service
  metadata:
    creationTimestamp: null
    name: ${DATABASE_SERVICE_NAME}
  spec:
    ports:
    - name: mysql
      nodePort: 0
      port: 3306
      protocol: TCP
      targetPort: 3306
    selector:
      name: ${DATABASE_SERVICE_NAME}
    sessionAffinity: None
    type: ClusterIP
  status:
    loadBalancer: {}
- apiVersion: v1
  kind: DeploymentConfig
  metadata:
    creationTimestamp: null
    name: ${DATABASE_SERVICE_NAME}
  spec:
    replicas: 1
    selector:
      name: ${DATABASE_SERVICE_NAME}
    strategy:
      type: Recreate
    template:
      metadata:
        creationTimestamp: null
        labels:
          name: ${DATABASE_SERVICE_NAME}
      spec:
        containers:
        - capabilities: {}
          env:
          - name: MYSQL_USER
            valueFrom:
              secretKeyRef:
                key: database-user
                name: ${DATABASE_SERVICE_NAME}
          - name: MYSQL_PASSWORD
            valueFrom:
              secretKeyRef:
                key: database-password
                name: ${DATABASE_SERVICE_NAME}
          - name: MYSQL_ROOT_PASSWORD
            valueFrom:
              secretKeyRef:
                key: database-root-password
                name: ${DATABASE_SERVICE_NAME}
          - name: MYSQL_DATABASE
            value: ${MYSQL_DATABASE}
          image: ' '
          imagePullPolicy: IfNotPresent
          livenessProbe:
            initialDelaySeconds: 30
            tcpSocket:
              port: 3306
            timeoutSeconds: 1
          name: mysql
          ports:
          - containerPort: 3306
            protocol: TCP
          readinessProbe:
            exec:
              command:
              - /bin/sh
              - -i
              - -c
              - MYSQL_PWD="$MYSQL_PASSWORD" mysql -h 127.0.0.1 -u $MYSQL_USER -D $MYSQL_DATABASE
                -e 'SELECT 1'
            initialDelaySeconds: 5
            timeoutSeconds: 1
          resources:
            limits:
              memory: ${MEMORY_LIMIT}
          securityContext:
            capabilities: {}
            privileged: false
          terminationMessagePath: /dev/termination-log
          volumeMounts:
          - mountPath: /var/lib/mysql/data
            name: ${DATABASE_SERVICE_NAME}-data
        dnsPolicy: ClusterFirst
        restartPolicy: Always
        volumes:
        - emptyDir:
            medium: ""
          name: ${DATABASE_SERVICE_NAME}-data
    triggers:
    - imageChangeParams:
        automatic: true
        containerNames:
        - mysql
        from:
          kind: ImageStreamTag
          name: mysql:${MYSQL_VERSION}
          namespace: ${NAMESPACE}
        lastTriggeredImage: ""
      type: ImageChange
    - type: ConfigChange
  status: {}
parameters:
- description: Maximum amount of memory the container can use.
  displayName: Memory Limit
  name: MEMORY_LIMIT
  required: true
  value: 512Mi
- description: The OpenShift Namespace where the ImageStream resides.
  displayName: Namespace
  name: NAMESPACE
  value: openshift
- description: The name of the OpenShift Service exposed for the database.
  displayName: Database Service Name
  name: DATABASE_SERVICE_NAME
  required: true
  value: mysql
- description: Username for MySQL user that will be used for accessing the database.
  displayName: MySQL Connection Username
  from: user[A-Z0-9]{3}
  generate: expression
  name: MYSQL_USER
  required: true
- description: Password for the MySQL connection user.
  displayName: MySQL Connection Password
  from: '[a-zA-Z0-9]{16}'
  generate: expression
  name: MYSQL_PASSWORD
  required: true
- description: Password for the MySQL root user.
  displayName: MySQL root user Password
  from: '[a-zA-Z0-9]{16}'
  generate: expression
  name: MYSQL_ROOT_PASSWORD
  required: true
- description: Name of the MySQL database accessed.
  displayName: MySQL Database Name
  name: MYSQL_DATABASE
  required: true
  value: sampledb
- description: Version of MySQL image to be used (5.5, 5.6, 5.7, or latest).
  displayName: Version of MySQL Image
  name: MYSQL_VERSION
  required: true
  value: "5.7"

 

3.vim mysql-tmp.yaml 修改模板资源文件。对kind: Template资源下的信息进行修改,修改以下三项。

[student@workstation wordpress]$ vim mysql-tmp.yaml 

template: mysql2
openshift.io/display-name: MySQL2
name: mysql2

 

4.oc apply -f  mysql-tmp.yaml  -n openshift将模板资源进行声明。再次到网页界面可以到修改后的模板的显示信息。补充部分配置信息。
[student@workstation wordpress]$ oc apply -f  mysql-tmp.yaml  -n openshift
template "mysql2" created

 

5.oc project ditto进入项目。oc get pods -o wide查看pod资源信息。oc get svc -o wide查看服务资源信息。
[student@workstation wordpress]$ oc project ditto
Now using project "ditto" on server "https://master.lab.example.com:8443".
[student@workstation wordpress]$ oc get pods -o wide
NAME            READY     STATUS    RESTARTS   AGE       IP           NODE
mysql-1-fxplk   1/1       Running   0          2m        10.130.0.7   node1.lab.example.com
[student@workstation wordpress]$ oc get svc -o wide
NAME      CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE       SELECTOR
mysql     172.30.117.143   <none>        3306/TCP   3m        name=mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值