Skip to content

Instantly share code, notes, and snippets.

@thxCode
Last active October 21, 2019 06:12
Show Gist options
  • Save thxCode/c24ce952dc0e2bcb0af502d07da6405f to your computer and use it in GitHub Desktop.
Save thxCode/c24ce952dc0e2bcb0af502d07da6405f to your computer and use it in GitHub Desktop.
Windows testing YAMLs and images

Testing images

Generate testing YAML

On Windows:

# generate a Windows workload deploy YAML
$APP_TYPE="windows"
$APP_IMAGE="maiwj/win-metric:windows"
$APP_PORT="80"
$APP_SVC_TYPE="ClusterIP"
iwr https://gist.githubusercontent.com/thxCode/c24ce952dc0e2bcb0af502d07da6405f/raw/2a8130270fdb756499e10688a72bea8ccaadd355/zz_generate_yaml.ps1 -UseBasicParsing | iex
# iwr https://gist.githubusercontent.com/thxCode/c24ce952dc0e2bcb0af502d07da6405f/raw/2a8130270fdb756499e10688a72bea8ccaadd355/zz_generate_yaml.ps1 -UseBasicParsing | iex | kubectl apply -f -

# generate a Linux workload deploy YAML
$APP_TYPE="linux"
$APP_IMAGE="ewoutp/docker-nginx-curl:latest"
$APP_PORT="80"
$APP_SVC_TYPE="ClusterIP"
iwr https://gist.githubusercontent.com/thxCode/c24ce952dc0e2bcb0af502d07da6405f/raw/2a8130270fdb756499e10688a72bea8ccaadd355/zz_generate_yaml.ps1 -UseBasicParsing | iex
# iwr https://gist.githubusercontent.com/thxCode/c24ce952dc0e2bcb0af502d07da6405f/raw/2a8130270fdb756499e10688a72bea8ccaadd355/zz_generate_yaml.ps1 -UseBasicParsing | iex | kubectl apply -f -

On Linux:

# generate a Windows workload deploy YAML
export APP_TYPE="windows"
export APP_IMAGE="maiwj/win-metric:windows"
export APP_PORT="80"
export APP_SVC_TYPE="ClusterIP"
curl -fsSL https://gist.githubusercontent.com/thxCode/c24ce952dc0e2bcb0af502d07da6405f/raw/2a8130270fdb756499e10688a72bea8ccaadd355/zz_generate_yaml.sh | sh
# curl -fsSL https://gist.githubusercontent.com/thxCode/c24ce952dc0e2bcb0af502d07da6405f/raw/2a8130270fdb756499e10688a72bea8ccaadd355/zz_generate_yaml.sh | sh | kubectl apply -f -


