在kubernetes上部署jumpserver

mysql和redis都部署在kubernetes,这里就不过多赘述了

在服务器上生成SECRET_KEY和BOOTSTRAP_TOKEN并写入配置文件

$ SECRET_KEY=cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50

$ echo “SECRET_KEY=$SECRET_KEY” >> ~/.bashrc

$ BOOTSTRAP_TOKEN=cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16

$ echo “BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN” >> ~/.bashrc

录像路径:/home/server/data/jumpserver-media

$ vim jumpserver-pvc.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: jumpserver-media-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/home/server/data/jumpserver-media"

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jumpserver-media-claim
  namespace: default
  #annotations:
    #volume.beta.kubernetes.io/storage-class: "nfs-storage"
spec:
  storageClassName: manual
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 50Gi

$ vim jumpserver-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: jumpserver
  namespace: default
  labels:
          #app: jumpserver
    app.kubernetes.io/instance: jumpserver
    app.kubernetes.io/name: jumpserver
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    targetPort: 80
    nodePort: 80
    protocol: TCP
  - name: ssh
    port: 2222
    targetPort: 2222
    nodePort: 2222
    protocol: TCP
  selector:
          #app: jumpserver
    app.kubernetes.io/instance: jumpserver
    app.kubernetes.io/name: jumpserver

$ vim jumpserver.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jumpserver
  namespace: default
  labels:
    app.kubernetes.io/instance: jumpserver
    app.kubernetes.io/name: jumpserver
spec:
    replicas: 1
    strategy:
      rollingUpdate:
        maxSurge: 1
        maxUnavailable: 0
      type: RollingUpdate
    selector:
      matchLabels:
        app.kubernetes.io/instance: jumpserver
        app.kubernetes.io/name: jumpserver
    template:
      metadata:
        labels:
          app.kubernetes.io/instance: jumpserver
          app.kubernetes.io/name: jumpserver
      spec:
        containers:
        - env:
          - name: SECRET_KEY
            value: "zyi0sBiTbCPKl65XLcONSSaxiuQpb6e6JD3RRNfyJuLbGwh9v6"
          - name: BOOTSTRAP_TOKEN
            value: "BEGjCbG7lH1wmSi9"
          - name: DB_HOST
            value: "mysql"
          - name: DB_PORT
            value: "3306"
          - name: DB_USER
            value: "jumpserver"
          - name: DB_PASSWORD
            value: "AAAaaa111"          # 此处必须是大小写+数字
          - name: DB_NAME
            value: "jumpserver"
          - name: REDIS_HOST
            value: "redis"
          - name: REDIS_PORT
            value: "6379"
          - name: REDIS_PASSWORD
            value: "AAAaaa111"
          image: jumpserver/jms_all:latest
          imagePullPolicy: IfNotPresent
          name: jumpserver
          ports:
          - containerPort: 80
            name: http
            protocol: TCP
          - containerPort: 2222
            name: ssh
            protocol: TCP
          volumeMounts:
          - name: jumpserver-media
            mountPath: /opt/jumpserver/data/media/
        volumes:
        - name: jumpserver-media
          persistentVolumeClaim:
            claimName: jumpserver-media-claim

创建pvc和svc

$ sudo kubectl apply -f jumpserver-pvc.yaml -f jumpserver-svc.yaml

启动jumpserver

$ sudo kubectl apply -f jumpserver.yaml

这样就OK了,如果有问题就看日志处理

github代码地址如下:

https://github.com/luyouli/kubernetes_jumpserver

3 评论

留下评论

error: Content is protected !!