{"id":586,"date":"2020-11-25T16:25:48","date_gmt":"2020-11-25T08:25:48","guid":{"rendered":"http:\/\/www.luyouli.com\/?p=586"},"modified":"2020-11-25T16:27:43","modified_gmt":"2020-11-25T08:27:43","slug":"%e5%9c%a8kubernetes%e4%b8%8a%e9%83%a8%e7%bd%b2jumpserver","status":"publish","type":"post","link":"https:\/\/www.luyouli.com\/?p=586","title":{"rendered":"\u5728kubernetes\u4e0a\u90e8\u7f72jumpserver"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">mysql\u548credis\u90fd\u90e8\u7f72\u5728kubernetes\uff0c\u8fd9\u91cc\u5c31\u4e0d\u8fc7\u591a\u8d58\u8ff0\u4e86<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u670d\u52a1\u5668\u4e0a\u751f\u6210SECRET_KEY\u548cBOOTSTRAP_TOKEN\u5e76\u5199\u5165\u914d\u7f6e\u6587\u4ef6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$ SECRET_KEY=<code>cat \/dev\/urandom | tr -dc A-Za-z0-9 | head -c 50<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$ echo &#8220;SECRET_KEY=$SECRET_KEY&#8221; &gt;&gt; ~\/.bashrc<\/p>\n\n\n<p><!--more--><\/p>\n\n\n<p class=\"wp-block-paragraph\">$ BOOTSTRAP_TOKEN=<code>cat \/dev\/urandom | tr -dc A-Za-z0-9 | head -c 16<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$ echo &#8220;BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN&#8221; &gt;&gt; ~\/.bashrc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f55\u50cf\u8def\u5f84\uff1a\/home\/server\/data\/jumpserver-media<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$ vim <strong>jumpserver-pvc.yaml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: jumpserver-media-volume\n  labels:\n    type: local\nspec:\n  storageClassName: manual\n  capacity:\n    storage: 50Gi\n  accessModes:\n    - ReadWriteMany\n  hostPath:\n    path: \"\/home\/server\/data\/jumpserver-media\"\n\n---\n\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: jumpserver-media-claim\n  namespace: default\n  #annotations:\n    #volume.beta.kubernetes.io\/storage-class: \"nfs-storage\"\nspec:\n  storageClassName: manual\n  accessModes:\n  - ReadWriteMany\n  resources:\n    requests:\n      storage: 50Gi<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">$ vim <strong>jumpserver-svc.yaml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: v1\nkind: Service\nmetadata:\n  name: jumpserver\n  namespace: default\n  labels:\n          #app: jumpserver\n    app.kubernetes.io\/instance: jumpserver\n    app.kubernetes.io\/name: jumpserver\nspec:\n  type: NodePort\n  ports:\n  - name: http\n    port: 80\n    targetPort: 80\n    nodePort: 80\n    protocol: TCP\n  - name: ssh\n    port: 2222\n    targetPort: 2222\n    nodePort: 2222\n    protocol: TCP\n  selector:\n          #app: jumpserver\n    app.kubernetes.io\/instance: jumpserver\n    app.kubernetes.io\/name: jumpserver<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">$ vim <strong>jumpserver.yaml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: jumpserver\n  namespace: default\n  labels:\n    app.kubernetes.io\/instance: jumpserver\n    app.kubernetes.io\/name: jumpserver\nspec:\n    replicas: 1\n    strategy:\n      rollingUpdate:\n        maxSurge: 1\n        maxUnavailable: 0\n      type: RollingUpdate\n    selector:\n      matchLabels:\n        app.kubernetes.io\/instance: jumpserver\n        app.kubernetes.io\/name: jumpserver\n    template:\n      metadata:\n        labels:\n          app.kubernetes.io\/instance: jumpserver\n          app.kubernetes.io\/name: jumpserver\n      spec:\n        containers:\n        - env:\n          - name: SECRET_KEY\n            value: \"zyi0sBiTbCPKl65XLcONSSaxiuQpb6e6JD3RRNfyJuLbGwh9v6\"\n          - name: BOOTSTRAP_TOKEN\n            value: \"BEGjCbG7lH1wmSi9\"\n          - name: DB_HOST\n            value: \"mysql\"\n          - name: DB_PORT\n            value: \"3306\"\n          - name: DB_USER\n            value: \"jumpserver\"\n          - name: DB_PASSWORD\n            value: \"AAAaaa111\"          # \u6b64\u5904\u5fc5\u987b\u662f\u5927\u5c0f\u5199+\u6570\u5b57\n          - name: DB_NAME\n            value: \"jumpserver\"\n          - name: REDIS_HOST\n            value: \"redis\"\n          - name: REDIS_PORT\n            value: \"6379\"\n          - name: REDIS_PASSWORD\n            value: \"AAAaaa111\"\n          image: jumpserver\/jms_all:latest\n          imagePullPolicy: IfNotPresent\n          name: jumpserver\n          ports:\n          - containerPort: 80\n            name: http\n            protocol: TCP\n          - containerPort: 2222\n            name: ssh\n            protocol: TCP\n          volumeMounts:\n          - name: jumpserver-media\n            mountPath: \/opt\/jumpserver\/data\/media\/\n        volumes:\n        - name: jumpserver-media\n          persistentVolumeClaim:\n            claimName: jumpserver-media-claim<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efapvc\u548csvc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$ sudo kubectl apply -f jumpserver-pvc.yaml -f jumpserver-svc.yaml<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8jumpserver<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$ sudo kubectl apply -f jumpserver.yaml<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"663\" height=\"73\" src=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2020\/11\/image.png\" alt=\"\" class=\"wp-image-587\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u5c31OK\u4e86\uff0c\u5982\u679c\u6709\u95ee\u9898\u5c31\u770b\u65e5\u5fd7\u5904\u7406<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">github\u4ee3\u7801\u5730\u5740\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/luyouli\/kubernetes_jumpserver\">https:\/\/github.com\/luyouli\/kubernetes_jumpserver<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>mysql\u548credis\u90fd\u90e8\u7f72\u5728kubernetes\uff0c\u8fd9\u91cc\u5c31\u4e0d\u8fc7\u591a\u8d58\u8ff0\u4e86 \u5728\u670d\u52a1\u5668\u4e0a\u751f\u6210SECRET_KEY\u548cB [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-586","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"views":6157,"_links":{"self":[{"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/posts\/586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=586"}],"version-history":[{"count":2,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/posts\/586\/revisions"}],"predecessor-version":[{"id":589,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/posts\/586\/revisions\/589"}],"wp:attachment":[{"href":"https:\/\/www.luyouli.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}