kubernetes中Gitops實踐

涉及到的程序:kubernetes,kubersphere,argocd,gitlab,harbor
kubersphere安裝詳見官網(wǎng)
https://kubesphere.io/zh/
kubersphere默認沒有開啟devops词爬,需要修改cluster-configuration.yaml

圖片.png

argocd兩種安裝方式
通過yaml直接執(zhí)行

wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl create namespace argocd
kuberctl apply -f install.yaml

通過helm

helm repo add argo https://argoproj.github.io/argo-helm
helm install argocd --namespace=argocd --create-namespace  --set server.service.type=NodePort argo/argo-cd

修改argocd-server為nodeport济蝉,或者使用ingress

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
圖片.png

圖片.png

訪問地址
http://192.168.4.149:32346
默認用戶名admin甜刻,默認密碼 argocd-server的pod名字浩村。如果提示密碼無效拴曲,通過以下方法重置密碼為password

kubectl -n argocd patch secret argocd-secret -p '{"stringData": {"admin.password": "$2a$10$rRyBsGSHK6.uc8fntPwVIuLVHgsAhAX7TcdrqW/RADU0uh7CaChLa","admin.passwordMtime": "'$(date +%FT%T%Z)'"}}'

準備gitlab倉庫缺谴,創(chuàng)建兩個倉庫窗骑,一個放代碼女责,一個放yaml


圖片.png

配置webhook,進入yaml倉庫,安全令牌隨意


圖片.png

修改argocd-secret
kubectl edit secret argocd-secret -n argocd
圖片.png

創(chuàng)建應用


圖片.png
project: default
source:
  repoURL: 'http://192.168.4.149:8090/root/argocd-yaml.git'
  path: ./
  targetRevision: HEAD
destination:
  server: 'https://kubernetes.default.svc'
  namespace: apps
syncPolicy:
  automated:
    prune: true
    selfHeal: true
  syncOptions:
    - Validate=false
    - CreateNamespace=true
  retry:
    limit: 3
    backoff:
      duration: 10s
      factor: 2
      maxDuration: 5m
圖片.png

在kubersphere中創(chuàng)建devops工程
新建一個devops企業(yè)空間创译,進入企業(yè)空間抵知,創(chuàng)建工程


圖片.png

然后創(chuàng)建流水線


圖片.png

圖片.png

添加憑證(一個gitlab,一個harbor)
圖片.png

編輯流水線
圖片.png

圖片.png
pipeline {

    environment {
        GIT_URL='http://192.168.4.149:8090/root/argocd-java.git'
        GIT_CREDENTIAL_ID = 'gitlab'
        GIT_BRANCH = 'master'
        REGISTRY = 'docker.plantdata.cn/app/argocd'
        REGISTRY_CREDENTIAL_ID = 'harbor'
    }

    agent {
        node {
            label 'maven'
        }
    }

    stages {

        stage('SCM Checkout') {
            steps {
                git branch: "${GIT_BRANCH}", credentialsId: "${GIT_CREDENTIAL_ID}", url: "${GIT_URL}"
            }
        }

        stage('source build') {
            steps {
                container('maven') {
                    sh 'mvn clean package'

                }
            }
        }

        stage('docker build & push') {
            steps {
                script {
                    env.COMMIT_ID = sh(returnStdout: true, script: "git log -n 1 --pretty=format:'%h'").trim()
                    env.TIMESTRAP = sh(returnStdout: true, script: 'date +%Y%m%d%H%M%S').trim()
                    env.DOCKER_TAG = "dev_${TIMESTRAP}_${COMMIT_ID}_${BUILD_NUMBER}"
                }
                container('maven') {
                    withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$REGISTRY_CREDENTIAL_ID" ,)]) {
                        sh 'ls -l'
                        sh 'docker build -t $REGISTRY:$DOCKER_TAG .'
                        sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
                        sh 'docker push $REGISTRY:$DOCKER_TAG'
                    }
                }
            }
        }

        stage('update docker tag') {
            environment {
                BUILD_USER = 'admin'
                BUILD_USER_EMAIL = 'admin@argocd.com'
                YAML_REPO_URL='http://${username}:${password}@192.168.4.149:8090/root/argocd-yaml.git'
            }

            steps {
                withCredentials([usernamePassword(passwordVariable : 'password' ,usernameVariable : 'username' ,credentialsId : "$GIT_CREDENTIAL_ID" ,)]) {
                    sh """
                        git config --global user.name "$BUILD_USER"
                        git config --global user.email "$BUILD_USER_EMAIL"
                        git clone ${YAML_REPO_URL} && cd argocd-yaml
                        sed -i "s#$REGISTRY.*#${REGISTRY}:${DOCKER_TAG}#g" ./deployment.yaml
                        git add -A && git commit -m "update tag: ${DOCKER_TAG}" && git push ${YAML_REPO_URL}
                    """
                }
            }
        }
    }
}
圖片.png

點擊運行


圖片.png

圖片.png

查看argocd,已經(jīng)觸發(fā)同步并部署了


圖片.png

圖片.png

圖片.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子刷喜,更是在濱河造成了極大的恐慌残制,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吱肌,死亡現(xiàn)場離奇詭異痘拆,居然都是意外死亡,警方通過查閱死者的電腦和手機氮墨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門纺蛆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人规揪,你說我怎么就攤上這事桥氏。” “怎么了猛铅?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵字支,是天一觀的道長。 經(jīng)常有香客問我奸忽,道長堕伪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任栗菜,我火速辦了婚禮欠雌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疙筹。我一直安慰自己富俄,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布而咆。 她就那樣靜靜地躺著霍比,像睡著了一般。 火紅的嫁衣襯著肌膚如雪暴备。 梳的紋絲不亂的頭發(fā)上悠瞬,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音涯捻,去河邊找鬼阁危。 笑死,一個胖子當著我的面吹牛汰瘫,可吹牛的內(nèi)容都是我干的狂打。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼混弥,長吁一口氣:“原來是場噩夢啊……” “哼趴乡!你這毒婦竟也來了对省?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤晾捏,失蹤者是張志新(化名)和其女友劉穎蒿涎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惦辛,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡劳秋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胖齐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玻淑。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖呀伙,靈堂內(nèi)的尸體忽然破棺而出补履,到底是詐尸還是另有隱情,我是刑警寧澤剿另,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布箫锤,位于F島的核電站,受9級特大地震影響雨女,放射性物質(zhì)發(fā)生泄漏谚攒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一氛堕、第九天 我趴在偏房一處隱蔽的房頂上張望馏臭。 院中可真熱鬧,春花似錦岔擂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至七冲,卻和暖如春痛倚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背澜躺。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工蝉稳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掘鄙。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓耘戚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親操漠。 傳聞我的和親對象是個殘疾皇子收津,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容