kubernetes v1.15.0部署jumpserver


創建pv/pvc
這里是通過nfs的StorageClass創建的pvc,它會自動創建pv,考慮到可能需要多個pod進行負載均衡,所以pv/pvc的訪問類型是RWX

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jumpserver-media
  namespace: jumpserver
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 50Gi
  storageClassName: sas-nfs-storage

創建deployment
deployment.yaml配置文件如下

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: jumpserver
  name: jumpserver
  namespace: jumpserver
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jumpserver
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: jumpserver
    spec:
      containers:
      - env:
        - name: SECRET_KEY #生成方式: cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50
          value: xdl5RafDHgc7xxxxxxxxxxxxxxDfBmdWCQhSh8mwKzjkX
        - name: BOOTSTRAP_TOKEN #生成方式: cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16
          value: njNxxxxKxxx
        - name: DB_HOST  #MySQL地址
          value: 192.168.10.20
        - name: DB_PORT  #mysql端口
          value: "3306"
        - name: DB_USER  #MySQL用戶
          value: jumpserver
        - name: DB_PASSWORD #MySQL密碼
          value: abc3306
        - name: DB_NAME #mysql數據庫 數據庫編碼要求 uft8 創建語句:  create database jumpserver default charset 'utf8';
          value: jumpserver
        - name: REDIS_HOST #redis 地址
          value: 192.168.10.20
        - name: REDIS_PORT # redis 端口
          value: "6379"
        - name: REDIS_PASSWORD # redis密碼。如果沒有,可以不寫
          value: "abc6379"
        image: jumpserver/jms_all:1.4.9 #鏡像地址
        imagePullPolicy: IfNotPresent
        name: jumpserver
        ports:
        - containerPort: 2222 #用於ssh client端訪問
          protocol: TCP
        - containerPort: 80 #用於web端訪問
          protocol: TCP
#       resources: {}
        resources:
          requests:
            memory: "4096Mi"
            cpu: "2000m"
          limits:
            memory: "4096Mi"
            cpu: "2000m"
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts: #保存錄像
        - mountPath: /opt/jumpserver/data/media
          name: jumpserver-media
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      volumes:
      - name: jumpserver-media
        persistentVolumeClaim:
          claimName: jumpserver-media

jumpserver-web-svc.yaml配置文件如下提供web端對外訪問服務

apiVersion: v1
kind: Service
metadata:
  labels:
    app: jumpserver
  name: jumpserver
  namespace: jumpserver
spec:
  ports:
  - name: http
    nodePort: 30888
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: jumpserver
  sessionAffinity: ClientIP
  type: NodePort

jumpserver-ssh-svc.yaml.yaml提供終端ssh對外訪問服務

apiVersion: v1
kind: Service
metadata:
  labels:
    app: jumpserver
  name: jumpserver-ssh
  namespace: jumpserver
spec:
  externalTrafficPolicy: Cluster
  ports:
  - name: ssh
    nodePort: 32000
    port: 2222
    protocol: TCP
    targetPort: 2222
  selector:
    app: jumpserver
  sessionAffinity: None
  type: NodePort

創建ingress

為了方便記憶訪問端地址,減少主機port的占用,使用ingress的方式訪問網頁端:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: jumpserver
  namespace: jumpserver
spec:
  backend:
    serviceName: jumpserver
    servicePort: 80
  rules:
  - host: jumpserver.example.com
    http:
      paths:
      - backend:
          serviceName: jumpserver
          servicePort: 80

參考:https://www.jianshu.com/p/9a55221b3729


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM