OC-SET-DEPLOYMENT-HOOK(1)

πŸ“¦
version 4.22.0 Β· 2 versions
, in nixpkgs unstable

πŸ’… oc set deployment-hook πŸ’…

Okay so real talk β€” this is the OC SET(1) page from the OpenShift CLI User Manuals, dated June 2016, and it's literally all about wrangling deployment hooks. Buckle up bestie, we're going in 🫢


🌸 NAME 🌸

oc set deployment-hook β€” update a deployment hook on a deployment config ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

oc set deployment-hook [OPTIONS]

πŸ’– DESCRIPTION πŸ’–

So the whole vibe: you're setting or removing a deployment hook on a deployment config. That's it, that's the main character energy πŸ‘‘

Deployment configs let hooks execute at different points in the lifecycle of the deployment β€” and which points you get depends on the deployment strategy. It's giving "different strategies, different rules" πŸ’…

For deployments with a Recreate strategy, you can specify a Pre, Mid, and Post hook:

  • The Pre hook runs before the deployment starts.
  • The Mid hook runs once the previous deployment has been scaled down to 0, but before the new one ramps up.
  • The Post hook runs once the deployment has completed.

For deployments with a Rolling strategy, you get a Pre and Post hook:

  • The Pre hook runs before the deployment starts.
  • The Post hook runs once the deployment has completed.

For each hook, a new pod gets started β€” using one of the containers in the deployment's pod template, with a specific command to execute. Yep, a whole lil pod just for the hook πŸ¦‹ Additional environment variables may be specified for the hook, plus which volumes from the pod template will be mounted on the hook pod. Very "customize it, make it yours."

Each hook can have its own cancellation policy, and it's one of: abort, retry, or ignore. But β€” and this is the important part πŸ™ˆ β€” not all cancellation policies can be set on all hooks. Example given: a Post hook on a rolling strategy does not support the abort policy, because at that point the deployment has already happened. Like, there's nothing left to abort, babe πŸ’€


✨ OPTIONS ✨

  • --all=false β€” if true, select all deployment configs in the namespace πŸ‘‘
  • --allow-missing-template-keys=true β€” if true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.
  • -c, --container="" β€” the name of the container in the selected deployment config to use for the deployment hook
  • --dry-run="none" β€” must be "none", "server", or "client". If it's the client strategy, only print the object that would be sent, without sending it. If it's the server strategy, submit a server-side request without persisting the resource. Practice run energy ✨
  • -e, --environment=[] β€” environment variable to use in the deployment hook pod
  • --failure-policy="ignore" β€” the failure policy for the deployment hook. Valid values are: abort,retry,ignore
  • --field-manager="kubectl-set" β€” name of the manager used to track field ownership.
  • -f, --filename=[] β€” filename, directory, or URL to files to use to edit the resource
  • -k, --kustomize="" β€” process the kustomization directory. This flag can't be used together with -f or -R. Pick a lane πŸ’…
  • --local=false β€” if true, set deployment hook will NOT contact api-server but run locally.
  • --mid=false β€” set or remove a mid deployment hook
  • -o, --output="" β€” output format. One of: (json, yaml, kyaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).
  • --post=false β€” set or remove a post deployment hook
  • --pre=false β€” set or remove a pre deployment hook
  • -R, --recursive=false β€” process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory πŸ—‚οΈ
  • --remove=false β€” if true, remove the specified deployment hook(s).
  • -l, --selector="" β€” selector (label query) to filter deployment configs
  • --show-managed-fields=false β€” if true, keep the managedFields when printing objects in JSON or YAML format.
  • --template="" β€” template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [⟨http://golang.org/pkg/text/template/#pkg-overview⟩].
  • --volumes=[] β€” volumes from the pod template to use in the deployment hook pod

πŸŽ€ OPTIONS INHERITED FROM PARENT COMMANDS πŸŽ€

These ones come from the parent command β€” not this command's own, but they ride along anyway 🫢

  • --as="" β€” username to impersonate for the operation. User could be a regular user or a service account in a namespace.
  • --as-group=[] β€” group to impersonate for the operation, this flag can be repeated to specify multiple groups.
  • --as-uid="" β€” UID to impersonate for the operation.
  • --as-user-extra=[] β€” user extras to impersonate for the operation, this flag can be repeated to specify multiple values for the same key.
  • --cache-dir="/homeless-shelter/.kube/cache" β€” default cache directory
  • --certificate-authority="" β€” path to a cert file for the certificate authority
  • --client-certificate="" β€” path to a client certificate file for TLS
  • --client-key="" β€” path to a client key file for TLS
  • --cluster="" β€” the name of the kubeconfig cluster to use
  • --context="" β€” the name of the kubeconfig context to use
  • --disable-compression=false β€” if true, opt-out of response compression for all requests to the server
  • --insecure-skip-tls-verify=false β€” if true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure 🚨 (yes, that's a warning, treat it like one)
  • --kubeconfig="" β€” path to the kubeconfig file to use for CLI requests.
  • --kuberc="" β€” path to the kuberc file to use for preferences. This can be disabled by exporting KUBECTL_KUBERC=false feature gate or turning off the feature KUBERC=off.
  • --match-server-version=false β€” require server version to match client version
  • -n, --namespace="" β€” if present, the namespace scope for this CLI request
  • --profile="none" β€” name of profile to capture. One of (none|cpu|heap|goroutine|threadcreate|block|mutex)
  • --profile-output="profile.pprof" β€” name of the file to write the profile to
  • --request-timeout="0" β€” the length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. Patience is a virtue ig 😭
  • -s, --server="" β€” the address and port of the Kubernetes API server
  • --tls-server-name="" β€” server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
  • --token="" β€” bearer token for authentication to the API server
  • --user="" β€” the name of the kubeconfig user to use
  • --warnings-as-errors=false β€” treat warnings received from the server as errors and exit with a non-zero exit code

πŸ”₯ EXAMPLE πŸ”₯

Steal these, they're iconic πŸ’…

# Clear pre and post hooks on a deployment config
oc set deployment-hook dc/myapp --remove --pre --post

# Set the pre deployment hook to execute a db migration command for an application
# using the data volume from the application
oc set deployment-hook dc/myapp --pre --volumes=data -- /var/lib/migrate-db.sh

# Set a mid deployment hook along with additional environment variables
oc set deployment-hook dc/myapp --mid --volumes=data -e VAR1=value1 -e VAR2=value2 -- /var/lib/prepare-deploy.sh

⭐ SEE ALSO ⭐

  • oc-set(1) β€” go read that one next, bestie πŸ¦‹

πŸ’œ HISTORY πŸ’œ

June 2016 β€” ported from the Kubernetes man-doc generator. Vintage, honestly πŸ‘‘


And that's the whole page, no cap πŸ’– This was the OC SET(1) manual page from the OpenShift CLI User Manuals, dated June 2016 β€” Openshift's very own CLI user manual realness. Go set some hooks, slay, and remember: not every policy works on every hook πŸŽ€βœ¨

πŸ“¦ where this page comes from