면책조항 : 이 프로젝트는 베타 버전입니다. API가 변경될 수 있습니다.
WPA(Watermark Pod Autoscaler) 컨트롤러는 HPA(Horizontal Pod Autoscaler)를 확장하는 맞춤형 컨트롤러입니다.
Watermark Pod Autoscaler 컨트롤러는 업스트림 수평형 Pod Autoscaler 컨트롤러의 대체 컨트롤러입니다.
일부 애플리케이션을 자동 크기 조정하고 싶지만 다음과 같은 경우:
예를 들어
apiVersion : datadoghq.com/v1alpha1
kind : WatermarkPodAutoscaler
[...]
spec :
algorithm : absolute
[...]
원하는 복제본 수를 계산하는 두 가지 옵션이 있습니다.
average
컨트롤러는 value from the external metrics provider
/ current number of replicas
를 사용하여 이를 워터마크와 비교합니다. 권장되는 복제본 수는 value from the external metrics provider
/ watermark
의 값입니다(현재 값에 따라 낮거나 높음).
복제본 수에 의존하지 않는 측정항목을 사용하는 경우 average
알고리즘이 적합합니다. 일반적으로 ELB가 수신한 요청 수는 단일 웹 서버가 n
rq/s를 처리해야 한다는 것을 알고 있다는 점을 고려하여 우리가 원하는 웹 서버 수를 나타낼 수 있습니다. 복제본을 추가해도 로드 밸런서가 수신하는 요청 수는 늘어나거나 줄어들지 않습니다.
absolute
기본값은 absolute
입니다. 평균 측정항목을 사용해야 합니다. 권장되는 복제본 수는 current number of replicas
* value from the external metrics provider
/ watermark
의 값으로 계산됩니다.
absolute
알고리즘은 가장 일반적인 사용 사례를 나타내므로 기본값입니다. 예를 들어 애플리케이션이 CPU의 60%~80% 사이에서 실행되도록 하고 avg:cpu.usage
가 85%인 경우 확장해야 합니다. 측정항목은 복제본 수와 상관관계가 있어야 합니다.
참고 : 업스트림 컨트롤러에서는 권장 복제본 수를 반올림하는 데 math.Ceil
함수만 사용됩니다.
즉, 임계값이 10인 경우 하나의 복제본으로 축소하려면 외부 측정항목 제공자에서 사용률 8.999에 도달해야 합니다. 그러나 10.001을 활용하면 하나의 복제본으로 확장됩니다.
WPA 컨트롤러는 값이 하위 워터마크 아래에 있는 경우 math.Floor
사용합니다. 이는 대칭적인 동작을 보장합니다. 다른 확장 옵션과 결합하면 축소 시기를 더욱 세밀하게 제어할 수 있습니다.
Watermark Pod Autoscaler를 사용하려면 Kubernetes 클러스터에 배포하세요.
Watermark Pod Autoscaler 프로젝트 zip 파일을 다운로드합니다. 소스 코드는 DataDog/watermarkpodautoscaler
에서 찾을 수 있습니다.
프로젝트의 압축을 풀고 ./watermarkpodautoscaler
폴더로 이동합니다.
네임스페이스와 Watermark Pod Autoscaler 컨트롤러를 정의합니다.
DD_NAMESPACE= " datadog "
DD_NAMEWPA= " wpacontroller "
네임스페이스를 만듭니다.
kubectl create ns $DD_NAMESPACE
Helm을 사용하여 Watermark Pod Autoscaler 컨트롤러를 설치합니다.
helm install $DD_NAMEWPA -n $DD_NAMESPACE ./chart/watermarkpodautoscaler
WatermarkPodAutoscaler Controler에는 도우미 유틸리티 세트를 제공하는 kubectl 플러그인이 함께 제공됩니다. 전용 문서 페이지에 대한 자세한 내용: docs/kubectl-plugin.md
대상 배포와 동일한 네임스페이스에 WPA를 만듭니다.
Datadog Cluster Agent는 생성/업데이트/삭제 이벤트를 선택합니다. WPA 사양을 구문 분석하여 Datadog에서 가져올 측정항목과 범위를 추출합니다.
이 예에서는 다음 사양 구성을 사용합니다.
apiVersion : datadoghq.com/v1alpha1
kind : WatermarkPodAutoscaler
metadata :
name : example-watermarkpodautoscaler
spec :
downscaleForbiddenWindowSeconds : 60
downscaleDelayBelowWatermarkSeconds : 300
upscaleForbiddenWindowSeconds : 30
upscaleDelayAboveWatermarkSeconds : 30
scaleDownLimitFactor : 30
scaleUpLimitFactor : 50
minReplicas : 4
maxReplicas : 9
scaleTargetRef :
kind : " Deployment "
name : " some_app "
apiVersion : " apps/v1 "
metrics :
- external :
highWatermark : 400m
lowWatermark : 150m
metricName : custom.request_duration.max
metricSelector :
matchLabels :
kubernetes_cluster : mycluster
service : billing
short_image : billing-app
type : External
tolerance : " 0.01 "
External
및 Resource
측정항목 유형이 모두 지원됩니다. WPA 컨트롤러는 HPA와 동일한 형식을 사용합니다. 자세한 내용은 여기를 참조하세요.
워터마크부터 시작하여 경계( watermarkpodautoscaler.wpa_controller_low_watermark
및 watermarkpodautoscaler.wpa_controller_high_watermark
) 사이에 보라색으로 표시된 Datadog에서 수집된 측정항목( watermarkpodautoscaler.wpa_controller_value
) 값은 컨트롤러에 스케일링 이벤트를 트리거하지 않도록 지시합니다. Quantities
로 지정되므로 m | "" | k | M | G | T | P | E
사용하려는 값을 쉽게 나타냅니다.
watermarkpodautoscaler.wpa_controller_restricted_scaling{reason:within_bounds}
측정항목을 사용하여 실제로 제한되어 있는지 확인할 수 있습니다. 참고 : 이 시간 동안 컨트롤러에 의해 트리거되는 확장 이벤트가 없음을 더 명확하게 하기 위해 측정항목에 1000을 곱했습니다.
두 번째 구성 옵션 세트는 scaleDownLimitFactor
및 scaleUpLimitFactor
에 의해 제어되는 배포의 확장 속도와 관련됩니다. 이는 0에서 100 사이의 정수입니다. 이는 현재 복제본 수를 고려하여 각각 축소 및 확대의 최대 비율을 나타냅니다.
이 경우 10개의 복제본이 있고 scaleUpFactor
30(%)인 권장 복제본 수가 14개(권장 사항에 대한 자세한 내용은 알고리즘 섹션 참조)인 경우 복제본은 13개로 제한됩니다.
다음 그래프에서는 watermarkpodautoscaler.wpa_controller_replicas_scaling_proposal
메트릭으로 표시되는 제안된 복제본 수(보라색)가 현재 복제본 수에 비해 너무 높다는 것을 알 수 있습니다. 이는 watermarkpodautoscaler.wpa_controller_restricted_scaling{reason:upscale_capping}
측정항목을 사용하여 모니터링할 수 있는 업스케일 제한 논리를 트리거합니다( 참고 : 위와 동일하며 측정항목을 더 명확하게 하기 위해 곱했습니다). 따라서 복제본 watermarkpodautoscaler.wpa_controller_replicas_scaling_effective
의 유효 수는 확장되지만 scaleUpLimitFactor
에 따라 확장됩니다.
이 유사한 예에서는 너무 많은 축소를 피하고 동일한 측정항목 세트를 사용하여 합리적인 수의 복제본만 축소하도록 보장할 수 있습니다.
우리는 항상 보수적인 규모 조정 결정을 내린다는 점을 기억하는 것이 중요합니다.
scaleUpLimitFactor
29%인 경우: 10개의 복제본이 있고 13개가 권장되는 경우 12개로 확장합니다.scaleDownLimitFactor
가 29%인 경우: 10개의 복제본이 있고 7이 권장되는 경우 8로 축소합니다.minReplicas
및 maxReplicas
옵션이 우선 적용됩니다. 우선순위 섹션을 참조하세요. 마지막으로 사용 가능한 마지막 옵션은 downscaleForbiddenWindowSeconds
및 upscaleForbiddenWindowSeconds
입니다. 이는 조정 이벤트 후 각각 축소 및 확장하기 전에 대기하는 시간(초)을 나타냅니다. 마지막 스케일링 이벤트만 유지하며 upscaleForbiddenWindowSeconds
를 마지막으로 스케일링한 시간과 비교하지 않습니다.
다음 예시에서는 휴지 기간이 되면 권장 복제본 수가 무시되는 것을 확인할 수 있습니다. 축소 휴지 기간은 watermarkpodautoscaler.wpa_controller_transition_countdown{transition:downscale}
으로 시각화할 수 있으며, 아래 그래프에서 노란색으로 표시됩니다. 그래프에서 주황색으로 표시된 업스케일 휴지 기간( transition:upscale
)보다 상당히 높은 것을 확인할 수 있습니다. 확장이 권장되면 적절한 쿨다운 기간이 끝난 경우에만 확장합니다. 이렇게 하면 두 카운트다운이 모두 재설정됩니다.
버스트로 인한 크기 조정을 방지하려면 downscaleDelayBelowWatermarkSeconds
및/또는 upscaleDelayAboveWatermarkSeconds
기능을 사용할 수 있습니다. 이러한 옵션은 정수로 지정됩니다. 측정항목은 구성된 기간 동안 해당 워터마크 위 또는 아래에 유지되어야 합니다. WPA 상태에 남은 시간을 추적할 수 있습니다.
- lastTransitionTime: "2022-11-15T02:02:09Z"
message: Allow downscaling if the value stays under the Watermark
reason: Value below Low Watermark
status: "False"
type: BelowLowWatermark
또는 컨트롤러 로그에서:
{"level":"info","ts":1668481092517.446,"logger":"controllers.WatermarkPodAutoscaler","msg":"Will not scale: value has not been out of bounds for long enough","watermarkpodautoscaler":"datadog/example-watermarkpodautoscaler","wpa_name":"example-watermarkpodautoscaler","wpa_namespace":"datadog","time_left":3209}
참고: 이 기능과 함께 여러 지표를 사용하는 경우 지표의 OR
을 사용하여 위/아래 조건이 고려됩니다.
예를 들어 M1과 M2라는 두 개의 지표가 포함된 60초 upscaleDelay
있다고 가정합니다. M1이 40초 동안 하이 워터마크 위에 머무르는 경우 [t0; t40]
, M2는 30초 동안 상위 워터마크 위로 올라가며 마지막 10초 동안 M1과 겹칩니다. [t30; t60]
, 이는 upscaleDelay
조건을 검증하고 업스케일링 이벤트를 허용합니다.
외부 측정항목의 값을 검색할 때 먼저 이를 highWatermark
+ tolerance
오차 합계 및 lowWatermark
- tolerance
오차 합계와 비교합니다. 범위를 벗어나면 권장 복제본 수를 계산합니다. 그런 다음 이 값을 현재 복제본 수와 비교하여 minReplicas
및 maxReplicas
에 따라 권장되는 복제본 수를 잠재적으로 제한합니다. 마지막으로 downscaleForbiddenWindowSeconds
및 upscaleForbiddenWindowSeconds
를 고려하여 확장이 허용되는지 살펴봅니다.
대상의 크기를 조정할 수 있는 조건을 보다 세부적으로 제어하려면 다음 기능을 사용할 수 있습니다.
minAvailableReplicaPercentage
: 컨트롤러가 대상을 자동 크기 조정하기 위해 사용 가능해야 하는 복제본의 최소 비율을 나타냅니다. 예를 들어 50으로 설정되고 대상 뒤의 포드 중 절반 미만이 사용 가능 상태인 경우 대상은 컨트롤러에 의해 크기가 조정되지 않습니다.
readinessDelaySeconds
: 확장 결정에서 고려되기 전에 복제본을 실행해야 하는 시간을 지정합니다.
모든 조건이 충족되면 컨트롤러는 dryRun
플래그가 true
로 설정되지 않은 경우에만 scaleTargetRef
의 대상 개체를 권장 복제본 수로 확장합니다. 로깅을 통해 이를 표시합니다.
{ "level" : " info " , "ts" : 1566327479.866722 , "logger" : " wpa_controller " , "msg" : " DryRun mode: scaling change was inhibited currentReplicas:8 desiredReplicas:12 " }
Cluster Agent는 WPA 리소스에 대해 정보 제공자를 실행하며 HPA와 유사하게 생성/업데이트/삭제 시 사양을 구문 분석하여 Datadog에서 메트릭을 쿼리합니다.
클러스터 에이전트는 기본적으로 WPA 수신기를 실행하지 않습니다. 클러스터 에이전트에서 WPA를 활성화하려면 환경 변수 DD_EXTERNAL_METRICS_PROVIDER_WPA_CONTROLLER=true
설정하고 클러스터 에이전트 서비스 계정에 할당된 ClusterRole을 업데이트하여 WatermarkPodAutoscaler 개체에 액세스할 수 있도록 합니다.
[...]
- apiGroups : ["datadoghq.com"]
resources :
- watermarkpodautoscalers
verbs :
- get
- list
- watch
[...]
참고: datadog helm 차트를 사용하여 클러스터 에이전트에서 WPA를 활성화하려면 clusterAgent.metricsProvider.wpaController
true
로 설정하세요. ClusterRole이 자동으로 업데이트됩니다.
이러한 변경 사항을 적용하고 WPA 개체를 생성한 후 Datadog Cluster Agent 포드에서 실행하고 agent status
실행하면 구문 분석된 자동 크기 조정기의 사양에 대한 더 구체적인 세부 정보를 볼 수 있습니다(수평인지 또는 워터마크 포드 자동 크기 조정기).
* watermark pod autoscaler: default/example2-watermarkpodautoscaler
- name : example2-watermarkpodautoscaler
- namespace : default
- type : watermark
- uid : ff09b7d8-d99b-11e9-a8c1-42010a8001c4
Metric name : sinus
Labels :
- foo : bar
Value : 75.1297378540039
Timestamp : 15688259400
Valid : true
* horizontal pod autoscaler: default/nginxext
- name : nginxext
- namespace : default
- type : horizontal
- uid : 61ef3f6e-af32-11e9-a8c1-42010a8001c4
Metric name : docker.mem.rss
Labels :
- cluster-location : us-central1-a
- cluster-name : charly
Value : 263888700952
Timestamp : 15688259400
Valid : true
위에서 언급한 측정항목 외에도 WPA의 올바른 작동을 더 잘 이해하는 데 도움이 되는 로그가 있습니다.
15초마다 Datadog 사양의 metrics
섹션에 나열된 메트릭을 검색합니다.
{ "level" : " info " , "ts" : 1668484420515.7678 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Metrics from the External Metrics Provider " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "metrics" :[ 33959 ]}
{ "level" : " info " , "ts" : 1668484420515.8203 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Value is below lowMark " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "usage" : " 33959m " , "replicaCount" : 7 , "currentReadyReplicas" : 8 , "tolerance (%)" : 1 , "adjustedLM" : 34650 , "adjustedUsage" : 33959 }
{ "level" : " info " , "ts" : 1668484420515.8906 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Proposing replicas " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "proposedReplicas" : 7 , "metricName" : " datadogmetric@datadog:example-watermarkpodautoscaler-utilization-metric{map[kube_container_name:my-container service:my-target]} " , "reference" : " Deployment/datadog/example-watermarkpodautoscaler " , "metric timestamp" : " Tue, 15 Nov 2022 03:53:20 UTC " }
{ "level" : " info " , "ts" : 1668484420515.9324 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Normalized Desired replicas " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "desiredReplicas" : 7 }
{ "level" : " info " , "ts" : 1668484420515.946 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Cooldown status " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "backoffUp" : false , "backoffDown" : false , "desiredReplicas" : 7 , "currentReplicas" : 8 }
{ "level" : " info " , "ts" : 1668484420515.9563 , "logger" : " controllers.WatermarkPodAutoscaler " , "msg" : " Will not scale: value has not been out of bounds for long enough " , "watermarkpodautoscaler" : " datadog/example-watermarkpodautoscaler " , "wpa_name" : " example-watermarkpodautoscaler " , "wpa_namespace" : " datadog " , "time_left" : 2335 }
여기서 현재 대상 배포에 표시되는 복제본 수는 6개입니다. 그런 다음 외부 지표 제공자로부터 검색된 원시 값을 확인하고 이를 최고 및 최저 워터마크와 비교합니다. 이 비교 결과를 바탕으로 권장되는 복제본 수를 인쇄합니다. 이 경우에는 5입니다.
외부 측정항목 공급자를 직접 쿼리하려면 다음 명령을 사용할 수 있습니다.
kubectl get --raw " /apis/external.metrics.k8s.io/v1beta1/namespaces// | jq ."
?labelSelector=key%3Dvalue
추가하여 선택적으로 라벨 선택기를 추가할 수도 있습니다. 이 경우 측정항목을 검색하려면 다음을 사용할 수 있습니다.
kubectl get --raw " /apis/external.metrics.k8s.io/v1beta1/namespaces// | jq .?labelSelector=key%3Dvalue%2Cotherkey%3Dothervalue%2Cshort_image%3Dimage "
다음과 같은 로그가 표시되는 경우:
{ "level" : " info " , "ts" : 1566397216.8918724 , "logger" : " wpa_controller " , "msg" : " failed to compute desired number of replicas based on listed metrics for Deployment/datadog/propjoe-green: failed to get external metric dd.propjoe.request_duration.max: unable to get external metric datadog/propjoe-green/&LabelSelector{MatchLabels:map[string]string{fooa: bar,},MatchExpressions:[],}: no metrics returned from external metrics API " }
그런 다음 외부 메트릭 공급자에서 이 메트릭을 실제로 사용할 수 없는지 확인할 수 있습니다. 이는 레이블에 오타가 있거나 Datadog에서 지표를 가져올 수 없기 때문일 수 있습니다(이는 너무 희박함, API 작동 중지, 속도 제한 초과 등 다양한 요인으로 인해 발생할 수 있음). 추가 조사를 위해 외부 측정항목 제공자 로그를 살펴볼 수 있습니다.
그런 다음 스케일링 속도 제한과 쿨다운 기간을 확인합니다. 크기 조정 한도의 경우 다음과 같은 내용이 표시됩니다.
{ "level" : " info " , "ts" : 1566327268.8839815 , "logger" : " wpa_controller " , "msg" : " Upscaling rate higher than limit of 50.0% up to 9 replicas. Capping the maximum upscale to 9 replicas " }
{ "level" : " info " , "ts" : 1566327268.884001 , "logger" : " wpa_controller " , "msg" : " Returning 9 replicas, condition: ScaleUpLimit reason the desired replica count is increasing faster than the maximum scale rate " }
{ "level" : " info " , "ts" : 1566327479.8845513 , "logger" : " wpa_controller " , "msg" : " -> after normalization: 9 " }
그런 다음 휴지 기간을 고려합니다. 마지막 확장 이벤트가 발생한 시점과 다음 확장 및 축소 이벤트가 다음까지 금지되는 시점을 나타내는 로그가 있습니다.
{ "level" : " info " , "ts" : 1566327479.8845847 , "logger" : " wpa_controller " , "msg" : " Too early to downscale. Last scale was at 2019-08-20 18:57:44 +0000 UTC, next downscale will be at 2019-08-20 18:58:44 +0000 UTC, last metrics timestamp: 2019-08-20 18:57:59 +0000 UTC " }
{ "level" : " info " , "ts" : 1566327479.8846018 , "logger" : " wpa_controller " , "msg" : " Too early to upscale. Last scale was at 2019-08-20 18:57:44 +0000 UTC, next upscale will be at 2019-08-20 18:58:14 +0000 UTC, last metrics timestamp: 2019-08-20 18:57:59 +0000 UTC " }
{ "level" : " info " , "ts" : 1566327479.884608 , "logger" : " wpa_controller " , "msg" : " backoffUp: true, backoffDown: true, desiredReplicas 5, currentReplicas: 6 " }
마지막으로 배포가 올바르게 자동 크기 조정되었는지 확인했습니다.
{ "level" : " info " , "ts" : 1566327253.7887673 , "logger" : " wpa_controller " , "msg" : " Successful rescale of watermarkpodautoscaler, old size: 8, new size: 9, reason: cutom_metric.max{map[kubernetes_cluster:my-cluster service:my-service short_image:my-image]} above target " }
wpa.datadoghq.com/logs-attributes
주석을 사용하여 기본 WPA 객체와 연결된 로그에 추가 키 값을 추가할 수 있습니다. 예: apiVersion: datadoghq.com/v1alpha1
kind: WatermarkPodAutoscaler
metadata:
annotations:
wpa.datadoghq.com/logs-attributes: '{"mywpa": "isgreat"}'
name: watermarkpodautoscaler-sinus
namespace: default
[...]
산출물:
{"level":"info","ts":1643642642091.062,"logger":"controllers.WatermarkPodAutoscaler","msg":"getReadyPodsCount","watermarkpodautoscaler":"default/watermarkpodautoscaler-sinus","mywpa":"isgreat","full podList length":2,"toleratedAsReadyPodCount":2,"incorrectly targeted pods":0}
배포를 수동으로 확장하면 어떻게 되나요?
다음 조정 루프에서는 원하는 복제본 수를 계산하기 위해 새로운 복제본 수를 고려합니다. 리소스가 다른 사람에 의해 수정되었다는 로그가 표시될 수 있습니다. 그러나 구성된 복제본 수가 범위를 벗어나는 경우 컨트롤러는 이를 허용 가능한 범위 내의 복제본 수로 다시 축소합니다.
배포를 수동으로 확장/축소하기 위해 WPA를 일시적으로 비활성화하는 방법은 무엇입니까?
권장되는 방법은 WPA를 테스트 실행 모드로 설정한 다음 원하는 복제본 수로 확장하는 것입니다. 다음 패치 명령을 사용하여 연습 실행으로 WPA를 설정할 수 있습니다.
kubectl patch wpa --type='json' -p='[{"op": "replace", "path": "/spec/dryRun", "value":true}]'
WPA가 다시 활성화되도록 임시 재정의가 끝나면 연습 실행 모드를 false
로 다시 설정하는 것을 잊지 마세요.
컨트롤러의 설치 공간은 얼마나 됩니까?
테스트 결과 이는 클러스터의 배포 수에 따른 요소입니다.
컨트롤러는 상태 비저장(Stateless)인가요?
예.
WPA는 여러 측정항목을 지원합니까?
예, WPA는 여러 지표에 따라 확장할 수 있으며 HPA와 유사하게 작동합니다. WPA는 각 측정항목을 개별적으로 평가하고 가장 큰 숫자가 필요한 측정항목과 관련된 복제본 수를 제안합니다. 예를 들어 WPA가 metric1, metric2, metric3을 평가하고 각각에 대해 각각 10, 20, 30개의 복제본 제안을 계산하는 경우 최종 제안은 30입니다.
우리는 모든 WPA 정의를 클러스터 전체에서 감시하므로 클러스터 역할을 사용합니다.
유용한 옵션은 사용자를 가장하여 권한을 확인하는 것입니다. 예를 들어 WPA 컨트롤러의 서비스 계정으로 배포를 가져올 수 있는 권한이 있는지 확인하려면 다음을 수행하세요.
kubectl get deploy < your_deploy > --as system:serviceaccount:datadog:watermarkpodautoscaler -n < your_ns >
또는 외부 측정항목 제공자에게 쿼리하세요.
kubectl get --raw " /apis/external.metrics.k8s.io/v1beta1/namespaces//metric --as system:serviceaccount::watermarkpodautoscaler
요구사항:
https://github.com/DataDog/watermarkpodautoscaler
저장소를 복제한 후 일부 환경 변수를 설정합니다.
export GO111MODULE=on
unset GOPATH
export PATH= $PATH : $( pwd ) /bin
그런 다음 일부 도구 종속성을 설치하려면 make install-tools
실행하세요.
make install-tools
: Operator SDK를 사용하기 위한 툴링을 설치합니다.make build
: 로컬에서 컨트롤러를 빌드합니다.make generate
: 컨트롤러 및 정보 제공자 등록을 위한 코드를 생성하는 여러 운영자 SDK 생성기를 실행합니다.make test
: 단위 테스트를 실행합니다.make validate
: 일반적인 Golang 린터( golangci-lint
)를 실행합니다.make e2e
: 현재 구성된 Kubernetes 클러스터에서 엔드투엔드 테스트를 실행합니다.make container
: Operator SDK를 사용하여 컨트롤러 Docker 이미지를 빌드합니다.make container-ci
: 다단계 Dockerfile을 사용하여 컨트롤러 Docker 이미지를 빌드합니다.릴리스 프로세스 문서는 여기에서 확인할 수 있습니다.
일부 기능은 구성 가능한 HPA 또는 CHPA에서 영감을 받았습니다. CRD의 전체 패키징은 운영자 SDK를 사용하여 수행되었지만 대부분의 코드 구조는 Watermark Pod Autoscaler에도 사용되었습니다.