Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 73108f0

Browse files
committedJan 28, 2022
修改文档
1 parent 3927eaa commit 73108f0

24 files changed

+3084
-3
lines changed
 

‎apps/elasticsearch/elasticsearch.yaml

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
---
2+
apiVersion: storage.k8s.io/v1
3+
kind: StorageClass
4+
metadata:
5+
name: example-kubernetes-app-es-storage
6+
provisioner: kubernetes.io/no-provisioner
7+
volumeBindingMode: WaitForFirstConsumer
8+
9+
---
10+
apiVersion: v1
11+
kind: PersistentVolume
12+
metadata:
13+
name: example-kubernetes-app-es-pv
14+
spec:
15+
capacity:
16+
storage: 2Gi
17+
volumeMode: Filesystem # Filesystem(文件系统) Block(块)
18+
accessModes:
19+
- ReadWriteOnce # 卷可以被一个节点以读写方式挂载
20+
persistentVolumeReclaimPolicy: Delete
21+
storageClassName: example-kubernetes-app-es-storage
22+
local:
23+
path: /Users/toquery/data/es-data
24+
nodeAffinity:
25+
required:
26+
# 通过 hostname 限定在某个节点创建存储卷
27+
nodeSelectorTerms:
28+
- matchExpressions:
29+
- key: kubernetes.io/hostname
30+
operator: In
31+
values:
32+
- docker-desktop
33+
34+
---
35+
apiVersion: v1
36+
kind: PersistentVolumeClaim
37+
metadata:
38+
name: example-kubernetes-app-es-pvc
39+
spec:
40+
accessModes:
41+
- ReadWriteOnce
42+
storageClassName: example-kubernetes-app-es-storage
43+
resources:
44+
requests:
45+
storage: 2Gi
46+
47+
---
48+
apiVersion: v1
49+
kind: ConfigMap
50+
metadata:
51+
name: example-kubernetes-app-es
52+
data:
53+
elasticsearch.yml: |
54+
cluster.name: "${NAMESPACE}"
55+
node.name: "${POD_NAME}"
56+
network.host: 0.0.0.0
57+
discovery.seed_hosts: "example-kubernetes-app-es"
58+
cluster.initial_master_nodes: "example-kubernetes-app-es-0,example-kubernetes-app-es-1,example-kubernetes-app-es-2"
59+
---
60+
# Elasticsearch deployment itself
61+
apiVersion: apps/v1
62+
kind: StatefulSet
63+
metadata:
64+
name: example-kubernetes-app-es
65+
labels:
66+
app: example-kubernetes-app-es
67+
kubernetes.io/cluster-service: "true"
68+
addonmanager.kubernetes.io/mode: Reconcile
69+
spec:
70+
serviceName: example-kubernetes-app-es
71+
replicas: 3
72+
selector:
73+
matchLabels:
74+
app: example-kubernetes-app-es
75+
template:
76+
metadata:
77+
labels:
78+
app: example-kubernetes-app-es
79+
kubernetes.io/cluster-service: "true"
80+
spec:
81+
serviceAccountName: example-kubernetes-app-es
82+
containers:
83+
- image: elasticsearch:7.16.3
84+
name: example-kubernetes-app-es
85+
resources:
86+
limits:
87+
cpu: '1'
88+
memory: 1Gi
89+
requests:
90+
cpu: '1'
91+
memory: 1Gi
92+
ports:
93+
- containerPort: 9200
94+
name: db
95+
protocol: TCP
96+
- containerPort: 9300
97+
name: transport
98+
protocol: TCP
99+
volumeMounts:
100+
- name: example-kubernetes-app-es-data
101+
mountPath: /data
102+
- name: example-kubernetes-app-es-config
103+
mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
104+
subPath: elasticsearch.yml
105+
env:
106+
- name: NAMESPACE
107+
valueFrom:
108+
fieldRef:
109+
fieldPath: metadata.namespace
110+
- name: POD_NAME
111+
valueFrom:
112+
fieldRef:
113+
fieldPath: metadata.name
114+
volumes:
115+
- name: example-kubernetes-app-es-data
116+
persistentVolumeClaim:
117+
claimName: example-kubernetes-app-es-pvc
118+
119+
# Elasticsearch requires vm.max_map_count to be at least 262144.
120+
# If your OS already sets up this number to a higher value, feel free
121+
# to remove this init container.
122+
initContainers:
123+
- image: alpine:3.6
124+
command: ["/sbin/sysctl", "-w", "vm.max_map_count=262144"]
125+
name: example-kubernetes-app-es-init
126+
securityContext:
127+
privileged: true
128+
129+
---
130+
apiVersion: v1
131+
kind: Service
132+
metadata:
133+
name: example-kubernetes-app-es
134+
labels:
135+
app: example-kubernetes-app-es
136+
kubernetes.io/cluster-service: "true"
137+
addonmanager.kubernetes.io/mode: Reconcile
138+
kubernetes.io/name: "Elasticsearch"
139+
spec:
140+
type: ClusterIP
141+
clusterIP: None # headless
142+
ports:
143+
- port: 9200
144+
protocol: TCP
145+
name: db
146+
targetPort: db
147+
- name: in
148+
port: 9300
149+
protocol: TCP
150+
selector:
151+
app: example-kubernetes-app-es

