diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 286b2c8..e83764a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,7 +15,7 @@ jobs: sudo mv kubeconform /usr/local/bin - name: check all yaml run: | - comm -3 <(find . | grep yaml$ | sort) <(cat .kubeconform-ignore | sort) | xargs -n1 kubeconform --strict | tee -a apply.txt + ./bin/test.sh | tee -a apply.txt - name: upload artifact uses: actions/upload-artifact@v2 with: diff --git a/Ingress/fanout.yaml b/Ingress/fanout.yaml index 4839119..a0d84fa 100644 --- a/Ingress/fanout.yaml +++ b/Ingress/fanout.yaml @@ -1,5 +1,5 @@ --- -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-fanout @@ -12,9 +12,15 @@ spec: paths: - path: /path1 backend: - serviceName: testsvc1 - servicePort: 4201 + service: + name: testsvc1 + port: + number: 4201 + pathType: exact - path: /path2 backend: - serviceName: testsvc2 - servicePort: 4202 + service: + name: testsvc2 + port: + number: 4202 + pathType: exact diff --git a/Ingress/ingress-class.yaml b/Ingress/ingress-class.yaml index 5f2f778..9f7e581 100644 --- a/Ingress/ingress-class.yaml +++ b/Ingress/ingress-class.yaml @@ -1,5 +1,5 @@ --- -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: external-lb diff --git a/Ingress/ingress.yaml b/Ingress/ingress.yaml index f41678b..546d8f2 100644 --- a/Ingress/ingress.yaml +++ b/Ingress/ingress.yaml @@ -1,9 +1,11 @@ --- -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress spec: - backend: - serviceName: testsvc - servicePort: 80 + defaultBackend: + service: + name: testsvc + port: + number: 80 diff --git a/Ingress/nohost.yaml b/Ingress/nohost.yaml index 7487a5e..571e55c 100644 --- a/Ingress/nohost.yaml +++ b/Ingress/nohost.yaml @@ -1,5 +1,5 @@ --- -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: name-virtual-host-ingress @@ -9,17 +9,26 @@ spec: http: paths: - backend: - serviceName: testsvc1 - servicePort: 80 + service: + name: testsvc1 + port: + number: 80 + pathType: exact - host: second.foo.com http: paths: - backend: - serviceName: testsvc2 - servicePort: 80 + service: + name: testsvc2 + port: + number: 80 + pathType: exact # No host supplied here - http: paths: - backend: - serviceName: testsvc3 - servicePort: 80 + service: + name: testsvc3 + port: + number: 80 + pathType: exact diff --git a/Ingress/rewrite.yaml b/Ingress/rewrite.yaml index e1d3fab..de2b602 100644 --- a/Ingress/rewrite.yaml +++ b/Ingress/rewrite.yaml @@ -1,5 +1,5 @@ --- -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-rewrite @@ -12,5 +12,7 @@ spec: - path: /rewritepath pathType: Prefix backend: - serviceName: testsvc - servicePort: 80 + service: + name: testsvc + port: + number: 80 diff --git a/Ingress/tls.yaml b/Ingress/tls.yaml index 8fbff8d..7fedf9e 100644 --- a/Ingress/tls.yaml +++ b/Ingress/tls.yaml @@ -9,7 +9,7 @@ data: tls.key: YQo= type: kubernetes.io/tls --- -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-tls @@ -24,5 +24,8 @@ spec: paths: - path: / backend: - serviceName: testsvc1 - servicePort: 80 + service: + name: testsvc1 + port: + number: 80 + pathType: exact diff --git a/Ingress/virtualhosting.yaml b/Ingress/virtualhosting.yaml index 282f84e..9c1a3b5 100644 --- a/Ingress/virtualhosting.yaml +++ b/Ingress/virtualhosting.yaml @@ -1,5 +1,5 @@ --- -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: name-virtual-host-ingress @@ -9,11 +9,17 @@ spec: http: paths: - backend: - serviceName: testsvc1 - servicePort: 80 + service: + name: testsvc1 + port: + number: 80 + pathType: exact - host: bar.foo.com http: paths: - backend: - serviceName: testsvc2 - servicePort: 80 + service: + name: testsvc2 + port: + number: 80 + pathType: exact diff --git a/PodSecurityPolicy/Ingress/simple.yaml b/PodSecurityPolicy/Ingress/simple.yaml index f24daeb..723ebb7 100644 --- a/PodSecurityPolicy/Ingress/simple.yaml +++ b/PodSecurityPolicy/Ingress/simple.yaml @@ -1,6 +1,6 @@ # Requires an appropriate ingress controller to exist on the cluster for this to take effect --- -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: simple @@ -13,5 +13,7 @@ spec: - path: /testpath pathType: Prefix backend: - serviceName: test - servicePort: 80 + service: + name: test + port: + number: 80 diff --git a/Service/Pod.spec.subdomain/subdomain.yaml b/Service/Pod.spec.subdomain/subdomain.yaml index cfc251b..2d340e0 100644 --- a/Service/Pod.spec.subdomain/subdomain.yaml +++ b/Service/Pod.spec.subdomain/subdomain.yaml @@ -17,7 +17,7 @@ # DNS serves an A or AAAA record at that name, pointing to the Pod's IP. # Both pods "subdomain-simple-pod-1" and "subdomain-simple-pod-2" can have their distinct A or AAAA records. -Example: +--- apiVersion: v1 kind: Service metadata: diff --git a/Service/spec.topologyKeys/fallback.yaml b/Service/spec.topologyKeys/fallback.yaml deleted file mode 100644 index 0ad481f..0000000 --- a/Service/spec.topologyKeys/fallback.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -# https://kubernetes.io/docs/concepts/services-networking/service-topology/#prefer-node-local-zonal-then-regional-endpoints -# A Service that prefers node local, zonal, then regional endpoints but falls back to cluster wide endpoints. -apiVersion: v1 -kind: Service -metadata: - name: service-topolgies-fallback-service -spec: - selector: - app: my-app - ports: - - protocol: TCP - port: 80 - targetPort: 9376 - topologyKeys: - - "kubernetes.io/hostname" - - "topology.kubernetes.io/zone" - - "topology.kubernetes.io/region" - - "*" diff --git a/bin/test.sh b/bin/test.sh new file mode 100755 index 0000000..30d81e2 --- /dev/null +++ b/bin/test.sh @@ -0,0 +1,102 @@ +#!/usr/bin/env bash + +# From: https://betterdev.blog/minimal-safe-bash-script-template/ + +set -Eeuo pipefail +trap cleanup SIGINT SIGTERM ERR EXIT + +script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + abs_script_dir=$(readlink -f ${script_dir}) +elif [[ "$OSTYPE" == "darwin"* ]]; then + abs_script_dir=$(greadlink -f ${script_dir}) +elif [[ "$OSTYPE" == "cygwin" ]]; then + abs_script_dir=$(readlink -f ${script_dir}) +elif [[ "$OSTYPE" == "msys" ]]; then + abs_script_dir=$(readlink -f ${script_dir}) +elif [[ "$OSTYPE" == "win32" ]]; then + abs_script_dir=$(readlink -f ${script_dir}) +elif [[ "$OSTYPE" == "freebsd"* ]]; then + abs_script_dir=$(readlink -f ${script_dir}) +else + abs_script_dir=$(readlink -f ${script_dir}) +fi + +usage() { + cat << EOF # remove the space between << and EOF, this is due to web plugin issue +Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] [ --version ] arg1 [arg2...] + +Script description here. + +Available options: + +-h, --help Print this help and exit +-v, --verbose Print script debug info +--version Kubernetes version, default 'master' +EOF + exit +} + +cleanup() { + trap - SIGINT SIGTERM ERR EXIT + # script cleanup here +} + +setup_colors() { + if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then + NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m' + else + NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW='' + fi +} + +msg() { + echo >&2 -e "${1-}" +} + +die() { + local msg=$1 + local code=${2-1} # default exit status 1 + msg "$msg" + exit "$code" +} + +parse_params() { + # default values of variables set from params + flag=0 + k8s_version=master + + while :; do + case "${1-}" in + -h | --help) usage ;; + -v | --verbose) set -x ;; + --no-color) NO_COLOR=1 ;; + -f | --flag) flag=1 ;; # example flag + --version) + k8s_versionm="${2-}" + shift + ;; + -?*) die "Unknown option: $1" ;; + *) break ;; + esac + shift + done + + #args=("$@") + + # check required params and arguments + [[ -z "${k8s_version-}" ]] && die "Missing required parameter: k8s_version" + #[[ ${#args[@]} -eq 0 ]] && die "Missing script arguments" + + return 0 +} + +parse_params "$@" +setup_colors + +# script logic here + +( + cd ${abs_script_dir}/.. || exit 1 + comm -3 <(find . | grep yaml$ | sort) <(cat .kubeconform-ignore | sort) | xargs -n1 kubeconform --strict -kubernetes-version $k8s_version +)