6-7 传统web服务迁移kubernetes
将原有的tomcat镜像打tag 推送到私有仓库
docker tag registry.cn-hangzhou.aliyuncs.com/liuyi01/tomcat:8.0.51-alpine harbor.pdabc.com/kubernetes/tomcat:8.0.51-alpine
进入mooc-k8s-demo/web-demo 进行编译
cd mooc-k8s-demo/web-demo
修改pom.xml
在plugin出添加jdk版本限制1.7
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mooc-k8s-demo</artifactId>
<groupId>com.mooc</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mooc</groupId>
<artifactId>web-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.mooc</groupId>
<artifactId>dubbo-demo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc-portlet</artifactId>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.4</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.26</version>
<exclusions>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>6.1.26</version>
</dependency>
</dependencies>
<build>
<defaultGoal>package</defaultGoal>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.vm</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.16.v20140903</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<host>0.0.0.0</host>
</connector>
</connectors>
<scanIntervalSeconds>0</scanIntervalSeconds>
<stopPort>8280</stopPort>
<stopKey>stop</stopKey>
</configuration>
</plugin>
</plugins>
</build>
编译
mvn package
查看war包目录列表
cd target
jar -tf web-demo-1.0-SNAPSHOT.war
解压war包
mkdir ROOT
mv web-demo-1.0-SNAPSHOT.war ROOT/
cd ROOT/
jar -xvf web-demo-1.0-SNAPSHOT.war
rm -rf web-demo-1.0-SNAPSHOT.war
编写Dockerfile
创建启动脚本的文件夹并加入启动脚本
mkdir dockerfile
vi dockerfile/start.sh
#!/bin/bash
# 通过tail命令挂起容器
sh /usr/local/tomcat/bin/startup.sh
tail -f /usr/local/tomcat/logs/catalina.out
修改zookeeper地址
vim WEB-INF/classes/applicationContext-service-config.xml
vi Dockfile
FROM harbor.pdabc.com/kubernetes/tomcat:8.0.51-alpine
COPY ROOT /usr/local/tomcat/webapps/ROOT
COPY dockerfiles/start.sh /usr/local/tomcat/bin/start.sh
ENTRYPOINT ["sh" , "/usr/local/tomcat/bin/start.sh"]
执行构建命令
docker build -t web:v3 .
运行容器测试
docker run -it web:v3
推送镜像
docker tag web:v3 harbor.pdabc.com/kubernetes/web:v3
docker push harbor.pdabc.com/kubernetes/web:v3
创建web.yaml
#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-demo
spec:
selector:
matchLabels:
app: web-demo
replicas: 1
template:
metadata:
labels:
app: web-demo
spec:
containers:
- name: web-demo
image: harbor.pdabc.com/kubernetes/web:v3
ports:
- containerPort: 8080
---
#service
apiVersion: v1
kind: Service
metadata:
name: web-demo
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: web-demo
type: ClusterIP
---
#ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-demo
spec:
rules:
- host: web.pdabc.com
http:
paths:
- path: /
backend:
serviceName: web-demo
servicePort: 80
运行并查看
kubectl apply -f web.yaml
kubectl get pods
修改本地host 并查看http://web.pdabc.com/hello?name=jiaminxu