‎apps/grafana/grafana.yaml

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
---
2+
apiVersion: storage.k8s.io/v1
3+
kind: StorageClass
4+
metadata:
5+
name: example-kubernetes-app-grafana-storage
6+
provisioner: kubernetes.io/no-provisioner
7+
volumeBindingMode: WaitForFirstConsumer
8+
9+
---
10+
apiVersion: v1
11+
kind: PersistentVolume
12+
metadata:
13+
name: example-kubernetes-app-grafana-pv
14+
spec:
15+
capacity:
16+
storage: 2Gi
17+
volumeMode: Filesystem # Filesystem(文件系统) Block(块)
18+
accessModes:
19+
- ReadWriteOnce # 卷可以被一个节点以读写方式挂载
20+
persistentVolumeReclaimPolicy: Delete
21+
storageClassName: example-kubernetes-app-grafana-storage
22+
local:
23+
path: /Users/toquery/data/grafana-data
24+
nodeAffinity:
25+
required:
26+
# 通过 hostname 限定在某个节点创建存储卷
27+
nodeSelectorTerms:
28+
- matchExpressions:
29+
- key: kubernetes.io/hostname
30+
operator: In
31+
values:
32+
- docker-desktop
33+
34+
---
35+
apiVersion: v1
36+
kind: PersistentVolumeClaim
37+
metadata:
38+
name: grafana-pvc
39+
spec:
40+
accessModes:
41+
- ReadWriteOnce
42+
storageClassName: example-kubernetes-app-grafana-storage
43+
resources:
44+
requests:
45+
storage: 1Gi
46+
---
47+
apiVersion: apps/v1
48+
kind: Deployment
49+
metadata:
50+
labels:
51+
app: grafana
52+
name: grafana
53+
spec:
54+
selector:
55+
matchLabels:
56+
app: grafana
57+
template:
58+
metadata:
59+
labels:
60+
app: grafana
61+
spec:
62+
securityContext:
63+
fsGroup: 472
64+
supplementalGroups:
65+
- 0
66+
containers:
67+
- name: grafana
68+
image: grafana/grafana:8.3.3
69+
imagePullPolicy: IfNotPresent
70+
ports:
71+
- containerPort: 3000
72+
name: http-grafana
73+
protocol: TCP
74+
# readinessProbe:
75+
# failureThreshold: 3
76+
# httpGet:
77+
# path: /robots.txt
78+
# port: 3000
79+
# scheme: HTTP
80+
# initialDelaySeconds: 10
81+
# periodSeconds: 30
82+
# successThreshold: 1
83+
# timeoutSeconds: 2
84+
# livenessProbe:
85+
# failureThreshold: 3
86+
# initialDelaySeconds: 30
87+
# periodSeconds: 10
88+
# successThreshold: 1
89+
# tcpSocket:
90+
# port: 3000
91+
# timeoutSeconds: 1
92+
resources:
93+
requests:
94+
cpu: 250m
95+
memory: 750Mi
96+
volumeMounts:
97+
- mountPath: /var/lib/grafana
98+
name: grafana-pv
99+
volumes:
100+
- name: grafana-pv
101+
persistentVolumeClaim:
102+
claimName: grafana-pvc
103+
---
104+
apiVersion: v1
105+
kind: Service
106+
metadata:
107+
name: grafana
108+
spec:
109+
ports:
110+
- port: 3000
111+
protocol: TCP
112+
targetPort: http-grafana
113+
selector:
114+
app: grafana
115+
sessionAffinity: None
116+
type: NodePort

‎Ingress/apple.yaml renamed to ‎apps/ingress/apple.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ kind: Pod
22
apiVersion: v1
33
metadata:
44
name: apple-app
5+
namespace: example-kubernetes
56
labels:
67
app: apple
78
spec:
@@ -17,6 +18,7 @@ kind: Service
1718
apiVersion: v1
1819
metadata:
1920
name: apple-service
21+
namespace: example-kubernetes
2022
spec:
2123
selector:
2224
app: apple

‎Ingress/banana.yaml renamed to ‎apps/ingress/banana.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ kind: Pod
22
apiVersion: v1
33
metadata:
44
name: banana-app
5+
namespace: example-kubernetes
56
labels:
67
app: banana
78
spec:
@@ -17,6 +18,7 @@ kind: Service
1718
apiVersion: v1
1819
metadata:
1920
name: banana-service
21+
namespace: example-kubernetes
2022
spec:
2123
selector:
2224
app: banana

‎Ingress/ingress.yaml renamed to ‎apps/ingress/ingress.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ apiVersion: networking.k8s.io/v1
22
kind: Ingress
33
metadata:
44
name: example-ingress
5-
annotations:
6-
kubernetes.io/ingress.class: "nginx" # 控制器使用nginx
5+
namespace: example-kubernetes
6+
# annotations:
7+
# kubernetes.io/ingress.class: "kong" # 控制器使用nginx
78
spec:
9+
ingressClassName: nginx
810
rules:
9-
- host: ingress.local
11+
- host: ingress.example-kubernetes.com
1012
http:
1113
paths:
1214
- path: /apple

‎apps/kong/0.1-kong-ingress.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: Ingress
3+
metadata:
4+
namespace: kong
5+
name: kong
6+
annotations:
7+
kubernetes.io/ingress.class: "nginx"
8+
spec:
9+
rules:
10+
- host: kong.localhost
11+
http:
12+
paths:
13+
- path: /
14+
pathType: Prefix
15+
backend:
16+
service:
17+
name: ingress-kong
18+
port:
19+
number: 8000
20+

‎apps/kong/0.1-kong.yaml

Lines changed: 1405 additions & 0 deletions
Large diffs are not rendered by default.

‎apps/kong/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
3+
4+
- http://www.iceyao.com.cn/2019/12/18/kong_ingress_controller_readnote/
5+
- https://www.helloworld.net/p/724I9YtZwfjG
6+
- https://www.jianshu.com/p/520570bc171c
7+
- https://juejin.cn/post/6937497362436718606
8+
- https://izsk.me/2020/08/16/Kong-deploy-on-kubernetes/

