Kubernetes部署JIRA-8.1.0

1. 准备

k8s-master192.168.0.136
k8s-node01192.168.0.57
k8s-node02192.168.0.227
nfs-server192.168.0.57
mysql192.168.0.227

2. 部署单机MySQL

  • 192.168.0.227 主机执行

编写安装脚本

[root@ecs-ebd0-0003 ~]# vim mysql.sh
#!/bin/bash

yum install libaio -y
mkdir -p /server/package /application /data/mysql/data /data/binlog/mysql-bin
cd /server/package && wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
mv /server/package/mysql-5.7.28-linux-glibc2.12-x86_64 /application/mysql
yum remove `rpm -qa | grep mariadb` -y
useradd -s /sbin/nologin mysql
echo -e "export PATH=/application/mysql/bin:$PATH" >> /etc/profile
chown -R mysql.mysql /application && chown -R mysql.mysql /data
/application/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data

cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
log_error=/data/mysql/data/mysql.err
log_bin=/data/binlog/mysql-bin
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF

cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
EOF

systemctl start mysqld
systemctl enable mysqld

执行脚本

[root@ecs-ebd0-0003 ~]# sh mysql.sh
[root@ecs-ebd0-0003 ~]# sourch /etc/profile

创建jira数据库、用户以及授权

[root@ecs-ebd0-0003 ~]# mysql -uroot -p -e "create database jira default charset utf8mb4;" -e "create user 'jira'@'%' identified by 'jira@123';" -e "grant all on jira.* to 'jira'@'%';"

3.部署JIRA

3.1准备资源

  • Kubernetes Cluster

    • namespace

      [root@ecs-ebd0-0001 ~]# kubectl create ns test
      
    • StorageClass

      [root@ecs-ebd0-0001 ~]# kubectl get sc
      NAME                  PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
      managed-nfs-storage   fuseim.pri/ifs   Delete          Immediate           false                  53h
      
  • 镜像

    已准备镜像包:jira-8.1.0.tar.gz
    镜像为 cptactionhank/atlassian-jira-software:8.1.0
    (若有harbor,则可将镜像打包后上传至私有镜像仓库)

    # 将镜像包上传并还原镜像
    [root@ecs-ebd0-0001 ~]# docker load -i jira-8.1.0.tar.gz
    
  • k8s 资源清单

    • 注意namespace的修改,本次以test为例
    [root@ecs-ebd0-0001 ~]# vim jira.yaml
    
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: jira
      name: jira
      namespace: test
    spec:
      ports:
      - port: 8080
        targetPort: 8080
      selector:
        app: jira
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: jira-headless
      namespace: test
      labels:
        app: jira
    spec:
      ports:
      - port: 8080
        name: jira-server
      clusterIP: None
      selector:
        app: jira
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      labels:
        app: jira
      name: jira
      namespace: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: jira
      serviceName: jira-headless
      template:
        metadata:
          labels:
            app: jira
          name: jira
        spec:
          nodeSelector:
            app: jira
          containers:
          - name: jira
            image: cptactionhank/atlassian-jira-software:8.1.0
            resources:
              requests:
                memory: "2Gi"
                cpu: "2000m"
              limits:
                memory: "4Gi"
                cpu: "4000m"
            volumeMounts:
            - name: jira-home
              mountPath: /var/atlassian/jira
      volumeClaimTemplates:
      - metadata:
          name: jira-home
        spec:
          accessModes: [ "ReadWriteMany" ]
          storageClassName: managed-nfs-storage
          resources:
            requests:
              storage: 10Gi
    ---
    apiVersion: traefik.containo.us/v1alpha1
    kind: IngressRoute
    metadata:
      name: jira
      namespace: test
    spec:
      entryPoints:
        - web
      routes:
      - match: Host(`jira.test.com`) && PathPrefix(`/`)
        kind: Rule
        services:
        - name: jira
          port: 8080
    

3.2创建 k8s 资源

[root@ecs-ebd0-0001 ~]# kubectl apply -f jira.yaml
service/jira created
service/jira-headless created
statefulset.apps/jira created
ingressroute.traefik.containo.us/jira configured

3.3Web 登陆及基本信息配置

  • 由于本次实验未做公网DNS解析,所以需要windows本地配置hosts解析才能进行域名访问

浏览器访问

​ http://jira.test.com

在这里插入图片描述
配置数据库连接
在这里插入图片描述
在这里插入图片描述

  • 若想破解实现长期使用,可按照后续发布的破解文章进行操作,然后再继续执行以下步骤
  • 破解万不可进行商用,建议自己测试使用

配置 license
在这里插入图片描述
在这里插入图片描述
点击 “yes” ,会自动将密钥信息添加至密钥框中
在这里插入图片描述
在这里插入图片描述

设置管理员账户及密码
在这里插入图片描述

在这里插入图片描述

选择后续登陆JIRA默认使用的语言
在这里插入图片描述
选择头像
在这里插入图片描述
创建一个新项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

至此,基本信息配置完成
后续会发布如何对JIRA进行破解操作

备注:由于每次启动jira都需要连接一个完全空的数据库,因此一旦pod重启,会导致pod重启失败。因此,不建议在k8s中运行,建议二进制或docker部署

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