精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

自動化測試在 Kubernetes Operator 開發(fā)中的應(yīng)用

開發(fā) 前端
最后不得不感嘆作為 CNCF 下面的項(xiàng)目 OpenTelemetry 的開發(fā)者體驗(yàn)真好,只要我們跟著貢獻(xiàn)者文檔一步步操作都能順利通過 CI 測試,同時還能避免一些 Code Review 過程中的低級錯誤。

背景

最近在給 opentelemetry-operator提交一個標(biāo)簽選擇器的功能時,因?yàn)楫?dāng)時修改的函數(shù)是私有的,無法添加單測函數(shù),所以社區(qū)建議我補(bǔ)充一個 e2e test.

因?yàn)樵诋?dāng)前的版本下,只要給 deployment 打上了 instrumentation.opentelemetry.io/inject-java: "true" 這類注解就會給該 deployment 注入 agent。但沒辦法指定不同的 agent 版本(或者不同的環(huán)境變量),所以希望可以新增一個選擇器,同時可以針對不同的 deployment 維護(hù)不同版本的 Instrumentation(是用于控制需要注入 deployment 的資源);這樣就可以靈活控制了。

圖片圖片

在這之前我其實(shí)也很少做 kubernetes 的 operator 開發(fā),對如何做 kubernetes 的 e2e 測試也比較陌生,好在社區(qū)提供了詳細(xì)的貢獻(xiàn)文檔。

圖片圖片

安裝

簡單來說需要兩個關(guān)鍵組件:

  • kind: kubernetes in docker,是可以在本地利用 docker 啟動一個 kubernetes 集群的工具,通常用于在本地進(jìn)行開發(fā)、測試關(guān)于 kubernetes 相關(guān)的功能。

安裝 kind 的前提是本地已經(jīng)安裝好了 docker。

  • chainsaw: 一個 e2e 測試框架,提供了聲明式的方式定義測試用例,也有著豐富斷言功能。

他們的安裝都很簡單,只要本地安裝好了 golang,直接使用 go install 即可:

go install sigs.k8s.io/kind@v0.22.0
go install github.com/kyverno/chainsaw@latest

kind 使用

在開始前還是先預(yù)習(xí)下 kind 的基本使用。

安裝好 kind 之后,使用 create cluster 命令可以在本地創(chuàng)建一個 kubernetes 集群。

kind create cluster -h
Creates a local Kubernetes cluster using Docker container 'nodes'

Usage:
  kind create cluster [flags]

圖片圖片

之后只需要等待集群安裝成功即可,它會在我們的 cat ~/.kube/config 文件中追加剛才新建集群的連接信息。

k config get-contexts
k config use-context xxx

這樣就可以使用這兩個命令來查看和切換不同的集群了,雖說是一個本地模擬的 kubernetes 集群,但他的核心功能和一個標(biāo)準(zhǔn)的集群沒有什么區(qū)別。

kind delete clusters --all

使用完成之后可以使用這個命令將所有集群都刪除掉。

準(zhǔn)備集群數(shù)據(jù)

在 opentelemetry-operator 中有給我們準(zhǔn)備好一個 make 命令: make prepare-e2e ;使用它會幫我們將 operator 的測試環(huán)境初始化好。

大概分為以下幾步:

  • 安裝 chainsaw
  • 修改 controller 的鏡像為我們本地構(gòu)建的鏡像名稱
  • 本地 docker 鏡像打包
  • 安裝 cert-manager
  • 安裝 Operator 需要的 CRD
  • 部署 Operator deployment
  • 等待 Operator 啟動成功

不過這里的安裝過程可能會遇到問題(本質(zhì)上都是我們的網(wǎng)絡(luò)問題):

圖片圖片

圖片圖片

這種情況可以想辦法(科學(xué)上網(wǎng))手動先把鏡像拉取到本地,然后 kubernetes 就會從本地倉庫獲取到這個鏡像。

e2e test

通常我們需要將同一類的測試功能放到一個文件夾里,比如這樣:

圖片圖片

默認(rèn)情況下 Chainsaw 會查找目錄下名為 chainsaw-test.yaml 作為引導(dǎo)文件。

