Add higress lua canary script
Signed-off-by: SpecialYang <940129520@qq.com>
This commit is contained in:
parent
843e8b8bc4
commit
d50754a362
|
|
@ -0,0 +1,46 @@
|
|||
annotations = {}
|
||||
-- obj.annotations is ingress annotations, it is recommended not to remove the part of the lua script, it must be kept
|
||||
if ( obj.annotations )
|
||||
then
|
||||
annotations = obj.annotations
|
||||
end
|
||||
-- indicates the ingress is nginx canary api
|
||||
annotations["nginx.ingress.kubernetes.io/canary"] = "true"
|
||||
-- First, set all canary api to nil
|
||||
annotations["nginx.ingress.kubernetes.io/canary-by-cookie"] = nil
|
||||
annotations["nginx.ingress.kubernetes.io/canary-by-header"] = nil
|
||||
annotations["nginx.ingress.kubernetes.io/canary-by-header-pattern"] = nil
|
||||
annotations["nginx.ingress.kubernetes.io/canary-by-header-value"] = nil
|
||||
annotations["nginx.ingress.kubernetes.io/canary-weight"] = nil
|
||||
-- if rollout.spec.strategy.canary.steps.weight is nil, obj.weight will be -1,
|
||||
-- then we need remove the canary-weight annotation
|
||||
if ( obj.weight ~= "-1" )
|
||||
then
|
||||
annotations["nginx.ingress.kubernetes.io/canary-weight"] = obj.weight
|
||||
end
|
||||
-- if don't contains headers, immediate return annotations
|
||||
if ( not obj.matches )
|
||||
then
|
||||
return annotations
|
||||
end
|
||||
-- headers & cookie apis
|
||||
-- traverse matches
|
||||
for _,match in ipairs(obj.matches) do
|
||||
local header = match.headers[1]
|
||||
-- cookie
|
||||
if ( header.name == "canary-by-cookie" )
|
||||
then
|
||||
annotations["nginx.ingress.kubernetes.io/canary-by-cookie"] = header.value
|
||||
else
|
||||
annotations["nginx.ingress.kubernetes.io/canary-by-header"] = header.name
|
||||
-- if regular expression
|
||||
if ( header.type == "RegularExpression" )
|
||||
then
|
||||
annotations["nginx.ingress.kubernetes.io/canary-by-header-pattern"] = header.value
|
||||
else
|
||||
annotations["nginx.ingress.kubernetes.io/canary-by-header-value"] = header.value
|
||||
end
|
||||
end
|
||||
end
|
||||
-- must be return annotations
|
||||
return annotations
|
||||
Loading…
Reference in New Issue