‎apps/konga/0.3-konga.yaml

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: konga
5+
namespace: example-spring-cloud-kubernetes
6+
data:
7+
db-adapter: mongo
8+
9+
---
10+
apiVersion: v1
11+
kind: Secret
12+
metadata:
13+
name: konga
14+
namespace: example-spring-cloud-kubernetes
15+
type: Opaque
16+
data:
17+
database-host: bW9uZ29kYi5leGFtcGxlLXNwcmluZy1jbG91ZC1rdWJlcm5ldGVzLnN2Yy5jbHVzdGVyLmxvY2Fs # mongodb.example-spring-cloud-kubernetes.svc.cluster.local
18+
database-name: YWRtaW4= # admin
19+
database-user: dGVzdA== # test
20+
database-password: dGVzdDEyMw== # test123
21+
token-secret: dGVzdDEyMw== # test123
22+
23+
---
24+
apiVersion: apps/v1
25+
kind: Deployment
26+
metadata:
27+
name: konga
28+
namespace: example-spring-cloud-kubernetes
29+
spec:
30+
replicas: 1
31+
selector:
32+
matchLabels:
33+
app: konga
34+
template:
35+
metadata:
36+
labels:
37+
name: konga
38+
app: konga
39+
spec:
40+
containers:
41+
- name: konga
42+
image: pantsel/konga
43+
env:
44+
- name: DB_ADAPTER
45+
valueFrom:
46+
configMapKeyRef:
47+
name: konga
48+
key: db-adapter
49+
- name: DB_HOST
50+
valueFrom:
51+
secretKeyRef:
52+
name: konga
53+
key: database-host
54+
- name: DB_DATABASE
55+
valueFrom:
56+
secretKeyRef:
57+
name: konga
58+
key: database-name
59+
- name: DB_USER
60+
valueFrom:
61+
secretKeyRef:
62+
name: konga
63+
key: database-user
64+
- name: DB_PASSWORD
65+
valueFrom:
66+
secretKeyRef:
67+
name: konga
68+
key: database-password
69+
- name: TOKEN_SECRET
70+
valueFrom:
71+
secretKeyRef:
72+
name: konga
73+
key: token-secret
74+
ports:
75+
- containerPort: 1337
76+
protocol: TCP
77+
---
78+
apiVersion: v1
79+
kind: Service
80+
metadata:
81+
labels:
82+
app: konga
83+
name: konga
84+
namespace: example-spring-cloud-kubernetes
85+
spec:
86+
ports:
87+
- protocol: TCP
88+
name: http
89+
port: 1337
90+
targetPort: 1337
91+
selector:
92+
app: konga
93+
---
94+
kind: Ingress
95+
apiVersion: networking.k8s.io/v1
96+
metadata:
97+
annotations:
98+
kubernetes.io/ingress.class: nginx
99+
# nginx.ingress.kubernetes.io/ssl-redirect: "true"
100+
name: konga
101+
namespace: example-spring-cloud-kubernetes
102+
spec:
103+
rules:
104+
- host: konga.local
105+
http:
106+
paths:
107+
- path: /
108+
pathType: Prefix
109+
backend:
110+
service:
111+
name: konga
112+
port:
113+
number: 1337
114+
115+
# tls:
116+
# - hosts:
117+
# - konga.mydomain.com
118+
# secretName: konga-mydomain-tls
119+
#kubetpl render konga.yml -i kong-env.yml --syntax go-template | kubectl apply -f -

‎apps/mongo/0.0-mongo-cluster.yaml

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: mongodb
5+
data:
6+
database-name: admin
7+
8+
---
9+
apiVersion: v1
10+
kind: Secret
11+
metadata:
12+
name: mongodb
13+
type: Opaque
14+
data:
15+
database-user: dGVzdA== # test
16+
database-password: dGVzdDEyMw== # test123
17+
18+
---
19+
apiVersion: apps/v1
20+
kind: StatefulSet
21+
metadata:
22+
name: mongodb
23+
labels:
24+
app: mongodb
25+
spec:
26+
replicas: 1
27+
selector:
28+
matchLabels:
29+
app: mongodb
30+
serviceName: mongodb
31+
template:
32+
metadata:
33+
labels:
34+
app: mongodb
35+
spec:
36+
containers:
37+
- name: mongodb
38+
image: mongo:5.0.5
39+
imagePullPolicy: IfNotPresent
40+
ports:
41+
- containerPort: 27017
42+
volumeMounts:
43+
- mountPath: /data/db
44+
name: mongo-data
45+
env:
46+
- name: MONGO_INITDB_DATABASE
47+
valueFrom:
48+
configMapKeyRef:
49+
name: mongodb
50+
key: database-name
51+
- name: MONGO_INITDB_ROOT_USERNAME
52+
valueFrom:
53+
secretKeyRef:
54+
name: mongodb
55+
key: database-user
56+
- name: MONGO_INITDB_ROOT_PASSWORD
57+
valueFrom:
58+
secretKeyRef:
59+
name: mongodb
60+
key: database-password
61+
volumes:
62+
- name: mongo-data
63+
persistentVolumeClaim:
64+
claimName: mongodata
65+
66+
---
67+
apiVersion: v1
68+
kind: Service
69+
metadata:
70+
name: mongodb
71+
spec:
72+
clusterIP: None # headless
73+
ports:
74+
- port: 27017
75+
protocol: TCP
76+
targetPort: 27017
77+
selector:
78+
app: mongodb
79+
type: ClusterIP
80+
---
81+
apiVersion: storage.k8s.io/v1
82+
kind: StorageClass
83+
metadata:
84+
name: local-storage
85+
provisioner: kubernetes.io/no-provisioner
86+
volumeBindingMode: WaitForFirstConsumer
87+
---
88+
apiVersion: v1
89+
kind: PersistentVolume
90+
metadata:
91+
name: mongodata
92+
spec:
93+
capacity:
94+
storage: 2Gi
95+
volumeMode: Filesystem # Filesystem(文件系统) Block(块)
96+
accessModes:
97+
- ReadWriteOnce # 卷可以被一个节点以读写方式挂载
98+
persistentVolumeReclaimPolicy: Delete
99+
storageClassName: local-storage
100+
local:
101+
path: /data
102+
nodeAffinity:
103+
required:
104+
# 通过 hostname 限定在某个节点创建存储卷
105+
nodeSelectorTerms:
106+
- matchExpressions:
107+
- key: kubernetes.io/hostname
108+
operator: In
109+
values:
110+
- docker-desktop
111+
---
112+
apiVersion: v1
113+
kind: PersistentVolumeClaim
114+
metadata:
115+
name: mongodata
116+
spec:
117+
accessModes: ["ReadWriteOnce"]
118+
storageClassName: "local-storage"
119+
resources:
120+
requests:
121+
storage: 2Gi