apiVersion: chainsaw.kyverno.io/v1alpha1  
kind: Test  
metadata:  
  creationTimestamp: null  
  name: instrumentation-java  
spec:  
  steps:  
  - name: step-00  
    try:   
    - command:  
        entrypoint: kubectl  
        args:  
        - annotate  
        - namespace  
        - ${NAMESPACE}  
        - openshift.io/sa.scc.uid-range=1000/1000  
        - --overwrite  
    - command:  
        entrypoint: kubectl  
        args:  
        - annotate  
        - namespace  
        - ${NAMESPACE}  
        - openshift.io/sa.scc.supplemental-groups=3000/3000  
        - --overwrite  
    - apply:  
        file: 00-install-collector.yaml  
    - apply:  
        file: 00-install-instrumentation-select.yaml  
  - name: step-01  
    try:  
    - apply:  
        file: 01-install-app-select.yaml  
    - assert:  
        file: 01-assert*.yaml  
    catch:  
      - podLogs:  
          selector: app=my-java-select
tests/e2e-instrumentation/instrumentation-select
├── 00-install-collector.yaml
├── 00-install-instrumentation-select.yaml
├── 01-assert-select.yaml
├── 01-assert-without-select.yaml
├── 01-install-app-select.yaml
└── chainsaw-test.yaml

以我這里的這份文件為例,在其中定義了幾個步驟:

  • 初始化環(huán)境信息,包含創(chuàng)建 namespace
  • 安裝我們測試所需要的資源

00-install-collector.yaml:這里主要是安裝一個 OpenTelemetry 的 collector

00-install-instrumentation-select.yaml:安裝 Instrumentation 注入資源

01-install-app-select.yaml:應(yīng)用一個我們需要測試的 deployment 資源

01-assert*.yaml:最后對最終生成的 yaml 資源與 assert*.yaml 的進(jìn)行斷言匹配,只有匹配成功后才能測試成功。

這里的測試目的主要是完成一個完整的 Java 應(yīng)用的 deployment 注入 OpenTelemetry 的 agent 過程還有一些與 OpenTelemetry 相關(guān)的環(huán)境變量。

以 00-install-instrumentation-select.yaml 文件為例:

apiVersion: opentelemetry.io/v1alpha1  
kind: Instrumentation  
metadata:  
  name: java-select  
spec:  
  selector:  
    matchLabels:  
      app: my-java-select  
  env:  
    - name: OTEL_TRACES_EXPORTER  
      value: otlp  
    - name: OTEL_EXPORTER_OTLP_ENDPOINT  
      value: http://localhost:4317  
  exporter:  
    endpoint: http://localhost:4317  
  propagators:  
    - jaeger  
    - b3  
  sampler:  
    type: parentbased_traceidratio  
    argument: "0.25"  
  java:  
    env:  
    - name: OTEL_JAVAAGENT_DEBUG  
      value: "true"

它的預(yù)期效果是選擇 app: my-java-select 的 deployment 將這些環(huán)境變量都注入進(jìn)去,同時默認(rèn)也會在 deployment 的容器中掛載一個 javaagent.jar:

ls /otel-auto-instrumentation-java/
javaagent.jar

而我們的 01-assert-select.yaml:

apiVersion: v1  
kind: Pod  
metadata:  
  annotations:  
    instrumentation.opentelemetry.io/inject-java: "true"  
    sidecar.opentelemetry.io/inject: "true"  
  labels:  
    app: my-java-select  
spec:  
  containers:  
  - env:  
    - name: OTEL_JAVAAGENT_DEBUG  
      value: "true"  
    - name: JAVA_TOOL_OPTIONS  
      value: ' -javaagent:/otel-auto-instrumentation-java/javaagent.jar'  
    - name: OTEL_TRACES_EXPORTER  
      value: otlp  
    - name: OTEL_EXPORTER_OTLP_ENDPOINT  
      value: http://localhost:4317    
    - name: OTEL_TRACES_SAMPLER  
      value: parentbased_traceidratio  
    - name: OTEL_SERVICE_NAME  
      value: my-java-select   
    - name: OTEL_PROPAGATORS  
      value: jaeger,b3  
    - name: OTEL_RESOURCE_ATTRIBUTES  
    name: myapp  
  - args:  
    - --cnotallow=env:OTEL_CONFIG  
    name: otc-container  
  initContainers:  
  - name: opentelemetry-auto-instrumentation-java  
status:  
  containerStatuses:  
  - name: myapp  
    ready: true  
    started: true  
  initContainerStatuses:  
  - name: opentelemetry-auto-instrumentation-java  
    ready: true  
  phase: Running

最終就是把實(shí)際的 deployment 的 yaml 內(nèi)容和這份文件進(jìn)行對比。

所以這個 e2e 測試就有點(diǎn)類似于集成測試,不會測試具體的功能函數(shù),只需要最終結(jié)果能匹配就可以。

當(dāng)然這個和單元測試也是相輔相成的,缺一不可,不能完全只依賴 e2e 測試,也有可能是概率原因?qū)е伦罱K生成的資源相同;單元測試可以保證函數(shù)功能與預(yù)期相同。

都準(zhǔn)備好之后便可以進(jìn)行測試了,測試的時候也很簡單,只需要執(zhí)行以下命令即可:

chainsaw test --test-dir ./tests/e2e-multi-instrumentation

這樣它就會遍歷該目錄下的 chainsaw-test.yaml文件進(jìn)行測試,執(zhí)行我們上面定義的那些步驟,最終輸出測試結(jié)果:

同時 Chainsaw 也提供了 Github action,可以方便的讓我們和 github CI 進(jìn)行集成。

jobs:
  example:
    runs-on: ubuntu-latest

    permissions: {}

    name: Install Chainsaw
    steps:
      - name: Install Chainsaw
        uses: kyverno/action-install-chainsaw@v0.1.0
        with:
          release: v0.0.9
      - name: Check install
        run: chainsaw version

這樣我們就可以在 github 中查看我們的測試結(jié)果了:

總結(jié)

最后不得不感嘆作為 CNCF 下面的項(xiàng)目 OpenTelemetry 的開發(fā)者體驗(yàn)真好,只要我們跟著貢獻(xiàn)者文檔一步步操作都能順利通過 CI 測試,同時還能避免一些 Code Review 過程中的低級錯誤。

比如我第一次提 PR 的時候沒有添加 changlog 文件,后面在貢獻(xiàn)者手冊里發(fā)現(xiàn)只需要執(zhí)行 make chlog-new 就會基于當(dāng)前分支信息幫我們生成一個 changelog 文件模板,然后只需要往里面填寫內(nèi)容即可。

這些工具鏈讓不同開發(fā)者提交的代碼和流程都符合規(guī)范,同時也降低了貢獻(xiàn)難度。

以上所有的相關(guān)源碼都可以在 https://github.com/open-telemetry/opentelemetry-operator 中進(jìn)行查看。

參考鏈接:

責(zé)任編輯:武曉燕 來源: crossoverJie
相關(guān)推薦

2011-04-18 12:52:37

自動化測試功能測試軟件測試

2019-07-18 11:00:45

自動化運(yùn)維測試

2024-01-08 13:31:00

Rust自動化測試

2023-05-03 21:54:05

Kubernetes自動化診斷工具

2010-07-26 09:53:08

Perl多進(jìn)程

2010-09-08 15:25:09

自動化測試技術(shù)網(wǎng)站鏈接測試

2021-06-30 19:48:21

前端自動化測試Vue 應(yīng)用

2010-07-14 11:14:48

Perl多進(jìn)程

2021-06-26 07:40:21

前端自動化測試Jest

2023-05-18 14:01:00

前端自動化測試

2012-02-27 17:34:12

Facebook自動化

2021-04-22 15:46:42

物聯(lián)網(wǎng)智能辦公IoT

2012-11-16 09:16:26

自動化運(yùn)維

2022-09-12 16:02:32

測試企業(yè)工具

2022-02-17 10:37:16

自動化開發(fā)團(tuán)隊(duì)預(yù)測

2011-08-16 15:36:47

iPhone應(yīng)用測試

2023-10-06 22:12:40

Python開發(fā)工業(yè)系統(tǒng)

2009-10-09 17:50:59

VB Script開發(fā)

2023-03-27 15:37:43

自動化測試開發(fā)

2009-09-22 11:58:00

ibmdwWeb
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

欧美日韩一区二区在线 | 这里只有精品视频| 国产免费人做人爱午夜视频| 黄色片在线播放| 免费观看成人av| 久久久精品欧美| 性农村xxxxx小树林| 性欧美18~19sex高清播放| 欧美激情一区在线观看| 不卡视频一区二区| 欧美性猛交xxxx乱大交hd| 久久久久久久久久久久久久久久久久| 欧美电影免费提供在线观看| 国产v亚洲v天堂无码久久久| 91cn在线观看| 久久久不卡网国产精品二区 | 亚洲视频三区| 91成人免费网站| 精品国产一区二区三区无码| 成人在线播放视频| 国产v综合v亚洲欧| 国产精品国模在线| 国产亚洲自拍av| 久久理论电影| 日韩精品视频三区| 一级黄色片在线免费观看| 蜜桃视频在线网站| 亚洲综合色视频| 亚洲国产精品一区二区第四页av| 日日夜夜精品免费| 韩日av一区二区| 日韩av片免费在线观看| 久青草视频在线观看| 欧美国产一级| 亚洲欧美日韩网| 亚洲少妇18p| 高清久久一区| 欧美性感一区二区三区| 日韩免费毛片视频| 成人黄色动漫| 亚洲一区欧美一区| mm131午夜| 麻豆免费在线视频| 国产精品理伦片| 欧美日韩精品免费观看| 天天干天天爱天天操| 国产福利一区二区三区在线视频| 国产精品亚洲自拍| 亚洲午夜无码久久久久| 日韩专区中文字幕一区二区| 4k岛国日韩精品**专区| 青青国产在线观看| 在线日韩电影| 欧美极品少妇xxxxⅹ喷水| 加勒比av在线播放| 欧美日韩a区| 欧美成人激情在线| 91 在线视频| 亚洲乱码电影| 久久香蕉国产线看观看av| 亚洲精品电影院| 久久综合国产| 久久亚洲成人精品| 玖玖爱这里只有精品| 欧美特黄一级| 欧美激情国产精品| 久久精品美女视频| 亚洲激情网站| 国产99视频精品免视看7| 亚洲AV无码成人精品区东京热| 一本久久综合| 日韩女优在线播放| 亚洲av综合一区| 美美哒免费高清在线观看视频一区二区| 国产a级全部精品| 国产91av在线播放| 久久狠狠亚洲综合| 91系列在线观看| 亚洲a视频在线| 97久久超碰国产精品| 久久久久久国产精品一区 | 松下纱荣子在线观看| 丰满岳妇乱一区二区三区| 东京热加勒比无码少妇| 欧美黑粗硬大| 日韩视频免费观看高清完整版 | 在线观看日韩视频| 一本色道久久88| 欧美精品一区二区三区久久久竹菊| 久久成人国产精品| 国产性xxxx高清| 视频一区二区三区在线| 国产精品人成电影在线观看| 99久久夜色精品国产亚洲| av在线免费不卡| αv一区二区三区| 欧美日韩免费做爰大片| 中文字幕一区二区三区视频 | 亚洲免费影视| 成人久久久久爱| 亚洲aaa在线观看| 中文字幕的久久| 女人帮男人橹视频播放| 小黄鸭精品aⅴ导航网站入口| 欧美巨大另类极品videosbest | 色妞ww精品视频7777| 日韩av影片在线观看| 天天色影综合网| 国产精品毛片一区二区三区| 91精品美女在线| 日批视频免费播放| 自拍偷拍国产精品| 日日摸天天爽天天爽视频| 久久九九精品视频| 一本色道久久88亚洲综合88| 久久久精品国产sm调教网站| 秋霞av亚洲一区二区三| 国产欧美一区二区三区不卡高清| 91美女视频在线| 午夜成人免费电影| 亚洲国产日韩欧美在线观看| 日韩欧美四区| 欧美成人性生活| 超碰在线97观看| www.欧美亚洲| 国产一级大片免费看| 欧美free嫩15| 精品亚洲一区二区三区在线播放| 亚洲一级生活片| 秋霞成人午夜伦在线观看| 久久青青草原| a级片在线免费| 欧美精品一卡两卡| 黄色av免费播放| 免费在线欧美黄色| 国产精品一区在线观看| av大片在线| 欧美日韩小视频| 性欧美13一14内谢| 亚洲精品1234| 国产一区不卡在线观看| 91cn在线观看| 欧美一级黄色片| 99热这里只有精品4| 视频一区在线播放| 欧美一区二区福利| 午夜影院一区| 亚洲精品一区二区三区在线观看| 精品国产精品国产精品| 久久66热偷产精品| 亚洲午夜精品久久久中文影院av| 亚洲欧美在线成人| 国产一区二区三区在线观看视频| 中文字幕第四页| 久久久久久久国产精品影院| 女人天堂av手机在线| 猫咪成人在线观看| 91国自产精品中文字幕亚洲| 人妻一区二区三区四区| 天天操天天色综合| 国产麻豆xxxvideo实拍| 欧美亚洲一区| 欧美性大战久久久久| free欧美| 色天天综合狠狠色| 国产精品女同一区二区| 亚洲精品日韩专区silk| zjzjzjzjzj亚洲女人| 亚洲黄色高清| 欧美日韩精品免费观看视一区二区| 一级毛片久久久| 一区二区三区动漫| 中文字幕在线网站| 亚洲欧美视频在线观看视频| 蜜桃视频无码区在线观看| 亚洲大胆在线| 日本视频一区二区不卡| 日本国产一区| 欧美日韩国产二区| 日韩欧美在线番号| 欧美视频完全免费看| 91插插插插插插| 不卡av电影在线播放| 日韩在线xxx| 色喇叭免费久久综合| 91免费福利视频| 黄网站在线观| 伊人久久久久久久久久久| 国产欧美日韩成人| 五月天精品一区二区三区| 毛茸茸多毛bbb毛多视频| 三级成人在线视频| 亚洲 欧洲 日韩| 韩国女主播一区二区三区| 青青a在线精品免费观看| 免费看美女视频在线网站| 精品国产一区二区三区四区四| 男女啊啊啊视频| √…a在线天堂一区| 中文字幕免费高清视频| 日韩高清在线一区| 99久久免费观看| 国产不卡一区| 国产伦精品一区二区三| 欧美日韩免费观看视频| 欧美高跟鞋交xxxxxhd| 欧美偷拍视频| 欧美一卡2卡三卡4卡5免费| 亚洲GV成人无码久久精品| 亚洲美女免费在线| av网在线播放| 成人一区二区三区在线观看| 日本激情综合网| 一本色道久久| 最近中文字幕免费mv| 精品一区在线| 国产日韩亚洲精品| 91成人小视频| 国产精品福利在线| 美女91在线看| 久精品免费视频| 日本在线www| 亚洲人成在线一二| 人妻91麻豆一区二区三区| 678五月天丁香亚洲综合网| 无码aⅴ精品一区二区三区| 亚洲一区二区视频在线观看| 韩国一级黄色录像| 国产视频视频一区| 你懂得在线视频| 国产一区二区三区国产| 久久99999| 视频一区欧美精品| 久久久免费视频网站| 狠狠色丁香久久综合频道| 六月婷婷激情网| 色综合色综合| 亚洲精品白虎| 欧美日一区二区| 日韩一区国产在线观看| 台湾佬综合网| 久久综合毛片| 日韩一级电影| 另类欧美小说| 亚洲美女久久| 久久精品国产精品青草色艺| 久9re热视频这里只有精品| 成人av资源网| 99久久人爽人人添人人澡| 亚洲自拍偷拍视频| 久久久久久亚洲精品美女| 91在线无精精品一区二区| 24小时成人在线视频| 成人网在线免费观看| 爱情电影网av一区二区| 99re视频| 超碰在线成人| 久久国产精品一区二区三区四区| 精品少妇3p| 久久精品国产美女| 精品免费视频| 永久免费精品视频网站| 亚洲九九视频| 国产一区二区三区乱码| 亚洲高清成人| 日韩少妇内射免费播放18禁裸乳| 午夜在线观看免费一区| 黄色免费观看视频网站| 三级欧美在线一区| 亚洲免费一级视频| 国产综合色在线视频区| 四虎国产精品免费| 成人aaaa免费全部观看| 熟女俱乐部一区二区视频在线| 久久精品夜夜夜夜久久| 五月激情四射婷婷| 亚洲欧美自拍偷拍色图| 久久精品99国产精| 欧美日韩国产中文精品字幕自在自线| 天堂中文字幕在线观看| 91国产丝袜在线播放| 国产精品一级二级| 精品少妇一区二区三区 | 国产一区二区三区毛片| 欧美成人hd| 欧美国产中文字幕| 亚洲天堂资源| 国产日韩在线观看av| 国产精品久久久久av蜜臀| 欧美精品一区三区在线观看| 999久久久国产精品| 无码人妻少妇伦在线电影| 日韩av一区二区在线影视| 野花视频免费在线观看| xfplay精品久久| 免费三级在线观看| 欧美日韩午夜激情| 国产精品久久久久久久一区二区| 亚洲国产成人久久| 色开心亚洲综合| 久久人人爽人人爽人人片av高请| 日日夜夜天天综合| 99电影在线观看| 欧美日韩一二| 久久精品无码中文字幕| 老鸭窝一区二区久久精品| 国产香蕉精品视频| 中文字幕av资源一区| 国产精品6666| 欧美日韩国产123区| 青草久久伊人| 欧美激情在线一区| 国产福利亚洲| 久久精品第九区免费观看| 女人色偷偷aa久久天堂| 日韩免费高清在线| proumb性欧美在线观看| 成人免费视频网站入口::| 在线观看av不卡| 天天干视频在线| 欧美理论电影在线观看| 久久伊人国产| 日本免费高清一区| 亚洲欧美日韩一区在线观看| 四川一级毛毛片| 国产精品国产自产拍高清av| 国产性生活视频| 亚洲精品理论电影| 里番在线播放| 91蜜桃网站免费观看| 欧美丰满老妇| 中文av一区二区三区| 国产亚洲短视频| 天堂网中文字幕| 精品视频www| 性xxxxfreexxxxx欧美丶| 国产欧美在线一区二区| 欧美激情性爽国产精品17p| 国产一级免费大片| 中文字幕一区二区三区视频| 最近中文字幕在线观看视频| 精品在线小视频| 忘忧草在线日韩www影院| 国产日韩欧美一区二区| 亚洲天堂黄色| 国产日韩视频一区| 亚洲一区二区免费视频| 亚洲第一免费视频| 久久久久久久成人| 超碰成人在线观看| 日韩av中文字幕第一页| 成人av动漫在线| 天堂网一区二区三区| 亚洲激情中文字幕| 阿v视频在线观看| 欧美日韩精品中文字幕一区二区| 国产亚洲精品bv在线观看| 国产精品一级黄片| 欧美日韩在线视频观看| 欧美色图另类| 国产精品麻豆va在线播放| 日本大胆欧美| 九九九九九九九九| 亚洲欧美国产高清| 黑人精品一区二区| 91国产中文字幕| 国产尤物久久久| 美女网站色免费| 亚洲六月丁香色婷婷综合久久| 国产99999| 国内精品久久久久久中文字幕 | 色综合视频二区偷拍在线| 久久精品国产99久久6| 亚洲一级生活片| 亚洲国产精品一区二区三区| 激情开心成人网| 综合国产精品久久久| 成人深夜福利app| 精品国产乱子伦| 欧美xxxx做受欧美.88| 美女一区2区| 亚洲天堂av线| 有码一区二区三区| 天天操天天操天天干| 国产精品偷伦免费视频观看的| 亚洲欧洲日韩| 老鸭窝一区二区| 欧美日韩和欧美的一区二区| 狂野欧美激情性xxxx欧美| 欧美成人在线免费观看| 精品在线观看视频| 香蕉视频一区二区| 一区二区欧美亚洲| 爱爱精品视频| 免费看国产黄色片| 一区二区三区免费网站| 黄色小视频在线免费观看| 亚洲va欧美va国产综合久久| 国产情侣一区| 欧美老熟妇一区二区三区|