k8s实战部署一个应用

188 阅读1分钟
  1. 在项目根目录新建 Dockerfile 文件,添加以下配置
FROM harbor.indata.cc/XX/XX-node:latest

WORKDIR /data

COPY index.js /data

// 端口
EXPOSE 3000

// 配置命令
CMD ["pm2-docker", "start", "index.js"]
  • docker build -t 【镜像名】.
  1. 打包平台KUBESPHERE配置,编辑 Jenkinsfile
pipeline {
  agent {
    node {
      label 'nodejs'
    }

  }
  stages {
    stage('拉取分支代码') {
      when {
        environment name: 'API_ENV', value: 'dev'
      }
      steps {
        git(url: '${REGISTRY}', credentialsId: 'gitlab-id', branch: 'dali', changelog: true, poll: false)
      }
    }
    stage('构建并推送镜像') {
      steps {
        container('nodejs') {
          sh 'docker build -f Dockerfile -t harbor.indata.cc/XX/${APP_NAME}:${BUILD_TAG} .'
          withCredentials([usernamePassword(credentialsId : 'harbor-id' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
            
            sh 'echo "${DOCKER_PASSWORD}" | docker login harbor.indata.cc -u "${DOCKER_USERNAME}" --password-stdin'
            sh 'docker push harbor.indata.cc/XX/${APP_NAME}:${BUILD_TAG}'

          }

        }

      }
    }
    stage('部署至开发环境') {
      when {
        environment name: 'API_ENV', value: 'dev'
      }
      steps {
        git(credentialsId: 'gitlab-id', url: 'https://gitlab.indata.cc/sa/deploy.git', branch: 'master', changelog: true, poll: false)
        kubernetesDeploy(enableConfigSubstitution: true, deleteResource: false, kubeconfigId: 'kubeconfig', configs: 'dev/dev-nodejs.yaml')
      }
    }
  }
  parameters {
    choice(name: 'API_ENV', choices: ['dev'], description: '部署环境')
    string(name: 'BRANCH', defaultValue: 'dali', description: '部署分支')
    string(name: 'APP_NAME', defaultValue: 'dali', description: '服务名称')
    string(name: 'PORT', defaultValue: '3000', description: '服务端口')
    string(name: 'REGISTRY', defaultValue: 'XXXX.git', description: 'git仓库地址')
  }
}
  • BRANCH 和gitlab对应分支名保持一致

  • PORT 和 Dockerfile 文件内设置的保持一致

  • REGISTRY 填写正确的git仓库地址

  • 第一个stage steps注意分支名称

  • 第二个stage 注意docker命令构建镜像

  1. 打包平台KUBESPHERE运行成功后,查看rancher上是否构建出新容器

  2. 配置nginx

  • 可以通过cp复制一个新的.conf文件

ls
cd
ls
 cp XXXXX newXXX
  • 修改新的.conf文件, 修改server {}内server_name及对应端口(与Dockerfile,Jenkinsfile保持一致),第一个server{}内server_name配置想要配置的域名,第二个server{}内server_name对应rancher内容器名
vi newXXX
server {
    listen       443 ssl;
    server_name  XXXXXXX;


    location / {
        proxy_pass http://XXXXXX;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP    $remote_addr;
        proxy_set_header REMOTE-HOST    $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
    }
}

server {
    listen       配置的端口号;
    server_name  rancher名称;
    rewrite ^(.*) XXXXXXX;
}
  • 检查重新加载nginx,查看是否配置成功
sh check-nginx
sh reload-nginx
  • 都成功后,配置host(nginx的IP对应配置的域名),访问域名就可以成功看到代码中的内容了