‎apps/mongo/0.0-mongo-minikube.yaml

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: mongodb
5+
data:
6+
database-name: admin
7+
8+
---
9+
apiVersion: v1
10+
kind: Secret
11+
metadata:
12+
name: mongodb
13+
type: Opaque
14+
data:
15+
database-user: dGVzdA== # test
16+
database-password: dGVzdDEyMw== # test123
17+
18+
---
19+
apiVersion: apps/v1
20+
kind: StatefulSet
21+
metadata:
22+
name: mongodb
23+
labels:
24+
app: mongodb
25+
spec:
26+
replicas: 1
27+
selector:
28+
matchLabels:
29+
app: mongodb
30+
serviceName: mongodb
31+
template:
32+
metadata:
33+
labels:
34+
app: mongodb
35+
spec:
36+
containers:
37+
- name: mongodb
38+
image: mongo:5.0.5
39+
imagePullPolicy: IfNotPresent
40+
ports:
41+
- containerPort: 27017
42+
volumeMounts:
43+
- mountPath: /data/db
44+
name: mongo-data
45+
env:
46+
- name: MONGO_INITDB_DATABASE
47+
valueFrom:
48+
configMapKeyRef:
49+
name: mongodb
50+
key: database-name
51+
- name: MONGO_INITDB_ROOT_USERNAME
52+
valueFrom:
53+
secretKeyRef:
54+
name: mongodb
55+
key: database-user
56+
- name: MONGO_INITDB_ROOT_PASSWORD
57+
valueFrom:
58+
secretKeyRef:
59+
name: mongodb
60+
key: database-password
61+
volumes:
62+
- name: mongo-data
63+
hostPath:
64+
# 节点上的路径(minikube 容器内的路径)
65+
# Docker for Mac Descktop 在 Settings -> Resources -> FILE SHARING 挂载的分区
66+
path: /data/mongo-data
67+
type: DirectoryOrCreate # 指向一个目录,不存在时自动创建
68+
69+
---
70+
apiVersion: v1
71+
kind: Service
72+
metadata:
73+
name: mongodb
74+
spec:
75+
clusterIP: None # headless
76+
ports:
77+
- port: 27017
78+
protocol: TCP
79+
targetPort: 27017
80+
selector:
81+
app: mongodb
82+
type: ClusterIP

‎apps/mysql/mysql.yaml

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
apiVersion: storage.k8s.io/v1
3+
kind: StorageClass
4+
metadata:
5+
name: example-kubernetes-app-mysql-storage
6+
provisioner: kubernetes.io/no-provisioner
7+
volumeBindingMode: WaitForFirstConsumer
8+
9+
---
10+
apiVersion: v1
11+
kind: PersistentVolume
12+
metadata:
13+
name: example-kubernetes-app-mysql-pv
14+
spec:
15+
capacity:
16+
storage: 2Gi
17+
volumeMode: Filesystem # Filesystem(文件系统) Block(块)
18+
accessModes:
19+
- ReadWriteOnce # 卷可以被一个节点以读写方式挂载
20+
persistentVolumeReclaimPolicy: Delete
21+
storageClassName: example-kubernetes-app-mysql-storage
22+
local:
23+
path: /Users/toquery/data/mysql-data
24+
nodeAffinity:
25+
required:
26+
# 通过 hostname 限定在某个节点创建存储卷
27+
nodeSelectorTerms:
28+
- matchExpressions:
29+
- key: kubernetes.io/hostname
30+
operator: In
31+
values:
32+
- docker-desktop
33+
34+
---
35+
apiVersion: v1
36+
kind: PersistentVolumeClaim
37+
metadata:
38+
name: example-kubernetes-app-mysql-pvc
39+
spec:
40+
accessModes:
41+
- ReadWriteOnce
42+
storageClassName: example-kubernetes-app-mysql-storage
43+
resources:
44+
requests:
45+
storage: 2Gi
46+
47+
---
48+
apiVersion: v1
49+
kind: Secret
50+
metadata:
51+
name: example-kubernetes-app-mysql-secret
52+
type: Opaque
53+
data:
54+
database-root-password: MTIzNDU2 # 123456
55+
56+
---
57+
apiVersion: apps/v1
58+
kind: StatefulSet
59+
metadata:
60+
name: example-kubernetes-app-mysql
61+
spec:
62+
selector:
63+
matchLabels:
64+
app: mysql
65+
serviceName: mysql
66+
template:
67+
metadata:
68+
labels:
69+
app: mysql
70+
spec:
71+
containers:
72+
- image: mysql:8.0.28
73+
name: mysql
74+
env:
75+
- name: MYSQL_ROOT_PASSWORD
76+
valueFrom:
77+
secretKeyRef:
78+
name: example-kubernetes-app-mysql-secret
79+
key: database-root-password
80+
ports:
81+
- containerPort: 3306
82+
protocol: TCP
83+
name: mysql
84+
volumeMounts:
85+
- name: mysql-data
86+
mountPath: /var/lib/mysql
87+
volumes:
88+
- name: mysql-data
89+
persistentVolumeClaim:
90+
claimName: example-kubernetes-app-mysql-pvc
91+
92+
---
93+
apiVersion: v1
94+
kind: Service
95+
metadata:
96+
name: example-kubernetes-app-mysql
97+
spec:
98+
type: ClusterIP
99+
clusterIP: None # headless
100+
ports:
101+
- port: 3306
102+
protocol: TCP
103+
targetPort: 3306
104+
name: mysql
105+
selector:
106+
app: example-kubernetes-app-mysql

