公司从Rancher切换到OpenShift环境 此前我未接触过容器化部署的概念,于是上网查了一下,但是时间比较紧,没有去详细了解,所以这里只谈使用,不谈别的 ,有兴趣的可以了解一下
- 什么是OpenShift
- 什么是k8s
- OpenShift 和 k8s的比较
- 总结版
-
登录
-
进入控制台查看项目
-
选择你要进入的project 注意:现在是administrator
-
查看项目的运行信息 这里面 一般中间件 例如 :nacos,rabbitMq 都会使用Stateful Sets这个模式 这个模式有状态相关的东西
-
模板导入 (重头戏来了)
选择这个倒入你的模板文件 yml
随便在网上找的一片模板文件 可以借鉴下
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"
- 切换developer身份点击add 选择闪电标的那个
- 搜索你刚刚导入的模板名称-> 选择 -> 使用
- 输入命名空间 镜像源 点击creat 就创建好了
这里需要注意一下 创建好的ss对应的pvc可能会无法创建成功 需要手动复制pvc名称 删除正在创建的pvc重建 !
- 脚本文件需要留存
- 脚本文件包括两个可执行脚本和一个或者两个配置文件
- 这里以nacos为例
其实和模板操作的步骤是一样的 无非就是没有图形化界面了
起作用的其实就是两个脚本文件
配置文件中 从镜像库往openshift本地库导入镜像库 然后通过读取env配置和模板yml文件生成你想要的
由于是公司的东西 我就截一部分图



