目次
3. K8s プラットフォームにプロジェクトをデプロイします
1. コンテナ配送の流れ
コンテナ配信プロセスは通常、開発段階、継続的統合段階、アプリケーション展開段階、運用および保守段階の 4 つの段階に分かれています。
開発フェーズ:アプリケーションの開発、Dockerfile の作成。
継続的統合フェーズ:アプリケーションをコンパイルしてパッケージ化し、Dockerfile を使用してイメージを構築し、イメージをミラー ウェアハウスにプッシュします。
アプリケーションのデプロイ段階:イメージに基づいてポッドを作成し、デプロイ コントローラーを使用してサービスを公開し、サービスを取得し、イングレスを使用してドメイン名アクセス サービスを提供します。
運用・保守段階:アプリケーション等の監視やバージョンアップ。
2. k8s プラットフォーム導入プロジェクトのプロセス
1. ミラーイメージを作成します (Dockerfile 経由)
2. ミラー倉庫(Aliyun Mirror、Netease Mirror)にプッシュします。
3. コントローラー導入イメージ(Deployment)
4. 外部公開アプリケーション (サービス、Ingress)
5. 運用保守(監視、更新)
3. K8s プラットフォームにプロジェクトをデプロイします
導入環境の準備
# 可以使用 yum 在线 或离线的下载 安装
yum install java-1.8.0-openjdk maven git -y
Maven プロジェクトのコンパイル
# 代码编译构建
cd /opt/tomcat-java-demo-master
mvn clean package -Dmaven.test.skip=true
コンパイルされた WAR パッケージ
最初のステップ: 鏡像を作成する
cd /opt/tomcat-java-demo-master
unzip target/ly-simple-tomcat-0.0.1-SNAPSHOT.war -d target/ROOT
## Dockerfile
FROM lizhenliang/tomcat
LABEL maintainer www.ctnrs.com
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/ROOT /usr/local/tomcat/webapps/ROOT
## 镜像构建
docker build -f Dockerfile -t java-demo .
## 在项目中标记镜像
docker tag java-demo harbor.winneryun.com/demo/java-demo:v1
## 推送镜像到当前项目 docker配置可信任 且登录成功
docker push harbor.winneryun.com/demo/java-demo:v1
鏡の倉庫に押し込む
プロジェクトデモのアドレス:
# 项目地址
https://github.com/lizhenliang/tomcat-java-demo
ステップ 2: コントローラーを使用してイメージを展開する
信頼できる各ノードを構成します。 ノード (ウェアハウスが HTTPS によってアクセスされる場合、構成は必要ありません)
[root@k8s-master java-demo]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"insecure-registries": ["harbor.winneryun.com"]
}
ミラー ウェアハウスの認証資格情報を K8s Secret に保存します。
kubectl create secret docker-registry registry-auth --docker-username=admin --docker-password=Harbor12345 --docker-server=harbor.winneryun.com
configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: java-demo-config
data:
application.yml: |
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
username: root
password: 123456789
driver-class-name: com.mysql.jdbc.Driver
freemarker:
allow-request-override: false
cache: true
check-template-location: true
charset: UTF-8
content-type: text/html; charset=utf-8
expose-request-attributes: false
expose-session-attributes: false
expose-spring-macro-helpers: false
suffix: .ftl
template-loader-path:
- classpath:/templates/
デプロイメント.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: java-demo
spec:
replicas: 2
selector:
matchLabels:
project: www
app: java-demo
template:
metadata:
labels:
project: www
app: java-demo
spec:
imagePullSecrets:
- name: registry-auth
containers:
- image: harbor.winneryun.com/demo/java-demo:v1
name: java-demo
volumeMounts: ## configMap 挂载
- name: config
mountPath: "/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/application.yml"
subPath: application.yml
resources:
requests:
cpu: 0.5
memory: 500Mi
limits:
cpu: 1
memory: 1Gi
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 50
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 50
periodSeconds: 10
volumes:
- name: config
configMap:
name: java-demo-config
items:
- key: "application.yml"
path: "application.yml"
ステップ 3: アプリケーションを外部に公開する
サービス.yaml
apiVersion: v1
kind: Service
metadata:
name: java-demo
spec:
selector:
project: www
app: java-demo
ports:
- protocol: TCP
port: 80
targetPort: 8080
ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: java-demo
spec:
rules:
- host: example.ctnrs.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: java-demo
port:
number: 80
デプロイされたサービスを表示する
アクセスアドレス: http: //example.ctnrs.com/
ステップ 4: パブリック ネットワーク ロード バランサを追加する
nginxをインストールし、nginx.confを設定する
yum install epel-release -y
yum install nginx -y
systemctl start nginx
vim /etc/nginx/nginx.conf
#在server 的上面插入以下代码
upstream webservers {
server 192.168.2.118:80;
server 192.168.2.210:80;
}
server{
listen 80;
server_name example.ctnrs.com;
location / {
proxy_pass http://java-demo; proxy_set_header Host $Host;
}
}
server {
listen 80 default_server;
listen [::]:80 default_server;
.....
nginx -s reload
アクセス成功: