Sparrow를 사용하여 k8s 배포 검증
9005 단어 rakutestingkubernetesk8s
k8s-deployment-check
라는 새 플러그인을 삭제했습니다. 약간의 Raku 코드로 k8s 배포를 포함한 전체 k8s 인프라를 효과적으로 테스트할 수 있습니다.작동 방식을 보여주기 위해 샘플 nginx 배포를 만들어 보겠습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
# replicas: 1 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
volumeMounts:
- mountPath: /var/www
name: www-data
env:
- name: DEMO_GREETING
value: "Hello from the environment"
- name: DEMO_FAREWELL
value: "Such a sweet sorrow"
volumes:
- name: www-data
persistentVolumeClaim:
claimName: nginx-example
이 예에서는 로컬 폴더가
/var/www
로 마운트된 간단한 nginx 애플리케이션을 실행하고 www-data
볼륨 전체에서 데이터를 사용합니다.k8s apply -f nginx.yaml
deployment.apps/nginx-deployment created
이제 배포가 시작되어 실행 중이면 Raku를 사용하여 확인하겠습니다.
tomty --edit verify
#!raku
task-run "chk-dpl", "k8s-deployment-check", %(
name => "nginx-deployment",
namespace => "melezhik-sandbox",
volume-mounts => %(
www-data => "/var/www"
),
);
tomty verify
[repository] :: index updated from file:///root/repo/api/v1/index
[chk-dpl] :: >>> verify deployment. name=nginx-deployment,namespace=melezhik-sandbox,container=nginx
[chk-dpl] :: [env_start]
[chk-dpl] :: [DEMO_GREETING=Hello from the environment]
[chk-dpl] :: [DEMO_FAREWELL=Such a sweet sorrow]
[chk-dpl] :: [env_end]
[chk-dpl] :: [volume_mounts_start]
[chk-dpl] :: [www-data /var/www]
[chk-dpl] :: [volume_mounts_end]
[chk-dpl] :: ==================================================================
[task check] >>> check volume mounts
[task check] stdout match (r) <[www-data /var/www]> True
우리가 볼 수 있듯이 Sparrow는 다음을 성공적으로 확인했습니다.
www-data
이 /var/www
폴더환경 변수 검사도 추가하여 시나리오를 약간 변경할 수 있습니다.
tomty --edit verify
task-run "chk-dpl", "k8s-deployment-check", %(
name => "nginx-deployment",
namespace => "melezhik-sandbox",
volume-mounts => %(
www-data => "/var/www"
),
env => {
DEMO_GREETING => "Hello from the environment",
DEMO_FAREWELL => "Such a sweet sorrow"
},
);
이제 다음을 실행합니다.
tomty verify
[repository] :: index updated from file:///root/repo/api/v1/index
[chk-dpl] :: >>> verify deployment. name=nginx-deployment,namespace=melezhik-sandbox,container=nginx
[chk-dpl] :: [env_start]
[chk-dpl] :: [DEMO_GREETING=Hello from the environment]
[chk-dpl] :: [DEMO_FAREWELL=Such a sweet sorrow]
[chk-dpl] :: [env_end]
[chk-dpl] :: [volume_mounts_start]
[chk-dpl] :: [www-data /var/www]
[chk-dpl] :: [volume_mounts_end]
[chk-dpl] :: ==================================================================
[task check] >>> check env
[task check] stdout match (r) <[DEMO_FAREWELL=Such a sweet sorrow]> True
[task check] stdout match (r) <[DEMO_GREETING=Hello from the environment]> True
[task check] >>> check volume mounts
[task check] stdout match (r) <[www-data /var/www]> True
결론
Sparrowk8s-deployment-check
플러그인을 사용하면 간단한 Raku 코드를 작성하여 k8s 인프라를 테스트할 수 있습니다. 전체documentation는 SparrowHub 사이트에서 볼 수 있습니다.
나중에 더 많은 기능을 추가할 예정입니다.
내부적으로 Sparrow는 Raku 정규식을 사용하여 리소스 구조를 확인하므로 더욱 정교한 검사를 작성할 수 있습니다.
예를 들어, 컨테이너 실행 명령에 python 2nd 또는 3rd 버전이 있는지 확인하려면 다음과 같이 작성할 수 있습니다.
command => "regexp: '/usr/bin/python' 2|3"
계속 지켜봐 주시고 평소와 같이 귀하의 의견을 듣고 싶습니다.
알렉세이
Reference
이 문제에 관하여(Sparrow를 사용하여 k8s 배포 검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/melezhik/validating-k8s-deployments-using-sparrow-5f3f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
command => "regexp: '/usr/bin/python' 2|3"
Reference
이 문제에 관하여(Sparrow를 사용하여 k8s 배포 검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/melezhik/validating-k8s-deployments-using-sparrow-5f3f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)