‎apps/postgres/postgresql.yaml

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
---
2+
apiVersion: storage.k8s.io/v1
3+
kind: StorageClass
4+
metadata:
5+
name: example-kubernetes-app-postgres-storage
6+
provisioner: kubernetes.io/no-provisioner
7+
volumeBindingMode: WaitForFirstConsumer
8+
9+
---
10+
apiVersion: v1
11+
kind: PersistentVolume
12+
metadata:
13+
name: example-kubernetes-app-postgres-pv
14+
spec:
15+
capacity:
16+
storage: 2Gi
17+
volumeMode: Filesystem # Filesystem(文件系统) Block(块)
18+
accessModes:
19+
- ReadWriteOnce # 卷可以被一个节点以读写方式挂载
20+
persistentVolumeReclaimPolicy: Delete
21+
storageClassName: example-kubernetes-app-postgres-storage
22+
local:
23+
path: /Users/toquery/data/postgres-data
24+
nodeAffinity:
25+
required:
26+
# 通过 hostname 限定在某个节点创建存储卷
27+
nodeSelectorTerms:
28+
- matchExpressions:
29+
- key: kubernetes.io/hostname
30+
operator: In
31+
values:
32+
- docker-desktop
33+
34+
---
35+
apiVersion: v1
36+
kind: PersistentVolumeClaim
37+
metadata:
38+
name: example-kubernetes-app-postgres-pvc
39+
spec:
40+
accessModes:
41+
- ReadWriteOnce
42+
storageClassName: example-kubernetes-app-postgres-storage
43+
resources:
44+
requests:
45+
storage: 2Gi
46+
47+
---
48+
apiVersion: v1
49+
kind: Secret
50+
metadata:
51+
name: example-kubernetes-app-postgres-secret
52+
type: Opaque
53+
data:
54+
postgres-db: cG9zdGdyZXM= # postgres
55+
postgres-user: cG9zdGdyZXM= # postgres
56+
postgres-password: MTIzNDU2 # 123456
57+
58+
---
59+
apiVersion: apps/v1
60+
kind: StatefulSet
61+
metadata:
62+
name: example-kubernetes-app-postgres
63+
spec:
64+
selector:
65+
matchLabels:
66+
app: postgres
67+
serviceName: postgres
68+
template:
69+
metadata:
70+
labels:
71+
app: postgres
72+
spec:
73+
containers:
74+
- image: postgres:9.6.24
75+
name: postgres
76+
env:
77+
- name: POSTGRES_DB
78+
valueFrom:
79+
secretKeyRef:
80+
name: example-kubernetes-app-postgres-secret
81+
key: postgres-db
82+
- name: POSTGRES_USER
83+
valueFrom:
84+
secretKeyRef:
85+
name: example-kubernetes-app-postgres-secret
86+
key: postgres-user
87+
- name: POSTGRES_PASSWORD
88+
valueFrom:
89+
secretKeyRef:
90+
name: example-kubernetes-app-postgres-secret
91+
key: postgres-password
92+
ports:
93+
- containerPort: 5432
94+
protocol: TCP
95+
name: postgres
96+
volumeMounts:
97+
- name: postgres-data
98+
mountPath: /var/lib/postgresql/data
99+
subPath: postgres
100+
volumes:
101+
- name: postgres-data
102+
persistentVolumeClaim:
103+
claimName: example-kubernetes-app-postgres-pvc
104+
105+
---
106+
apiVersion: v1
107+
kind: Service
108+
metadata:
109+
name: example-kubernetes-app-postgres
110+
spec:
111+
clusterIP: None # headless
112+
ports:
113+
- port: 5432
114+
protocol: TCP
115+
targetPort: 5432
116+
name: postgres
117+
selector:
118+
app: example-kubernetes-app-postgres
119+
type: ClusterIP
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: prometheus-server-conf
5+
labels:
6+
name: prometheus-server-conf
7+
data:
8+
prometheus.rules: |-
9+
groups:
10+
- name: devopscube demo alert
11+
rules:
12+
- alert: High Pod Memory
13+
expr: sum(container_memory_usage_bytes) > 1
14+
for: 1m
15+
labels:
16+
severity: slack
17+
annotations:
18+
summary: High Memory Usage
19+
prometheus.yml: |-
20+
global:
21+
scrape_interval: 5s
22+
evaluation_interval: 5s
23+
rule_files:
24+
- /etc/prometheus/prometheus.rules
25+
alerting:
26+
alertmanagers:
27+
- scheme: http
28+
static_configs:
29+
- targets:
30+
- "alertmanager.monitoring.svc:9093"
31+
32+
scrape_configs:
33+
- job_name: 'node-exporter'
34+
kubernetes_sd_configs:
35+
- role: endpoints
36+
relabel_configs:
37+
- source_labels: [__meta_kubernetes_endpoints_name]
38+
regex: 'node-exporter'
39+
action: keep
40+
41+
- job_name: 'kubernetes-apiservers'
42+
43+
kubernetes_sd_configs:
44+
- role: endpoints
45+
scheme: https
46+
47+
tls_config:
48+
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
49+
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
50+
51+
relabel_configs:
52+
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
53+
action: keep
54+
regex: default;kubernetes;https
55+
56+
- job_name: 'kubernetes-nodes'
57+
58+
scheme: https
59+
60+
tls_config:
61+
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
62+
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
63+
64+
kubernetes_sd_configs:
65+
- role: node
66+
67+
relabel_configs:
68+
- action: labelmap
69+
regex: __meta_kubernetes_node_label_(.+)
70+
- target_label: __address__
71+
replacement: kubernetes.default.svc:443
72+
- source_labels: [__meta_kubernetes_node_name]
73+
regex: (.+)
74+
target_label: __metrics_path__
75+
replacement: /api/v1/nodes/${1}/proxy/metrics
76+
77+
- job_name: 'kubernetes-pods'
78+
79+
kubernetes_sd_configs:
80+
- role: pod
81+
82+
relabel_configs:
83+
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
84+
action: keep
85+
regex: true
86+
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
87+
action: replace
88+
target_label: __metrics_path__
89+
regex: (.+)
90+
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
91+
action: replace
92+
regex: ([^:]+)(?::\d+)?;(\d+)
93+
replacement: $1:$2
94+
target_label: __address__
95+
- action: labelmap
96+
regex: __meta_kubernetes_pod_label_(.+)
97+
- source_labels: [__meta_kubernetes_namespace]
98+
action: replace
99+
target_label: kubernetes_namespace
100+
- source_labels: [__meta_kubernetes_pod_name]
101+
action: replace
102+
target_label: kubernetes_pod_name
103+
104+
- job_name: 'kube-state-metrics'
105+
static_configs:
106+
- targets: ['kube-state-metrics.kube-system.svc.cluster.local:8080']
107+
108+
- job_name: 'kubernetes-cadvisor'
109+
110+
scheme: https
111+
112+
tls_config:
113+
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
114+
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
115+
116+
kubernetes_sd_configs:
117+
- role: node
118+
119+
relabel_configs:
120+
- action: labelmap
121+
regex: __meta_kubernetes_node_label_(.+)
122+
- target_label: __address__
123+
replacement: kubernetes.default.svc:443
124+
- source_labels: [__meta_kubernetes_node_name]
125+
regex: (.+)
126+
target_label: __metrics_path__
127+
replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
128+
129+
- job_name: 'kubernetes-service-endpoints'
130+
131+
kubernetes_sd_configs:
132+
- role: endpoints
133+
134+
relabel_configs:
135+
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
136+
action: keep
137+
regex: true
138+
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
139+
action: replace
140+
target_label: __scheme__
141+
regex: (https?)
142+
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
143+
action: replace
144+
target_label: __metrics_path__
145+
regex: (.+)
146+
- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
147+
action: replace
148+
target_label: __address__
149+
regex: ([^:]+)(?::\d+)?;(\d+)
150+
replacement: $1:$2
151+
- action: labelmap
152+
regex: __meta_kubernetes_service_label_(.+)
153+
- source_labels: [__meta_kubernetes_namespace]
154+
action: replace
155+
target_label: kubernetes_namespace
156+
- source_labels: [__meta_kubernetes_service_name]
157+
action: replace
158+
target_label: kubernetes_name
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
name: prometheus
5+
rules:
6+
- apiGroups: [""]
7+
resources:
8+
- nodes
9+
- nodes/proxy
10+
- services
11+
- endpoints
12+
- pods
13+
verbs:
14+
- get
15+
- list
16+
- watch
17+
- apiGroups:
18+
- extensions
19+
resources:
20+
- ingresses
21+
verbs:
22+
- get
23+
- list
24+
- watch
25+
- nonResourceURLs:
26+
- "/metrics"
27+
verbs:
28+
- get
29+
---
30+
apiVersion: rbac.authorization.k8s.io/v1
31+
kind: ClusterRoleBinding
32+
metadata:
33+
name: prometheus
34+
namespace: default
35+
roleRef:
36+
apiGroup: rbac.authorization.k8s.io
37+
kind: ClusterRole
38+
name: prometheus
39+
subjects:
40+
- kind: ServiceAccount
41+
namespace: default
42+
name: default
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: prometheus-deployment
5+
labels:
6+
app: prometheus-server
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: prometheus-server
12+
template:
13+
metadata:
14+
labels:
15+
app: prometheus-server
16+
spec:
17+
containers:
18+
- name: prometheus
19+
image: prom/prometheus
20+
args:
21+
- "--config.file=/etc/prometheus/prometheus.yml"
22+
- "--storage.tsdb.path=/prometheus/"
23+
ports:
24+
- containerPort: 9090
25+
volumeMounts:
26+
- name: prometheus-config-volume
27+
mountPath: /etc/prometheus/
28+
- name: prometheus-storage-volume
29+
mountPath: /prometheus/
30+
volumes:
31+
- name: prometheus-config-volume
32+
configMap:
33+
defaultMode: 420
34+
name: prometheus-server-conf
35+
36+
- name: prometheus-storage-volume
37+
emptyDir: {}
38+
---
39+
apiVersion: v1
40+
kind: Service
41+
metadata:
42+
name: prometheus-service
43+
annotations:
44+
prometheus.io/scrape: 'true'
45+
prometheus.io/port: '9090'
46+
47+
spec:
48+
selector:
49+
app: prometheus-server
50+
type: NodePort
51+
ports:
52+
- port: 8080
53+
targetPort: 9090
54+
nodePort: 30000
55+
---
56+
## Nginx Ingress
57+
## Follow https://devopscube.com/setup-ingress-kubernetes-nginx-controller/
58+
59+
apiVersion: networking.k8s.io/v1
60+
kind: Ingress
61+
metadata:
62+
name: prometheus-ui
63+
annotations:
64+
kubernetes.io/ingress.class: nginx
65+
spec:
66+
rules:
67+
# Use the host you used in your kubernetes Ingress Configurations
68+
- host: prometheus.example.com
69+
http:
70+
paths:
71+
- path: /
72+
pathType: Prefix
73+
backend:
74+
service:
75+
name: prometheus-service
76+
port:
77+
number: 8080
78+
tls:
79+
- hosts:
80+
- prometheus.apps.shaker242.lab
81+
secretName: prometheus-secret
82+
---
83+
apiVersion: v1
84+
kind: Secret
85+
metadata:
86+
name: prometheus-secret
87+
data:
88+
# USe base64 in the certs
89+
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZpVENDQkhHZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBRENCd0RFak1DRUdBMVVFQXhNYWFXNTAKWlhKdFpXUnBZWFJsTG5Ob1lXdGxjakkwTWk1c1lXSXhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoVwphWEpuYVc1cFlURVFNQTRHQTFVRUJ4TUhRbkpwYzNSdmR6RXNNQ29HQTFVRUNoTWpVMGhCUzBWU01qUXlJRXhoCllpQkRaWEowYVdacFkyRjBaU0JCZFhSb2IzSnBkSGt4T1RBM0JnTlZCQXNUTUZOSVFVdEZVakkwTWlCTVlXSWcKU1c1MFpYSnRaV1JwWVhSbElFTmxjblJwWm1sallYUmxJRUYxZEdodmNtbDBlVEFlRncweE9URXdNVGN4TmpFMgpNekZhRncweU1URXdNVFl4TmpFMk16RmFNSUdBTVIwd0d3WURWUVFERkJRcUxtRndjSE11YzJoaGEyVnlNalF5CkxteGhZakVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnVENGWnBjbWRwYm1saE1SQXdEZ1lEVlFRSEV3ZEMKY21semRHOTNNUll3RkFZRFZRUUtFdzFUU0VGTFJWSXlORElnVEdGaU1SVXdFd1lEVlFRTEV3eE1ZV0lnVjJWaQpjMmwwWlhNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURsRm16QVd0U09JcXZNCkpCV3Vuc0VIUmxraXozUmpSK0p1NTV0K0hCUG95YnZwVkJJeXMxZ3prby9INlkxa2Zxa1JCUzZZYVFHM2lYRFcKaDgzNlNWc3pNVUNVS3BtNXlZQXJRNzB4YlpPTXRJcjc1VEcrejFaRGJaeFUzbnh6RXdHdDN3U3c5OVJ0bjhWbgo5dEpTVXI0MHBHUytNemMzcnZOUFZRMjJoYTlhQTdGL2NVcGxtZUpkUnZEVnJ3Q012UklEcndXVEZjZkU3bUtxCjFSUkRxVDhETnlydlJmeUlubytmSkUxTmRuVEVMY0dTYVZlajhZVVFONHY0WFRnLzJncmxIN1pFT1VXNy9oYm8KUXh6NVllejVSam1wOWVPVUpvdVdmWk5FNEJBbGRZeVYxd2NPRXhRTmswck5BOU45ZXBjNWtUVVZQR3pOTWRucgovVXQxOWMweEFnTUJBQUdqZ2dIS01JSUJ4akFKQmdOVkhSTUVBakFBTUJFR0NXQ0dTQUdHK0VJQkFRUUVBd0lHClFEQUxCZ05WSFE4RUJBTUNCYUF3TXdZSllJWklBWWI0UWdFTkJDWVdKRTl3Wlc1VFUwd2dSMlZ1WlhKaGRHVmsKSUZObGNuWmxjaUJEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVWRhYy94MTR6dXl3RVZPSi9vTjdQeU82bApDZ2N3Z2RzR0ExVWRJd1NCMHpDQjBJQVVzZFM1WWxuWEpWTk5mRVpkTEQvL2RyNE5mV3FoZ2JTa2diRXdnYTR4CkdUQVhCZ05WQkFNVEVHTmhMbk5vWVd0bGNqSTBNaTVzWVdJeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUkKRXdoV2FYSm5hVzVwWVRFUU1BNEdBMVVFQnhNSFFuSnBjM1J2ZHpFc01Db0dBMVVFQ2hNalUwaEJTMFZTTWpReQpJRXhoWWlCRFpYSjBhV1pwWTJGMFpTQkJkWFJvYjNKcGRIa3hNVEF2QmdOVkJBc1RLRk5JUVV0RlVqSTBNaUJNCllXSWdVbTl2ZENCRFpYSjBhV1pwWTJGMFpTQkJkWFJvYjNKcGRIbUNBUUV3SFFZRFZSMGxCQll3RkFZSUt3WUIKQlFVSEF3RUdDQ3NHQVFVRkNBSUNNRWdHQTFVZEVRUkJNRCtDRFhOb1lXdGxjakkwTWk1c1lXS0NFbUZ3Y0hNdQpjMmhoYTJWeU1qUXlMbXhoWW9JVUtpNWhjSEJ6TG5Ob1lXdGxjakkwTWk1c1lXS0hCTUNvQ3hBd0RRWUpLb1pJCmh2Y05BUUVMQlFBRGdnRUJBRzA3ZHFNdFZYdVQrckduQlN4SkVTNjNSa2pHaWd0c3ZtNTk4NSsrbjZjRW5kSDIKb2hjaGdmRUo5V0UxYUFWSDR4QlJSdVRIUFVJOFcvd3N1OFBxQ1o4NHpRQ2U2elAyeThEcmEwbjFzK2lIeHFwRAorS3BwZS91NkNLVTFEL0VWRU9MakpZd3pRYlFLSUlPL2Y1Q0JVbUpGWjBuZ1VIUEtvUDNyTXordTlBOWFvRkVrCnF3dDBadHFHcWpjMkh3Q09UOTlOVmFsZ29ISXljOElxQXJXdjNSWklraUlyaW9kSUdDMS94MVQ2dHhKcEUyRisKQzZ0Tzk0U0FVSUJwc2VORjNFbGNLNUsyTW44YVAzR3NnNFRHeElPN2Q1eUIvb3YwNGhOV2Q1S2QwWGorL1BvQgpLOU43cFQ1SVU2citLekNoeGlSdmRvZlAzV0VYN1ZkNEtLWG94K0U9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
90+
tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2d0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktrd2dnU2xBZ0VBQW9JQkFRRGxGbXpBV3RTT0lxdk0KSkJXdW5zRUhSbGtpejNSalIrSnU1NXQrSEJQb3lidnBWQkl5czFnemtvL0g2WTFrZnFrUkJTNllhUUczaVhEVwpoODM2U1Zzek1VQ1VLcG01eVlBclE3MHhiWk9NdElyNzVURyt6MVpEYlp4VTNueHpFd0d0M3dTdzk5UnRuOFZuCjl0SlNVcjQwcEdTK016YzNydk5QVlEyMmhhOWFBN0YvY1VwbG1lSmRSdkRWcndDTXZSSURyd1dURmNmRTdtS3EKMVJSRHFUOEROeXJ2UmZ5SW5vK2ZKRTFOZG5URUxjR1NhVmVqOFlVUU40djRYVGcvMmdybEg3WkVPVVc3L2hibwpReHo1WWV6NVJqbXA5ZU9VSm91V2ZaTkU0QkFsZFl5VjF3Y09FeFFOazByTkE5TjllcGM1a1RVVlBHek5NZG5yCi9VdDE5YzB4QWdNQkFBRUNnZ0VCQU5zOHRjRDBiQnpHZzRFdk8yek0wMUJoKzZYN3daZk4wSjV3bW5kNjZYYkwKc1VEZ1N6WW9PbzNJZ2o5QWZTY2lyQ3YwdUozMVNFWmNpeGRVQ2tTdjlVNnRvTzdyUWdqeUZPM1N1dm5Wc3ZKaQpTZXc5Y0hqNk5jVDczak8rWkgxQVFFZ2tlWG5mQTNZU0JEcTFsSnhpUVZOaHpHUFY0Yzh4Wi9xUkhEbUVBTWR6CmwyaTB6dHJtcWRqSng4aTQxOXpGL1pVektoa2JtcVZVb3JjZ1lNdEt5QVloSENMYms2RFZtQ1FhbDlndEUrNjUKTmFTOEwxUW9yVWNVS0FoSTNKT2Q2TTRwbWRPaExITjZpZ0VwWFdVWGxBZjRITUZicHd5M1oxejNqZzVqTE9ragp6SWNDSVRaai9CYVZvSVc4QzJUb0pieUJKWkN6UDVjUVJTdkJOOGV4aUFFQ2dZRUEvV0Nxb2xVUWtOQkQrSnlPCklXOUJIRVlPS3oxRFZxNWxHRFhoNFMyTStpOU1pck5nUlcvL0NFRGhRUVVMZmtBTDgxMERPQmxsMXRRRUpGK3cKb1V6dWt6U1lkK1hTSnhicTM5YTF1ZGJldTNZU1ljeC8wTEEweGFQOW1sN1l1NXUraUZ4NGhwcnYyL2UrVklZQQpzTWV4WkZSODA3Q3M5YXN5MkdFT1l2aEdKb0VDZ1lFQTUzVm1weFlQbDFOYTVTMElJbEpuYm40dTl0RHpwYm5TCnpsMjBVQ3Q0d0N4STR6YjY1S1o4V1VaYlFzVTVaZ0VqTmxJWURXUisrd3kwVXh2SmNxUG5nS0xuOEdoSzhvOVEKeVJuR2dSYXAxWmNuUEdsbGdCeHQzM0s5TDNWMmJzMXBPcGJKMGlpOVdySWM4MU1wUVFpQjZ1RDRSZ216M0ZWSQpnUk5Ec2ZHS0xyRUNnWUVBbWY5ZXRqc3RUbGJHZVJ2dDVyUlB4bmR0dFNvTysyZ1RXWnVtSmM0aG1RMldYOWFWCjlKNFZTMWJqa1RrWHV5d0NGMis0dlNmeWxaZFd6U1M3bmMyOFV3dnNmekxYZjVxV05tV3hIYnBTdFcwVnp3c1QKeENyVWFDczd2ODlWdXZEMTVMc1BKZ0NWT0FSalVjd0FMM0d2aDJNeVd4ZE9pQ0g5VFRYd0lJYjFYQUVDZ1lBMwp4ZUptZ0xwaERJVHFsRjlSWmVubWhpRnErQTY5OEhrTG9TakI2TGZBRnV1NVZKWkFZcDIwSlcvNE51NE4xbGhWCnpwSmRKOG94Vkc1ZldHTENiUnhyc3RXUTZKQ213a0lGTTJEUjJsUXlVNm53dExUd21la2YzdFlYaVlad1RLNysKbnpjaW5RNkR2RWVkbW54bVgxWnU4cWJndVpYTmtmOVdtdjNFOHg4SkFRS0JnUUNNeDFWNHJIcUpwVXJMdkRVVQo4RzhXVGNrT2VFM2o2anhlcHMwcnExdEd1cE9XWW5saFlNYyt5VkMzMDZUc2dXUmJ5R1Y4YWNaRkF4WS9Ub2N5CmxpcXlUS1NGNUloYXhZQVpRTzVkOU1oTmN0bTRReDNaOUtTekZ5ZG01QlZVL0grMFFmUnRwM29TeFVneXRZNXkKV3ZDTFZ5bmNGZlZpL0VkaTdaZHM2aW82QVE9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg==