# generate a Linux workload deploy YAML
export APP_TYPE="linux"
export APP_IMAGE="ewoutp/docker-nginx-curl:latest"
export APP_PORT="80"
export APP_SVC_TYPE="ClusterIP"
curl -fsSL https://gist.githubusercontent.com/thxCode/c24ce952dc0e2bcb0af502d07da6405f/raw/2a8130270fdb756499e10688a72bea8ccaadd355/zz_generate_yaml.sh | sh | kubectl apply -f -
# curl -fsSL https://gist.githubusercontent.com/thxCode/c24ce952dc0e2bcb0af502d07da6405f/raw/2a8130270fdb756499e10688a72bea8ccaadd355/zz_generate_yaml.sh | sh | kubectl apply -f -
if (-not $APP_TYPE) {
if ($env:APP_TYPE) {
$APP_TYPE = $env:APP_TYPE
} else {
$APP_TYPE = "windows"
}
}
if (-not $APP_IMAGE) {
if ($env:APP_IMAGE) {
$APP_IMAGE = $env:APP_IMAGE
} else {
$APP_IMAGE = "maiwj/win-openresty:windows"
}
}
if (-not $APP_PORT) {
if ($env:APP_PORT) {
$APP_PORT = $env:APP_PORT
} else {
$APP_PORT = "80"
}
}
if (-not $APP_SVC_TYPE) {
if ($env:APP_SVC_TYPE) {
$APP_SVC_TYPE = $env:APP_SVC_TYPE
} else {
$APP_SVC_TYPE = "ClusterIP"
}
}
$APP_IMAGE = [System.Web.HTTPUtility]::UrlEncode($APP_IMAGE)
curl.exe -ksSL -X POST -d `
"version=2&body=package+main%0Aimport+(%0A%09%22os%22%0A%09%22text%2Ftemplate%22%0A)%0Avar+(%0A%09appType++++%3D+%22$($APP_TYPE)%22%0A%09appImage+++%3D+%22$($APP_IMAGE)%22%0A%09appPort++++%3D+%22$($APP_PORT)%22%0A%09appSvcType+%3D+%22$($APP_SVC_TYPE)%22%0A%09appName++++%3D+appType+%2B+%22-app%22%0A)%0Afunc+main()+%7B%0A%09appTpl+%3A%3D+%60%0AapiVersion%3A+v1%0Akind%3A+Service%0Ametadata%3A%0A++name%3A+%7B%7B.Name%7D%7D%0A++labels%3A%0A++++app%3A+%7B%7B.Name%7D%7D%0Aspec%3A%0A++ports%3A%0A++-+port%3A+80%0A++++targetPort%3A+%7B%7B.Port%7D%7D%0A++selector%3A%0A++++app%3A+%7B%7B.Name%7D%7D%0A++type%3A+%7B%7B.SvcType%7D%7D%0A---%0AapiVersion%3A+apps%2Fv1%0Akind%3A+Deployment%0Ametadata%3A%0A++labels%3A%0A++++app%3A+%7B%7B.Name%7D%7D%0A++name%3A+%7B%7B.Name%7D%7D%0Aspec%3A%0A++selector%3A%0A++++matchLabels%3A%0A++++++app%3A+%7B%7B.Name%7D%7D%0A++template%3A%0A++++metadata%3A%0A++++++labels%3A%0A++++++++app%3A+%7B%7B.Name%7D%7D%0A++++++name%3A+%7B%7B.Name%7D%7D%0A++++spec%3A%0A++++++affinity%3A%0A++++++++nodeAffinity%3A%0A++++++++++requiredDuringSchedulingIgnoredDuringExecution%3A%0A++++++++++++nodeSelectorTerms%3A%0A++++++++++++-+matchExpressions%3A%0A++++++++++++++-+key%3A+beta.kubernetes.io%2Fos%0A++++++++++++++++operator%3A+In%0A++++++++++++++++values%3A%0A++++++++++++++++-+%7B%7B.Type%7D%7D%0A++++++++++++-+matchExpressions%3A%0A++++++++++++++-+key%3A+kubernetes.io%2Fos%0A++++++++++++++++operator%3A+In%0A++++++++++++++++values%3A%0A++++++++++++++++-+%7B%7B.Type%7D%7D%0A++++++containers%3A%0A++++++-+name%3A+app%0A++++++++image%3A+%7B%7B.Image%7D%7D%0A++++++++ports%3A%0A++++++++-+containerPort%3A+%7B%7B.Port%7D%7D%0A%7B%7B-+.TolerationsTpl%7D%7D%0A%60%0A%09tolerationsTpl+%3A%3D+%60%0A++++++tolerations%3A%0A++++++-+operator%3A+%22Exists%22%0A%60%0A%09tplParams+%3A%3D+map%5Bstring%5Dstring%7B%0A%09%09%22Name%22%3A+++++++++++appName%2C%0A%09%09%22Type%22%3A+++++++++++appType%2C%0A%09%09%22SvcType%22%3A++++++++appSvcType%2C%0A%09%09%22Image%22%3A++++++++++appImage%2C%0A%09%09%22Port%22%3A+++++++++++appPort%2C%0A%09%09%22TolerationsTpl%22%3A+%22%22%2C%0A%09%7D%0A%09if+appType+%3D%3D+%22linux%22+%7B%0A%09%09tplParams%5B%22TolerationsTpl%22%5D+%3D+tolerationsTpl%0A%09%7D%0A%09tmpl%2C+_+%3A%3D+template.New(%22app%22).Parse(appTpl)%0A%09tmpl.Execute(os.Stdout%2C+tplParams)%0A%7D%0A" `
https://play.golang.org/compile `
| ConvertFrom-Json | ForEach-Object {Write-Host $_.Events[0].Message}
APP_TYPE=${APP_TYPE:-windows}
APP_IMAGE=${APP_IMAGE:-maiwj/win-openresty:windows}
APP_PORT=${APP_PORT:-80}
APP_SVC_TYPE=${APP_SVC_TYPE:-ClusterIP}
APP_IMAGE=$(echo "$APP_IMAGE" | tr -d '\n' | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g')
curl -ksSL -X POST -d \
"version=2&body=package+main%0Aimport+(%0A%09%22os%22%0A%09%22text%2Ftemplate%22%0A)%0Avar+(%0A%09appType++++%3D+%22${APP_TYPE}%22%0A%09appImage+++%3D+%22${APP_IMAGE}%22%0A%09appPort++++%3D+%22${APP_PORT}%22%0A%09appSvcType+%3D+%22${APP_SVC_TYPE}%22%0A%09appName++++%3D+appType+%2B+%22-app%22%0A)%0Afunc+main()+%7B%0A%09appTpl+%3A%3D+%60%0AapiVersion%3A+v1%0Akind%3A+Service%0Ametadata%3A%0A++name%3A+%7B%7B.Name%7D%7D%0A++labels%3A%0A++++app%3A+%7B%7B.Name%7D%7D%0Aspec%3A%0A++ports%3A%0A++-+port%3A+80%0A++++targetPort%3A+%7B%7B.Port%7D%7D%0A++selector%3A%0A++++app%3A+%7B%7B.Name%7D%7D%0A++type%3A+%7B%7B.SvcType%7D%7D%0A---%0AapiVersion%3A+apps%2Fv1%0Akind%3A+Deployment%0Ametadata%3A%0A++labels%3A%0A++++app%3A+%7B%7B.Name%7D%7D%0A++name%3A+%7B%7B.Name%7D%7D%0Aspec%3A%0A++selector%3A%0A++++matchLabels%3A%0A++++++app%3A+%7B%7B.Name%7D%7D%0A++template%3A%0A++++metadata%3A%0A++++++labels%3A%0A++++++++app%3A+%7B%7B.Name%7D%7D%0A++++++name%3A+%7B%7B.Name%7D%7D%0A++++spec%3A%0A++++++affinity%3A%0A++++++++nodeAffinity%3A%0A++++++++++requiredDuringSchedulingIgnoredDuringExecution%3A%0A++++++++++++nodeSelectorTerms%3A%0A++++++++++++-+matchExpressions%3A%0A++++++++++++++-+key%3A+beta.kubernetes.io%2Fos%0A++++++++++++++++operator%3A+In%0A++++++++++++++++values%3A%0A++++++++++++++++-+%7B%7B.Type%7D%7D%0A++++++++++++-+matchExpressions%3A%0A++++++++++++++-+key%3A+kubernetes.io%2Fos%0A++++++++++++++++operator%3A+In%0A++++++++++++++++values%3A%0A++++++++++++++++-+%7B%7B.Type%7D%7D%0A++++++containers%3A%0A++++++-+name%3A+app%0A++++++++image%3A+%7B%7B.Image%7D%7D%0A++++++++ports%3A%0A++++++++-+containerPort%3A+%7B%7B.Port%7D%7D%0A%7B%7B-+.TolerationsTpl%7D%7D%0A%60%0A%09tolerationsTpl+%3A%3D+%60%0A++++++tolerations%3A%0A++++++-+operator%3A+%22Exists%22%0A%60%0A%09tplParams+%3A%3D+map%5Bstring%5Dstring%7B%0A%09%09%22Name%22%3A+++++++++++appName%2C%0A%09%09%22Type%22%3A+++++++++++appType%2C%0A%09%09%22SvcType%22%3A++++++++appSvcType%2C%0A%09%09%22Image%22%3A++++++++++appImage%2C%0A%09%09%22Port%22%3A+++++++++++appPort%2C%0A%09%09%22TolerationsTpl%22%3A+%22%22%2C%0A%09%7D%0A%09if+appType+%3D%3D+%22linux%22+%7B%0A%09%09tplParams%5B%22TolerationsTpl%22%5D+%3D+tolerationsTpl%0A%09%7D%0A%09tmpl%2C+_+%3A%3D+template.New(%22app%22).Parse(appTpl)%0A%09tmpl.Execute(os.Stdout%2C+tplParams)%0A%7D%0A" \
https://play.golang.org/compile \
| jq -r '.Events[0].Message'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment