Category: DevOps
SonarQube
공식 홈페이지 https://www.sonarsource.com/products/sonarqube/ SonarQube SonarQube는 코드 품질 관리 도구로, 개발자들이 작성한 소스 코드의 품질을 측정하고 향상시키는 데 사용됩니다. SonarQube는 정적 코드 분석(Static Code Analysis)을 수행하여 코드 품질을 측정하며, 다양한 측면에서 코드 품질을 분석합니다. 예를 들어, 코드의 복잡성, 중복, 버그 및 취약점, 코드 커버리지 등을 측정하여 개발자들이 더 나은 코드를 작성할 수 있도록 돕습니다. SonarQube는 다양한 프로그래밍 언어 및 프레임워크를 지원하며, 대규모 프로젝트에서도 충분히 사용될 수 있는 안정적이고 확장 가능한 도구입니다. 또한 SonarQube는 CI/CD 파이프라인에 통합하여 자동화된 코드 검사 및 품질 향상을 가능하게 합니다. SonarQube는 오픈소스 라이선스를 가지고 있으며, 개발자들은 무료로 사용할 수 있습니다. 또한 상용 버전인 SonarQube Enterprise도 제공되며, 기업에서는 추가적인 기능 및 지원을 제공받을 수 있습니다. SonarQube 설치brew install sonarbrew install sonar-scanner
Gitea Storage 로 S3 사용하기
목차 Gitea Storage 로 S3 사용하기 Gitea 를 Maven Repository 로 사용하기 Helm 을 이용해 Gitea 설치하기 참고 https://docs.gitea.io/en-us/config-cheat-sheet/#issue-and-pull-request-attachments-attachment Storage 변경 작업 EBS -> S3gitea: ## @param gitea.config Configuration for the Gitea server,ref: [config-cheat-sheet](https://docs.gitea.io/en-us/config-cheat-sheet/) config: storage: STORAGE_TYPE: minio MINIO_ENDPOINT: s3.ap-northeast-2.amazonaws.com MINIO_ACCESS_KEY_ID: <S3 Access Key> MINIO_SECRET_ACCESS_KEY: <S3 Secret Key> MINIO_BUCKET: <S3 Bucket 이름> MINIO_LOCATION: <S3 위치> MINIO_USE_SSL: true MINIO_INSECURE_SKIP_VERIFY: false
Maven - Settings.xml
참고 Maven 공시 Document https://maven.apache.org/settings.html Settings.xmlSettings.xml 은 Pom.xml 과 같이 Maven 실행에 있어 필요한 요소들을 정의하는 파일이다. 다만 Pom.xml 과 달리 Local Repository 의 위치 Remote Repository 의 위치 혹은 인증 정보와 같은 민감한 정보를 갖고 있기 때문에 프로젝트의 번들로서 제공되거나 배포되서는 안된다. Settings.xml 구성 요소<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository/> <interactiveMode/> <offline/> <pluginGroups/> <servers/> <mirrors/> <proxies/> <profiles/> <activeProfiles/></settings> localRepositoryinteractiveMode
Helm 을 이용한 Jenkins 설치 - Kubernetes
목차 Helm 을 이용한 Jenkins 설치 - 04. Jenkinsfile 작성 Helm 을 이용한 Jenkins 설치 - 03. Gitea 와 연동하기 Helm 을 이용한 Jenkins 설치 - 02. Agent 추가 Helm 을 이용한 Jenkins 설치 - 01. 설치 Jenkins 란Erorr : You must be logged in to the server (Unauthorized)참고 https://artifacthub.io/packages/helm/jenkinsci/jenkins 1. Repository 추가helm repo add jenkins https://charts.jenkins.io 2. value.yaml 준비
Gitea 를 Maven Repository 로 사용하기
목차 Gitea Storage 로 S3 사용하기 Gitea 를 Maven Repository 로 사용하기 Helm 을 이용해 Gitea 설치하기 Gitea Maven Repository 로 사용하기참고 https://docs.gitea.io/en-us/packages/maven/ 일괄로 Dependency 올리는 코드Library 를 S3 로 변경할 경우 아래 스크립트로 Upload 시 명확하게 인식이 안돼서 Storage 타입에 따라 사용하도록 하자 #!/bin/bashfiles="./files.out"giteaurl="https://gitea.mbcp.co.kr/api/packages/vitality/maven/"token="d00b1001f5cfaf91c6143730f2fec34d13e16d2a"find . -name '*.*' -type f | cut -c 3- | grep "/" >$fileswhile read i; do echo "upload $i to $giteaurl" curl -v -H "Authorization: Bearer $token" --upload-file $i "$giteaurl$i"done <$files settings.xml 설정
Helm 을 이용해 Gitea 설치하기
목차 Gitea Storage 로 S3 사용하기 Gitea 를 Maven Repository 로 사용하기 Helm 을 이용해 Gitea 설치하기 Gitea 란? 오픈 소스 기반의 자체 호스팅 Git 서비스 1. Helm Repository 추가# Repository 추가helm repo add gitea https://dl.gitea.io/charts/# Repository Updatehelm repo update 2. Gitea value.yaml 생성 및 수정 참고 https://docs.gitea.io/en-us/config-cheat-sheet/ gitea 를 아무 설정 없이 설치하게 되면 다음과 같이 ROOT_URL 과 접근 URL 이 다르다는 경고를 보여준다.
Helm 을 이용해 AgroCD 설치하기
참고 https://argo-cd.readthedocs.io/en/stable/ Argo CLI 설치하기brew install argocd Argo CLI 접속argocd login <argo server 가 설치된 URL> --username <username> --password <password> 비밀번호 변경argocd account update-password Kubernetes Cluster 추가
Helm 을 이용해 Nexus 설치하기
참고1. Helm Repository 추가helm repo add sonatype https://sonatype.github.io/helm3-charts/ 2. Nexus InstallapiVersion: storage.k8s.io/v1kind: StorageClass metadata: name: <storage class 이름> namespace: <namespace 명>volumeBindingMode: Immediateprovisioner: ebs.csi.aws.comparameters: type: gp3reclaimPolicy: RetainallowVolumeExpansion: true# reclaimPolicy: Delete values.yamlStorageClass 정보 추가 ...persistence: enabled: true accessMode: ReadWriteOnce existingClaim: # annotations: # "helm.sh/resource-policy": keep storageClass: "nexus-ebs" storageSize: 20Gi # If PersistentDisk already exists you can create a PV for it by including the 2 following keypairs. # pdName: nexus-data-disk # fsType: ext4tolerations: []
AgroCD
공식 홈페이지 https://argo-cd.readthedocs.io/en/stable/ ArgoCD 란?Argo CD는 Kubernetes 및 OpenShift를위한 선도적 인 CI / CD 도구 중 하나입니다. Argo CD는 GitOps를 구현하는 데 사용됩니다. GitOps는 클러스터 구성 및 애플리케이션 배포를 관리하기 위해 Git의 Git 저장소를 단일 소스 진실로 사용하는 접근 방식입니다. Argo CD는 GitOps를 사용하여 애플리케이션 배포 및 런타임 환경을 지속적으로 동기화합니다. Git 저장소의 설정 파일은 Kubernetes 클러스터에있는 애플리케이션을 제어하는 데 사용됩니다. Argo CD는 Kubernetes YAML 파일에서 파싱 된 리소스를 사용하여 배포 및 롤백을 제어합니다. Argo CD는 새로운 애플리케이션 버전을 배포하거나 더 이상 필요하지 않은 버전을 삭제하는 등의 작업을 수행합니다. 또한 미리 정의된 특정 행동 및 이벤트가 발생 할 때 자동으로 배포를 트리거 할 수있는 훅을 제공합니다. Argo CD는 쉽게 설정하고 사용할 수 있으며, CLI와 UI 모두를 통해 사용자 친화적 인 방법으로 애플리케이션의 배포를 제어할 수 있습니다. 따라서 Argo CD는 Kubernetes 및 OpenShift에서 애플리케이션 배포를 단순화하고 자동화하는 강력한 도구입니다.
Helm 을 이용한 Jenkins 설치 - 04. Jenkinsfile 작성
목차 Helm 을 이용한 Jenkins 설치 - 04. Jenkinsfile 작성 Helm 을 이용한 Jenkins 설치 - 03. Gitea 와 연동하기 Helm 을 이용한 Jenkins 설치 - 02. Agent 추가 Helm 을 이용한 Jenkins 설치 - 01. 설치 Jenkins 란참고 https://www.jenkins.io/doc/pipeline/steps/docker-workflow/ https://tech.osci.kr/2020/01/21/kubernetes%EC%83%81%EC%9D%98-jenkins-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EC%9E%91%EC%84%B1%EB%B0%A9%EB%B2%95/ https://www.codurance.com/publications/2019/05/30/accessing-and-dumping-jenkins-credentials https://www.jenkins.io/doc/pipeline/steps/credentials-binding/ https://www.jenkins.io/doc/pipeline/steps/pipeline-aws/ https://awstip.com/deploying-a-spring-boot-application-on-aws-eks-using-jenkins-cicd-a-step-by-step-guide-8e684f488ffc Erorr : You must be logged in to the server (Unauthorized) https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-api-server-unauthorized-error/ Evn Variable https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables Agent 추가additionalAgents: maven: podName: maven customJenkinsLabels: maven image: jenkins/jnlp-agent-maven tag: jdk11 node: podName: node customJenkinsLabels: maven image: jenkins/jnlp-agent-node tag: latest
Helm 을 이용한 Jenkins 설치 - 03. Gitea 와 연동하기
목차 Helm 을 이용한 Jenkins 설치 - 04. Jenkinsfile 작성 Helm 을 이용한 Jenkins 설치 - 03. Gitea 와 연동하기 Helm 을 이용한 Jenkins 설치 - 02. Agent 추가 Helm 을 이용한 Jenkins 설치 - 01. 설치 Jenkins 란Erorr : You must be logged in to the server (Unauthorized)참고 https://code00.tistory.com/123 https://hub.docker.com/r/jenkins/inbound-agent https://github.com/jforge/docker-jenkins-inbound-agent https://www.jenkins.io/doc/pipeline/steps/docker-workflow/ https://tech.osci.kr/2020/01/21/kubernetes%EC%83%81%EC%9D%98-jenkins-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EC%9E%91%EC%84%B1%EB%B0%A9%EB%B2%95/ https://www.codurance.com/publications/2019/05/30/accessing-and-dumping-jenkins-credentials https://www.jenkins.io/doc/pipeline/steps/credentials-binding/ https://www.jenkins.io/doc/pipeline/steps/pipeline-aws/ https://awstip.com/deploying-a-spring-boot-application-on-aws-eks-using-jenkins-cicd-a-step-by-step-guide-8e684f488ffc Erorr : You must be logged in to the server (Unauthorized) https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-api-server-unauthorized-error/ Timezone 변경controller: javaOpts: "-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Seoul"