‎basic-knowledge/README.md

Whitespace-only changes.

‎basic-knowledge/pv-pvc-sc/README.md

Whitespace-only changes.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: v1
2+
kind: PersistentVolume
3+
metadata:
4+
name: example-kubernetes-pv
5+
spec:
6+
capacity:
7+
storage: 5Gi
8+
volumeMode: Filesystem
9+
accessModes:
10+
- ReadWriteOnce
11+
persistentVolumeReclaimPolicy: Delete
12+
storageClassName: example-kubernetes-storage
13+
local:
14+
path: /Users/toquery/data
15+
nodeAffinity:
16+
required:
17+
nodeSelectorTerms:
18+
- matchExpressions:
19+
- key: kubernetes.io/hostname
20+
operator: In
21+
values:
22+
- docker-desktop
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
kind: PersistentVolumeClaim
2+
apiVersion: v1
3+
metadata:
4+
name: example-kubernetes-pvc
5+
spec:
6+
accessModes:
7+
- ReadWriteOnce
8+
resources:
9+
requests:
10+
storage: 5Gi
11+
storageClassName: example-kubernetes-storage
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
kind: StorageClass
2+
apiVersion: storage.k8s.io/v1
3+
metadata:
4+
name: example-kubernetes-storage
5+
provisioner: kubernetes.io/no-provisioner
6+
volumeBindingMode: WaitForFirstConsumer
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
kind: Pod
2+
apiVersion: v1
3+
metadata:
4+
name: example-kubernetes-pod
5+
spec:
6+
volumes:
7+
- name: example-kubernetes-volume
8+
persistentVolumeClaim:
9+
claimName: example-kubernetes-pvc
10+
containers:
11+
- name: example-kubernetes-container
12+
image: nginx
13+
ports:
14+
- containerPort: 80
15+
name: http-server
16+
volumeMounts:
17+
- mountPath: "/usr/share/nginx/html"
18+
name: example-kubernetes-volume

