项目结构如图:
- Dockerfile 文件 构建镜像:
#基础镜像,如果本地仓库没有,会从远程仓库拉取 openjdk:8 FROM openjdk:8 #暴露端口 EXPOSE 9301 #容器中创建目录 RUN mkdir -p /usr/local/java #编译后的jar包copy到容器中创建到目录内 ../../realize-gateway COPY realize-auth.jar /usr/local/java/realize-auth.jar #指定容器时区 RUN rm -f /etc/localtime \ && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone #指定容器启动时要执行的命令 ENTRYPOINT ["java","-jar","-Dspring.profiles.active=server","/usr/local/java/realize-auth.jar"]
- k8s realize-auth.yaml 文件:
apiVersion: v1 kind: Service metadata: name: $IMG_NAME namespace: rz-dt labels: app: $IMG_NAME spec: type: ClusterIP #NodePort ports: - name: tcp-9301-9301 port: 9301 protocol: TCP targetPort: 9301 #nodePort: 31050 #service对外开放端口 selector: app: $IMG_NAME --- apiVersion: apps/v1 kind: Deployment #对象类型 metadata: name: $IMG_NAME #名称 namespace: rz-dt labels: app: $IMG_NAME #标注 spec: replicas: 1 #运行容器的副本数,修改这里可以快速修改分布式节点数量 selector: matchLabels: app: $IMG_NAME template: metadata: labels: app: $IMG_NAME spec: containers: #docker容器的配置 - name: $IMG_NAME image: rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/$IMG_NAME:$IMG_TAG # pull镜像的地址 ip:prot/dir/images:tag imagePullPolicy: Always #pull镜像时机, ports: - containerPort: 9301 #容器对外开放端口,需与springboot配置文件一致 volumeMounts: - name: time-config mountPath: /etc/localtime readOnly: true - name: volume-logs mountPath: /logs subPath: logs resources: limits: cpu: 500m memory: 1Gi requests: cpu: 10m memory: 50Mi #从私有仓库拉取镜像凭证 imagePullSecrets: - name: rz-dt-miyue-vpc volumes: - name: time-config hostPath: path: /usr/share/zoneinfo/Asia/Shanghai - name: volume-logs persistentVolumeClaim: claimName: rz-dt-nas-volume-claim
- centos配置kubectl客户端连接k8s集群,执行,sh test.sh测试环境发布k8s,sh real.sh生产环境
echo "开始制作镜像..." image_name=realize-auth image_tag=`date +%Y-%m-%d-%H-%M-%S` #_%H%M echo "当前时间版本号:$image_tag" docker build -t ${image_name}:${image_tag} . echo "制作镜像成功!" echo "登录" sudo docker login --username=aliyun03985131512 rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com --password=1234R echo "镜像最新版本提交" docker tag ${image_name}:${image_tag} rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/${image_name}:${image_tag} docker push rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/${image_name}:${image_tag} echo "k8s一键部署" export IMG_TAG=${image_tag} export IMG_NAME=${image_name} envsubst < ${image_name}.yaml | kubectl --kubeconfig ~/.kube-rz/config apply -f -