‎basic-knowledge/pv-pvc-sc/pv-pvc-sc使用.md

Lines changed: 409 additions & 0 deletions
Large diffs are not rendered by default.

‎example-kubernetes-helm.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
2+
## 添加仓库
3+
4+
```shell
5+
helm repo add minio https://charts.min.io
6+
helm repo add kong https://charts.konghq.com
7+
helm repo add bitnami https://charts.bitnami.com/bitnami
8+
helm repo add grafana https://grafana.github.io/helm-charts
9+
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
10+
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard
11+
helm repo add skywalking https://apache.jfrog.io/artifactory/skywalking-helm
12+
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
13+
```
14+
15+
## nginx
16+
17+
```shell
18+
19+
helm upgrade --install ingress-nginx ingress-nginx \
20+
--repo https://kubernetes.github.io/ingress-nginx \
21+
--namespace example-kubernetes --create-namespace \
22+
--set controller.metrics.enabled=true \
23+
--set-string controller.podAnnotations."prometheus\.io/scrape"="true" \
24+
--set-string controller.podAnnotations."prometheus\.io/port"="10254"
25+
26+
```
27+
28+
## kong
29+
30+
```shell
31+
32+
helm upgrade --install kong kong \
33+
--repo https://charts.konghq.com \
34+
--namespace example-kubernetes --create-namespace \
35+
--set ingressController.installCRDs=false \
36+
--set proxy.type=ClusterIP \
37+
--set proxy.ingress.enabled=true \
38+
--set proxy.ingress.hostname=kong.example-kubernetes.com
39+
40+
```
41+
42+
## minio
43+
44+
```shell
45+
helm upgrade --install minio minio \
46+
--repo https://charts.min.io \
47+
--namespace example-kubernetes --create-namespace \
48+
--set rootUser=root,rootPassword=123456
49+
```
50+
51+
## postgresql
52+
53+
```shell
54+
helm upgrade --install postgresql postgresql \
55+
--repo https://charts.bitnami.com/bitnami \
56+
--namespace example-kubernetes --create-namespace \
57+
--set global.postgresql.postgresqlPassword=123456
58+
```
59+
60+
61+
## prometheus
62+
63+
```shell
64+
helm upgrade --install prometheus prometheus \
65+
--repo https://prometheus-community.github.io/helm-charts \
66+
--namespace example-kubernetes --create-namespace \
67+
--set server.ingress.enabled=true \
68+
--set server.ingress.hosts=prometheus.example-kubernetes.com
69+
```
70+
71+
72+

0 commit comments

Comments
 (0)
Please sign in to comment.