CINXE.COM
Command Reference · Crossplane v1.16
<!doctype html><html lang=en class=color-toggle-hidden color-theme=light><head><meta charset=utf-8><script type="text/javascript"> ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(t){try{s.console&&console.log(t)}catch(e){}}var o,i=t("ee"),a=t(32),s={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(s.console=!0,o.indexOf("dev")!==-1&&(s.dev=!0),o.indexOf("nr_dev")!==-1&&(s.nrDev=!0))}catch(c){}s.nrDev&&i.on("internal-error",function(t){r(t.stack)}),s.dev&&i.on("fn-err",function(t,e,n){r(n.stack)}),s.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(s,function(t,e){return t}).join(", ")))},{}],2:[function(t,e,n){function r(t,e,n,r,s){try{l?l-=1:o(s||new UncaughtException(t,e,n),!0)}catch(f){try{i("ierr",[f,c.now(),!0])}catch(d){}}return"function"==typeof u&&u.apply(this,a(arguments))}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function o(t,e){var n=e?null:c.now();i("err",[t,n])}var i=t("handle"),a=t(33),s=t("ee"),c=t("loader"),f=t("gos"),u=window.onerror,d=!1,p="nr@seenError";if(!c.disabled){var l=0;c.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(h){"stack"in h&&(t(14),t(13),"addEventListener"in window&&t(7),c.xhrWrappable&&t(15),d=!0)}s.on("fn-start",function(t,e,n){d&&(l+=1)}),s.on("fn-err",function(t,e,n){d&&!n[p]&&(f(n,p,function(){return!0}),this.thrown=!0,o(n))}),s.on("fn-end",function(){d&&!this.thrown&&l>0&&(l-=1)}),s.on("internal-error",function(t){i("ierr",[t,c.now(),!0])})}},{}],3:[function(t,e,n){var r=t("loader");r.disabled||(r.features.ins=!0)},{}],4:[function(t,e,n){function r(){U++,L=g.hash,this[u]=y.now()}function o(){U--,g.hash!==L&&i(0,!0);var t=y.now();this[h]=~~this[h]+t-this[u],this[d]=t}function i(t,e){E.emit("newURL",[""+g,e])}function a(t,e){t.on(e,function(){this[e]=y.now()})}var s="-start",c="-end",f="-body",u="fn"+s,d="fn"+c,p="cb"+s,l="cb"+c,h="jsTime",m="fetch",v="addEventListener",w=window,g=w.location,y=t("loader");if(w[v]&&y.xhrWrappable&&!y.disabled){var x=t(11),b=t(12),E=t(9),R=t(7),O=t(14),T=t(8),P=t(15),S=t(10),M=t("ee"),N=M.get("tracer"),C=t(23);t(17),y.features.spa=!0;var L,U=0;M.on(u,r),b.on(p,r),S.on(p,r),M.on(d,o),b.on(l,o),S.on(l,o),M.buffer([u,d,"xhr-resolved"]),R.buffer([u]),O.buffer(["setTimeout"+c,"clearTimeout"+s,u]),P.buffer([u,"new-xhr","send-xhr"+s]),T.buffer([m+s,m+"-done",m+f+s,m+f+c]),E.buffer(["newURL"]),x.buffer([u]),b.buffer(["propagate",p,l,"executor-err","resolve"+s]),N.buffer([u,"no-"+u]),S.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(T,m+s),a(T,m+"-done"),a(S,"new-jsonp"),a(S,"jsonp-end"),a(S,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,C(!0)),w[v]("load",i,C(!0)),w[v]("popstate",function(){i(0,U>1)},C(!0))}},{}],5:[function(t,e,n){function r(){var t=new PerformanceObserver(function(t,e){var n=t.getEntries();s(v,[n])});try{t.observe({entryTypes:["resource"]})}catch(e){}}function o(t){if(s(v,[window.performance.getEntriesByType(w)]),window.performance["c"+p])try{window.performance[h](m,o,!1)}catch(t){}else try{window.performance[h]("webkit"+m,o,!1)}catch(t){}}function i(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var a=t("ee"),s=t("handle"),c=t(14),f=t(13),u=t(6),d=t(23),p="learResourceTimings",l="addEventListener",h="removeEventListener",m="resourcetimingbufferfull",v="bstResource",w="resource",g="-start",y="-end",x="fn"+g,b="fn"+y,E="bstTimer",R="pushState",O=t("loader");if(!O.disabled){O.features.stn=!0,t(9),"addEventListener"in window&&t(7);var T=NREUM.o.EV;a.on(x,function(t,e){var n=t[0];n instanceof T&&(this.bstStart=O.now())}),a.on(b,function(t,e){var n=t[0];n instanceof T&&s("bst",[n,e,this.bstStart,O.now()])}),c.on(x,function(t,e,n){this.bstStart=O.now(),this.bstType=n}),c.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),this.bstType])}),f.on(x,function(){this.bstStart=O.now()}),f.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),"requestAnimationFrame"])}),a.on(R+g,function(t){this.time=O.now(),this.startPath=location.pathname+location.hash}),a.on(R+y,function(t){s("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),u()?(s(v,[window.performance.getEntriesByType("resource")]),r()):l in window.performance&&(window.performance["c"+p]?window.performance[l](m,o,d(!1)):window.performance[l]("webkit"+m,o,d(!1))),document[l]("scroll",i,d(!1)),document[l]("keypress",i,d(!1)),document[l]("click",i,d(!1))}}},{}],6:[function(t,e,n){e.exports=function(){return"PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver}},{}],7:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){s.inPlace(t,[u,d],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),s=t("wrap-function")(a,!0),c=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var r=c(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?s(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],8:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=i(arguments),e={};o.emit(n+"before-start",[t],e);var a;e[m]&&e[m].dt&&(a=e[m].dt);var s=r.apply(this,t);return o.emit(n+"start",[t,a],s),s.then(function(t){return o.emit(n+"end",[null,t],s),t},function(t){throw o.emit(n+"end",[t],s),t})})}var o=t("ee").get("fetch"),i=t(33),a=t(32);e.exports=o;var s=window,c="fetch-",f=c+"body-",u=["arrayBuffer","blob","json","text","formData"],d=s.Request,p=s.Response,l=s.fetch,h="prototype",m="nr@context";d&&p&&l&&(a(u,function(t,e){r(d[h],e,f),r(p[h],e,f)}),r(s,"fetch",c),o.on(c+"end",function(t,e){var n=this;if(e){var r=e.headers.get("content-length");null!==r&&(n.rxSize=r),o.emit(c+"done",[null,e],n)}else o.emit(c+"done",[t],n)}))},{}],9:[function(t,e,n){var r=t("ee").get("history"),o=t("wrap-function")(r);e.exports=r;var i=window.history&&window.history.constructor&&window.history.constructor.prototype,a=window.history;i&&i.pushState&&i.replaceState&&(a=i),o.inPlace(a,["pushState","replaceState"],"-")},{}],10:[function(t,e,n){function r(t){function e(){f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}function n(){f.emit("jsonp-error",[],l),f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}var r=t&&"string"==typeof t.nodeName&&"script"===t.nodeName.toLowerCase();if(r){var o="function"==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var d=s(a),p="function"==typeof d.parent[d.key];if(p){var l={};u.inPlace(d.parent,[d.key],"cb-",l),t.addEventListener("load",e,c(!1)),t.addEventListener("error",n,c(!1)),f.emit("new-jsonp",[t.src],l)}}}}}function o(){return"addEventListener"in window}function i(t){var e=t.match(d);return e?e[1]:null}function a(t,e){var n=t.match(l),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function s(t){var e=t.match(p);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var c=t(23),f=t("ee").get("jsonp"),u=t("wrap-function")(f);if(e.exports=f,o()){var d=/[?&](?:callback|cb)=([^&#]+)/,p=/(.*)\.([^.]+)/,l=/^(\w+)(\.|$)(.*)$/,h=["appendChild","insertBefore","replaceChild"];Node&&Node.prototype&&Node.prototype.appendChild?u.inPlace(Node.prototype,h,"dom-"):(u.inPlace(HTMLElement.prototype,h,"dom-"),u.inPlace(HTMLHeadElement.prototype,h,"dom-"),u.inPlace(HTMLBodyElement.prototype,h,"dom-")),f.on("dom-start",function(t){r(t[0])})}},{}],11:[function(t,e,n){var r=t("ee").get("mutation"),o=t("wrap-function")(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],12:[function(t,e,n){function r(t){var e=i.context(),n=s(t,"executor-",e,null,!1),r=new f(n);return i.context(r).getCtx=function(){return e},r}var o=t("wrap-function"),i=t("ee").get("promise"),a=t("ee").getOrSetContext,s=o(i),c=t(32),f=NREUM.o.PR;e.exports=i,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){i.emit("propagate",[null,!o],a,!1,!1),o=o||!t}}var o=!1;c(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var a=e.apply(f,arguments),s=f.resolve(a);return s}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&i.emit("propagate",[t,!0],n,!1,!1),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),c(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),o.wrapInPlace(f.prototype,"then",function(t){return function(){var e=this,n=o.argsToArray.apply(this,arguments),r=a(e);r.promise=e,n[0]=s(n[0],"cb-",r,null,!1),n[1]=s(n[1],"cb-",r,null,!1);var c=t.apply(this,n);return r.nextPromise=c,i.emit("propagate",[e,!0],c,!1,!1),c}}),i.on("executor-start",function(t){t[0]=s(t[0],"resolve-",this,null,!1),t[1]=s(t[1],"resolve-",this,null,!1)}),i.on("executor-err",function(t,e,n){t[1](n)}),i.on("cb-end",function(t,e,n){i.emit("propagate",[n,!0],this.nextPromise,!1,!1)}),i.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=i.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],13:[function(t,e,n){var r=t("ee").get("raf"),o=t("wrap-function")(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],14:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t("wrap-function")(i),s="setTimeout",c="setInterval",f="clearTimeout",u="-start",d="-";e.exports=i,a.inPlace(window,[s,"setImmediate"],s+d),a.inPlace(window,[c],c+d),a.inPlace(window,[f,"clearImmediate"],f+d),i.on(c+u,r),i.on(s+u,o)},{}],15:[function(t,e,n){function r(t,e){d.inPlace(e,["onreadystatechange"],"fn-",s)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),d.inPlace(t,y,"fn-",s)}function i(t){x.push(t),m&&(E?E.then(a):w?w(a):(R=-R,O.data=R))}function a(){for(var t=0;t<x.length;t++)r([],x[t]);x.length&&(x=[])}function s(t,e){return e}function c(t,e){for(var n in t)e[n]=t[n];return e}t(7);var f=t("ee"),u=f.get("xhr"),d=t("wrap-function")(u),p=t(23),l=NREUM.o,h=l.XHR,m=l.MO,v=l.PR,w=l.SI,g="readystatechange",y=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],x=[];e.exports=u;var b=window.XMLHttpRequest=function(t){var e=new h(t);try{u.emit("new-xhr",[e],e),e.addEventListener(g,o,p(!1))}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(c(h,b),b.prototype=h.prototype,d.inPlace(b.prototype,["open","send"],"-xhr-",s),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),m){var E=v&&v.resolve();if(!w&&!v){var R=1,O=document.createTextNode(R);new m(a).observe(O,{characterData:!0})}}else f.on("fn-end",function(t){t[0]&&t[0].type===g||a()})},{}],16:[function(t,e,n){function r(t){if(!s(t))return null;var e=window.NREUM;if(!e.loader_config)return null;var n=(e.loader_config.accountID||"").toString()||null,r=(e.loader_config.agentID||"").toString()||null,f=(e.loader_config.trustKey||"").toString()||null;if(!n||!r)return null;var h=l.generateSpanId(),m=l.generateTraceId(),v=Date.now(),w={spanId:h,traceId:m,timestamp:v};return(t.sameOrigin||c(t)&&p())&&(w.traceContextParentHeader=o(h,m),w.traceContextStateHeader=i(h,v,n,r,f)),(t.sameOrigin&&!u()||!t.sameOrigin&&c(t)&&d())&&(w.newrelicHeader=a(h,m,v,n,r,f)),w}function o(t,e){return"00-"+e+"-"+t+"-01"}function i(t,e,n,r,o){var i=0,a="",s=1,c="",f="";return o+"@nr="+i+"-"+s+"-"+n+"-"+r+"-"+t+"-"+a+"-"+c+"-"+f+"-"+e}function a(t,e,n,r,o,i){var a="btoa"in window&&"function"==typeof window.btoa;if(!a)return null;var s={v:[0,1],d:{ty:"Browser",ac:r,ap:o,id:t,tr:e,ti:n}};return i&&r!==i&&(s.d.tk=i),btoa(JSON.stringify(s))}function s(t){return f()&&c(t)}function c(t){var e=!1,n={};if("init"in NREUM&&"distributed_tracing"in NREUM.init&&(n=NREUM.init.distributed_tracing),t.sameOrigin)e=!0;else if(n.allowed_origins instanceof Array)for(var r=0;r<n.allowed_origins.length;r++){var o=h(n.allowed_origins[r]);if(t.hostname===o.hostname&&t.protocol===o.protocol&&t.port===o.port){e=!0;break}}return e}function f(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.enabled}function u(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.exclude_newrelic_header}function d(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&NREUM.init.distributed_tracing.cors_use_newrelic_header!==!1}function p(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.cors_use_tracecontext_headers}var l=t(29),h=t(18);e.exports={generateTracePayload:r,shouldGenerateTrace:s}},{}],17:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<p;r++)t.removeEventListener(d[r],this.listener,!1);e.aborted||(n.duration=a.now()-this.startTime,this.loadCaptureCalled||4!==t.readyState?null==e.status&&(e.status=0):i(this,t),n.cbTime=this.cbTime,s("xhr",[e,n,this.startTime,this.endTime,"xhr"],this))}}function o(t,e){var n=c(e),r=t.params;r.hostname=n.hostname,r.port=n.port,r.protocol=n.protocol,r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.parsedOrigin=n,t.sameOrigin=n.sameOrigin}function i(t,e){t.params.status=e.status;var n=v(e,t.lastSize);if(n&&(t.metrics.rxSize=n),t.sameOrigin){var r=e.getResponseHeader("X-NewRelic-App-Data");r&&(t.params.cat=r.split(", ").pop())}t.loadCaptureCalled=!0}var a=t("loader");if(a.xhrWrappable&&!a.disabled){var s=t("handle"),c=t(18),f=t(16).generateTracePayload,u=t("ee"),d=["load","error","abort","timeout"],p=d.length,l=t("id"),h=t(24),m=t(22),v=t(19),w=t(23),g=NREUM.o.REQ,y=window.XMLHttpRequest;a.features.xhr=!0,t(15),t(8),u.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,e.loadCaptureCalled=!1,e.params=this.params||{},e.metrics=this.metrics||{},t.addEventListener("load",function(n){i(e,t)},w(!1)),h&&(h>34||h<10)||t.addEventListener("progress",function(t){e.lastSize=t.loaded},w(!1))}),u.on("open-xhr-start",function(t){this.params={method:t[0]},o(this,t[1]),this.metrics={}}),u.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid);var n=f(this.parsedOrigin);if(n){var r=!1;n.newrelicHeader&&(e.setRequestHeader("newrelic",n.newrelicHeader),r=!0),n.traceContextParentHeader&&(e.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&e.setRequestHeader("tracestate",n.traceContextStateHeader),r=!0),r&&(this.dt=n)}}),u.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=m(r);i&&(n.txSize=i)}this.startTime=a.now(),this.listener=function(t){try{"abort"!==t.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}};for(var s=0;s<p;s++)e.addEventListener(d[s],this.listener,w(!1))}),u.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),u.on("xhr-load-added",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),u.on("xhr-load-removed",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),u.on("xhr-resolved",function(){this.endTime=a.now()}),u.on("addEventListener-end",function(t,e){e instanceof y&&"load"===t[0]&&u.emit("xhr-load-added",[t[1],t[2]],e)}),u.on("removeEventListener-end",function(t,e){e instanceof y&&"load"===t[0]&&u.emit("xhr-load-removed",[t[1],t[2]],e)}),u.on("fn-start",function(t,e,n){e instanceof y&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=a.now()))}),u.on("fn-end",function(t,e){this.xhrCbStart&&u.emit("xhr-cb-time",[a.now()-this.xhrCbStart,this.onload,e],e)}),u.on("fetch-before-start",function(t){function e(t,e){var n=!1;return e.newrelicHeader&&(t.set("newrelic",e.newrelicHeader),n=!0),e.traceContextParentHeader&&(t.set("traceparent",e.traceContextParentHeader),e.traceContextStateHeader&&t.set("tracestate",e.traceContextStateHeader),n=!0),n}var n,r=t[1]||{};"string"==typeof t[0]?n=t[0]:t[0]&&t[0].url?n=t[0].url:window.URL&&t[0]&&t[0]instanceof URL&&(n=t[0].href),n&&(this.parsedOrigin=c(n),this.sameOrigin=this.parsedOrigin.sameOrigin);var o=f(this.parsedOrigin);if(o&&(o.newrelicHeader||o.traceContextParentHeader))if("string"==typeof t[0]||window.URL&&t[0]&&t[0]instanceof URL){var i={};for(var a in r)i[a]=r[a];i.headers=new Headers(r.headers||{}),e(i.headers,o)&&(this.dt=o),t.length>1?t[1]=i:t.push(i)}else t[0]&&t[0].headers&&e(t[0].headers,o)&&(this.dt=o)}),u.on("fetch-start",function(t,e){this.params={},this.metrics={},this.startTime=a.now(),this.dt=e,t.length>=1&&(this.target=t[0]),t.length>=2&&(this.opts=t[1]);var n,r=this.opts||{},i=this.target;"string"==typeof i?n=i:"object"==typeof i&&i instanceof g?n=i.url:window.URL&&"object"==typeof i&&i instanceof URL&&(n=i.href),o(this,n);var s=(""+(i&&i instanceof g&&i.method||r.method||"GET")).toUpperCase();this.params.method=s,this.txSize=m(r.body)||0}),u.on("fetch-done",function(t,e){this.endTime=a.now(),this.params||(this.params={}),this.params.status=e?e.status:0;var n;"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var r={txSize:this.txSize,rxSize:n,duration:a.now()-this.startTime};s("xhr",[this.params,r,this.startTime,this.endTime,"fetch"],this)})}},{}],18:[function(t,e,n){var r={};e.exports=function(t){if(t in r)return r[t];var e=document.createElement("a"),n=window.location,o={};e.href=t,o.port=e.port;var i=e.href.split("://");!o.port&&i[1]&&(o.port=i[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===i[0]?"443":"80"),o.hostname=e.hostname||n.hostname,o.pathname=e.pathname,o.protocol=i[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var a=!e.protocol||":"===e.protocol||e.protocol===n.protocol,s=e.hostname===document.domain&&e.port===n.port;return o.sameOrigin=a&&(!e.hostname||s),"/"===o.pathname&&(r[t]=o),o}},{}],19:[function(t,e,n){function r(t,e){var n=t.responseType;return"json"===n&&null!==e?e:"arraybuffer"===n||"blob"===n||"json"===n?o(t.response):"text"===n||""===n||void 0===n?o(t.responseText):void 0}var o=t(22);e.exports=r},{}],20:[function(t,e,n){function r(){}function o(t,e,n,r){return function(){return u.recordSupportability("API/"+e+"/called"),i(t+e,[f.now()].concat(s(arguments)),n?null:this,r),n?void 0:this}}var i=t("handle"),a=t(32),s=t(33),c=t("ee").get("tracer"),f=t("loader"),u=t(25),d=NREUM;"undefined"==typeof window.newrelic&&(newrelic=d);var p=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",h=l+"ixn-";a(p,function(t,e){d[e]=o(l,e,!0,"api")}),d.addPageAction=o(l,"addPageAction",!0),d.setCurrentRouteName=o(l,"routeName",!0),e.exports=newrelic,d.interaction=function(){return(new r).get()};var m=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(h+"tracer",[f.now(),t,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return e.apply(this,arguments)}catch(t){throw c.emit("fn-err",[arguments,this,t],n),t}finally{c.emit("fn-end",[f.now()],n)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){m[e]=o(h,e)}),newrelic.noticeError=function(t,e){"string"==typeof t&&(t=new Error(t)),u.recordSupportability("API/noticeError/called"),i("err",[t,f.now(),!1,e])}},{}],21:[function(t,e,n){function r(t){if(NREUM.init){for(var e=NREUM.init,n=t.split("."),r=0;r<n.length-1;r++)if(e=e[n[r]],"object"!=typeof e)return;return e=e[n[n.length-1]]}}e.exports={getConfiguration:r}},{}],22:[function(t,e,n){e.exports=function(t){if("string"==typeof t&&t.length)return t.length;if("object"==typeof t){if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!("undefined"!=typeof FormData&&t instanceof FormData))try{return JSON.stringify(t).length}catch(e){return}}}},{}],23:[function(t,e,n){var r=!1;try{var o=Object.defineProperty({},"passive",{get:function(){r=!0}});window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}catch(i){}e.exports=function(t){return r?{passive:!0,capture:!!t}:!!t}},{}],24:[function(t,e,n){var r=0,o=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);o&&(r=+o[1]),e.exports=r},{}],25:[function(t,e,n){function r(t,e){var n=[a,t,{name:t},e];return i("storeMetric",n,null,"api"),n}function o(t,e){var n=[s,t,{name:t},e];return i("storeEventMetrics",n,null,"api"),n}var i=t("handle"),a="sm",s="cm";e.exports={constants:{SUPPORTABILITY_METRIC:a,CUSTOM_METRIC:s},recordSupportability:r,recordCustom:o}},{}],26:[function(t,e,n){function r(){return s.exists&&performance.now?Math.round(performance.now()):(i=Math.max((new Date).getTime(),i))-a}function o(){return i}var i=(new Date).getTime(),a=i,s=t(34);e.exports=r,e.exports.offset=a,e.exports.getLastTimestamp=o},{}],27:[function(t,e,n){function r(t){return!(!t||!t.protocol||"file:"===t.protocol)}e.exports=r},{}],28:[function(t,e,n){function r(t,e){var n=t.getEntries();n.forEach(function(t){"first-paint"===t.name?p("timing",["fp",Math.floor(t.startTime)]):"first-contentful-paint"===t.name&&p("timing",["fcp",Math.floor(t.startTime)])})}function o(t,e){var n=t.getEntries();if(n.length>0){var r=n[n.length-1];if(c&&c<r.startTime)return;p("lcp",[r])}}function i(t){t.getEntries().forEach(function(t){t.hadRecentInput||p("cls",[t])})}function a(t){if(t instanceof v&&!g){var e=Math.round(t.timeStamp),n={type:t.type};e<=l.now()?n.fid=l.now()-e:e>l.offset&&e<=Date.now()?(e-=l.offset,n.fid=l.now()-e):e=l.now(),g=!0,p("timing",["fi",e,n])}}function s(t){"hidden"===t&&(c=l.now(),p("pageHide",[c]))}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var c,f,u,d,p=t("handle"),l=t("loader"),h=t(31),m=t(23),v=NREUM.o.EV;if("PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){f=new PerformanceObserver(r);try{f.observe({entryTypes:["paint"]})}catch(w){}u=new PerformanceObserver(o);try{u.observe({entryTypes:["largest-contentful-paint"]})}catch(w){}d=new PerformanceObserver(i);try{d.observe({type:"layout-shift",buffered:!0})}catch(w){}}if("addEventListener"in document){var g=!1,y=["click","keydown","mousedown","pointerdown","touchstart"];y.forEach(function(t){document.addEventListener(t,a,m(!1))})}h(s)}},{}],29:[function(t,e,n){function r(){function t(){return e?15&e[n++]:16*Math.random()|0}var e=null,n=0,r=window.crypto||window.msCrypto;r&&r.getRandomValues&&(e=r.getRandomValues(new Uint8Array(31)));for(var o,i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",a="",s=0;s<i.length;s++)o=i[s],"x"===o?a+=t().toString(16):"y"===o?(o=3&t()|8,a+=o.toString(16)):a+=o;return a}function o(){return a(16)}function i(){return a(32)}function a(t){function e(){return n?15&n[r++]:16*Math.random()|0}var n=null,r=0,o=window.crypto||window.msCrypto;o&&o.getRandomValues&&Uint8Array&&(n=o.getRandomValues(new Uint8Array(31)));for(var i=[],a=0;a<t;a++)i.push(e().toString(16));return i.join("")}e.exports={generateUuid:r,generateSpanId:o,generateTraceId:i}},{}],30:[function(t,e,n){function r(t,e){if(!o)return!1;if(t!==o)return!1;if(!e)return!0;if(!i)return!1;for(var n=i.split("."),r=e.split("."),a=0;a<r.length;a++)if(r[a]!==n[a])return!1;return!0}var o=null,i=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var s=navigator.userAgent,c=s.match(a);c&&s.indexOf("Chrome")===-1&&s.indexOf("Chromium")===-1&&(o="Safari",i=c[1])}e.exports={agent:o,version:i,match:r}},{}],31:[function(t,e,n){function r(t){function e(){t(s&&document[s]?document[s]:document[i]?"hidden":"visible")}"addEventListener"in document&&a&&document.addEventListener(a,e,o(!1))}var o=t(23);e.exports=r;var i,a,s;"undefined"!=typeof document.hidden?(i="hidden",a="visibilitychange",s="visibilityState"):"undefined"!=typeof document.msHidden?(i="msHidden",a="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(i="webkitHidden",a="webkitvisibilitychange",s="webkitVisibilityState")},{}],32:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],33:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],34:[function(t,e,n){e.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?f(t,c,a):a()}function n(n,r,o,i,a){if(a!==!1&&(a=!0),!l.aborted||i){t&&a&&t(n,r,o);for(var s=e(o),c=m(n),f=c.length,u=0;u<f;u++)c[u].apply(s,r);var p=d[y[n]];return p&&p.push([x,n,r,s]),s}}function i(t,e){g[t]=m(t).concat(e)}function h(t,e){var n=g[t];if(n)for(var r=0;r<n.length;r++)n[r]===e&&n.splice(r,1)}function m(t){return g[t]||[]}function v(t){return p[t]=p[t]||o(n)}function w(t,e){l.aborted||u(t,function(t,n){e=e||"feature",y[n]=e,e in d||(d[e]=[])})}var g={},y={},x={on:i,addEventListener:i,removeEventListener:h,emit:n,get:v,listeners:m,context:e,buffer:w,abort:s,aborted:!1};return x}function i(t){return f(t,c,a)}function a(){return new r}function s(){(d.api||d.feature)&&(l.aborted=!0,d=l.backlog={})}var c="nr@context",f=t("gos"),u=t(32),d={},p={},l=e.exports=o();e.exports.getOrSetContext=i,l.backlog=d},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!P++){var t=T.info=NREUM.info,e=v.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(t&&t.licenseKey&&t.applicationID&&e))return f.abort();c(R,function(e,n){t[e]||(t[e]=n)});var n=a();s("mark",["onload",n+T.offset],null,"api"),s("timing",["load",n]);var r=v.createElement("script");0===t.agent.indexOf("http://")||0===t.agent.indexOf("https://")?r.src=t.agent:r.src=h+"://"+t.agent,e.parentNode.insertBefore(r,e)}}function o(){"complete"===v.readyState&&i()}function i(){s("mark",["domContent",a()+T.offset],null,"api")}var a=t(26),s=t("handle"),c=t(32),f=t("ee"),u=t(30),d=t(27),p=t(21),l=t(23),h=p.getConfiguration("ssl")===!1?"http":"https",m=window,v=m.document,w="addEventListener",g="attachEvent",y=m.XMLHttpRequest,x=y&&y.prototype,b=!d(m.location);NREUM.o={ST:setTimeout,SI:m.setImmediate,CT:clearTimeout,XHR:y,REQ:m.Request,EV:m.Event,PR:m.Promise,MO:m.MutationObserver};var E=""+location,R={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-spa-1212.min.js"},O=y&&x&&x[w]&&!/CriOS/.test(navigator.userAgent),T=e.exports={offset:a.getLastTimestamp(),now:a,origin:E,features:{},xhrWrappable:O,userAgent:u,disabled:b};if(!b){t(20),t(28),v[w]?(v[w]("DOMContentLoaded",i,l(!1)),m[w]("load",r,l(!1))):(v[g]("onreadystatechange",o),m[g]("onload",r)),s("mark",["firstbyte",a.getLastTimestamp()],null,"api");var P=0}},{}],"wrap-function":[function(t,e,n){function r(t,e){function n(e,n,r,c,f){function nrWrapper(){var i,a,u,p;try{a=this,i=d(arguments),u="function"==typeof r?r(i,a):r||{}}catch(l){o([l,"",[i,a,c],u],t)}s(n+"start",[i,a,c],u,f);try{return p=e.apply(a,i)}catch(h){throw s(n+"err",[i,a,h],u,f),h}finally{s(n+"end",[i,a,p],u,f)}}return a(e)?e:(n||(n=""),nrWrapper[p]=e,i(e,nrWrapper,t),nrWrapper)}function r(t,e,r,o,i){r||(r="");var s,c,f,u="-"===r.charAt(0);for(f=0;f<e.length;f++)c=e[f],s=t[c],a(s)||(t[c]=n(s,u?c+r:r,o,c,i))}function s(n,r,i,a){if(!h||e){var s=h;h=!0;try{t.emit(n,r,i,e,a)}catch(c){o([c,n,r,i],t)}h=s}}return t||(t=u),n.inPlace=r,n.flag=p,n}function o(t,e){e||(e=u);try{e.emit("internal-error",t)}catch(n){}}function i(t,e,n){if(Object.defineProperty&&Object.keys)try{var r=Object.keys(t);return r.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(i){o([i],n)}for(var a in t)l.call(t,a)&&(e[a]=t[a]);return e}function a(t){return!(t&&t instanceof Function&&t.apply&&!t[p])}function s(t,e){var n=e(t);return n[p]=t,i(t,n,u),n}function c(t,e,n){var r=t[e];t[e]=s(r,n)}function f(){for(var t=arguments.length,e=new Array(t),n=0;n<t;++n)e[n]=arguments[n];return e}var u=t("ee"),d=t(33),p="nr@original",l=Object.prototype.hasOwnProperty,h=!1;e.exports=r,e.exports.wrapFunction=s,e.exports.wrapInPlace=c,e.exports.argsToArray=f},{}]},{},["loader",2,17,5,3,4]); ;NREUM.loader_config={accountID:"3768898",trustKey:"3768898",agentID:"1134285132",licenseKey:"NRJS-2bc9f9fb1efc463f27c",applicationID:"1134285132"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"NRJS-2bc9f9fb1efc463f27c",applicationID:"1134285132",sa:1} newrelic.addRelease("", "Remove-ControllerConfig-r-production-4dd74f6-17d951-17d94f"); </script><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Crossplane Community"><meta name=color-scheme content="light dark"><meta name=docsearch:language content="en"><meta name=generator content="Hugo 0.119.0"><link rel=preload href=/fonts/Avenir-Roman.woff2 as=font type=font/woff2 crossorigin><meta property="og:image" content="/img/crossplane-logo-og.webp"><meta property="twitter:card" content="/img/crossplane-logo-og.webp"><meta property="og:image:width" content="600"><meta property="og:image:height" content="199"><meta property="og:image:alt" content="Crossplane name and popsicle logo"><meta property="twitter:image:alt" content="Crossplane name and popsicle logo"><meta property="og:type" content="website"><meta name=twitter:site content="@crossplane_io"><meta property="og:site_name" content="Crossplane Documentation"><meta name=description content="Command reference for the Crossplane CLI"><meta property="og:url" content="https://docs.crossplane.io/v1.16/cli/command-reference/"><meta name=docsearch:modified content="November 6, 2024"><meta name=docsearch:version content="1.16"><title>Command Reference · Crossplane v1.16</title><link rel=canonical href=https://docs.crossplane.io/latest/cli/command-reference/><script>(()=>{var e=window.matchMedia("(prefers-color-scheme: dark)").matches,t=localStorage.getItem("darkSwitch")!==null&&localStorage.getItem("darkSwitch")==="dark",n=localStorage.getItem("darkSwitch")!==null&&localStorage.getItem("darkSwitch")==="light";n&&(e=!1),t||e?document.documentElement.setAttribute("color-theme","dark"):document.documentElement.setAttribute("color-theme","light")})()</script><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3 media=print onload='this.media="all"'><link rel=preconnect href=https://9UXKYX61NK-dsn.algolia.net crossorigin data-proofer-ignore><link href="https://docs.crossplane.io/scss/docs.0346bfd4a8aeace526724de64ddada78a0e5122b3b0c83b1021770d6ddef1160.css" rel=stylesheet><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=192x192 href=/android-chrome-192x192.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><link rel=manifest href=/site.webmanifest><link rel=mask-icon href=/safari-pinned-tab.svg color=#f87c44><meta name=apple-mobile-web-app-title content="Crossplane Docs"><meta name=application-name content="Crossplane Docs"><meta name=msapplication-TileColor content="#333f5b"><meta name=theme-color content="#ffffff"><meta property="og:title" content="Crossplane Docs · v1.16 · Command Reference"><meta property="og:description" content="The crossplane CLI provides utilities to make using Crossplane easier. Read the Crossplane CLI overview page for information on installing crossplane. Global flags The following flags are available …"></head><body><svg xmlns="http://www.w3.org/2000/svg" style="display:none"><symbol id="check2" viewBox="0 0 16 16"><path d="M13.854 3.646a.5.5.0 010 .708l-7 7a.5.5.0 01-.708.0l-3.5-3.5a.5.5.0 11.708-.708L6.5 10.293l6.646-6.647a.5.5.0 01.708.0z"/></symbol><symbol id="x" viewBox="0 0 16 16"><path d="M2.146 2.854a.5.5.0 11.708-.708L8 7.293l5.146-5.147a.5.5.0 01.708.708L8.707 8l5.147 5.146a.5.5.0 01-.708.708L8 8.707l-5.146 5.147a.5.5.0 01-.708-.708L7.293 8 2.146 2.854z"/></symbol><symbol id="chevron-expand" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M3.646 9.146a.5.5.0 01.708.0L8 12.793l3.646-3.647a.5.5.0 01.708.708l-4 4a.5.5.0 01-.708.0l-4-4a.5.5.0 010-.708zm0-2.292a.5.5.0 00.708.0L8 3.207l3.646 3.647a.5.5.0 00.708-.708l-4-4a.5.5.0 00-.708.0l-4 4a.5.5.0 000 .708z"/></symbol><symbol id="clipboard" viewBox="0 0 16 16"><path d="M4 1.5H3a2 2 0 00-2 2V14a2 2 0 002 2h10a2 2 0 002-2V3.5a2 2 0 00-2-2h-1v1h1a1 1 0 011 1V14a1 1 0 01-1 1H3a1 1 0 01-1-1V3.5a1 1 0 011-1h1v-1z"/><path d="M9.5 1a.5.5.0 01.5.5v1a.5.5.0 01-.5.5h-3A.5.5.0 016 2.5v-1a.5.5.0 01.5-.5h3zm-3-1A1.5 1.5.0 005 1.5v1A1.5 1.5.0 006.5 4h3A1.5 1.5.0 0011 2.5v-1A1.5 1.5.0 009.5.0h-3z"/></symbol><symbol id="plus" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8 2a.5.5.0 01.5.5v5h5a.5.5.0 010 1h-5v5a.5.5.0 01-1 0v-5h-5a.5.5.0 010-1h5v-5A.5.5.0 018 2z"/></symbol><symbol id="three-dots" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5.0 110-3 1.5 1.5.0 010 3zm5 0a1.5 1.5.0 110-3 1.5 1.5.0 010 3zm5 0a1.5 1.5.0 110-3 1.5 1.5.0 010 3z"/></symbol><symbol id="info" viewBox="0 0 16 16"><path d="M8 15A7 7 0 118 1a7 7 0 010 14zm0 1A8 8 0 108 0a8 8 0 000 16z"/><path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545.0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275.0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 11-2 0 1 1 0 012 0z"/></symbol><symbol id="check" viewBox="0 0 16 16"><path d="M8 15A7 7 0 118 1a7 7 0 010 14zm0 1A8 8 0 108 0a8 8 0 000 16z"/><path d="M10.97 4.97a.235.235.0 00-.02.022L7.477 9.417 5.384 7.323a.75.75.0 00-1.06 1.06L6.97 11.03a.75.75.0 001.079-.02l3.992-4.99A.75.75.0 0010.97 4.97z"/></symbol><symbol id="exclamation" viewBox="0 0 16 16"><path d="M8 15A7 7 0 118 1a7 7 0 010 14zm0 1A8 8 0 108 0a8 8 0 000 16z"/><path d="M7.002 11a1 1 0 112 0 1 1 0 01-2 0zM7.1 4.995a.905.905.0 111.8.0l-.35 3.507a.552.552.0 01-1.1.0L7.1 4.995z"/></symbol><symbol id="x-circle" viewBox="0 0 16 16"><path d="M8 15A7 7 0 118 1a7 7 0 010 14zm0 1A8 8 0 108 0a8 8 0 000 16z"/><path d="M4.646 4.646a.5.5.0 01.708.0L8 7.293l2.646-2.647a.5.5.0 01.708.708L8.707 8l2.647 2.646a.5.5.0 01-.708.708L8 8.707l-2.646 2.647a.5.5.0 01-.708-.708L7.293 8 4.646 5.354a.5.5.0 010-.708z"/></symbol><symbol id="fire" viewBox="0 0 16 16"><path d="M8 16c3.314.0 6-2 6-5.5.0-1.5-.5-4-2.5-6 .25 1.5-1.25 2-1.25 2C11 4 9 .5 6 0c.357 2 .5 4-2 6-1.25 1-2 2.729-2 4.5C2 14 4.686 16 8 16zm0-1c-1.657.0-3-1-3-2.75.0-.75.25-2 1.25-3C6.125 10 7 10.5 7 10.5c-.375-1.25.5-3.25 2-3.5-.179 1-.25 2 1 3 .625.5 1 1.364 1 2.25C11 14 9.657 15 8 15z"/></symbol><symbol id="search" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5.0 10-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 001.415-1.414l-3.85-3.85a1.007 1.007.0 00-.115-.1zM12 6.5a5.5 5.5.0 11-11 0 5.5 5.5.0 0111 0z"/></symbol><symbol id="clipboard-check" viewBox="0 0 16 16"><path d="M6.5.0A1.5 1.5.0 005 1.5v1A1.5 1.5.0 006.5 4h3A1.5 1.5.0 0011 2.5v-1A1.5 1.5.0 009.5.0h-3zm3 1a.5.5.0 01.5.5v1a.5.5.0 01-.5.5h-3A.5.5.0 016 2.5v-1a.5.5.0 01.5-.5h3z"/><path d="M4 1.5H3a2 2 0 00-2 2V14a2 2 0 002 2h10a2 2 0 002-2V3.5a2 2 0 00-2-2h-1v1A2.5 2.5.0 019.5 5h-3A2.5 2.5.0 014 2.5v-1zm6.854 7.354-3 3a.5.5.0 01-.708.0l-1.5-1.5a.5.5.0 01.708-.708L7.5 10.793l2.646-2.647a.5.5.0 01.708.708z"/></symbol><symbol id="pencil-square" viewBox="0 0 16 16"><path d="M15.502 1.94a.5.5.0 010 .706L14.459 3.69l-2-2L13.502.646a.5.5.0 01.707.0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5.0 00-.121.196l-.805 2.414a.25.25.0 00.316.316l2.414-.805a.5.5.0 00.196-.12l6.813-6.814z"/><path fill-rule="evenodd" d="M1 13.5A1.5 1.5.0 002.5 15h11a1.5 1.5.0 001.5-1.5v-6a.5.5.0 00-1 0v6a.5.5.0 01-.5.5h-11a.5.5.0 01-.5-.5v-11a.5.5.0 01.5-.5H9a.5.5.0 000-1H2.5A1.5 1.5.0 001 2.5v11z"/></symbol><symbol id="github" viewBox="0 0 16 16"><path d="M8 0C3.58.0.0 3.58.0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38.0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95.0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12.0.0.67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15.0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48.0 1.07-.01 1.93-.01 2.2.0.21.15.46.55.38A8.012 8.012.0 0016 8c0-4.42-3.58-8-8-8z"/></symbol><symbol id="box-arrow-up-right" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.636 3.5a.5.5.0 00-.5-.5H1.5A1.5 1.5.0 000 4.5v10A1.5 1.5.0 001.5 16h10a1.5 1.5.0 001.5-1.5V7.864a.5.5.0 00-1 0V14.5a.5.5.0 01-.5.5h-10a.5.5.0 01-.5-.5v-10a.5.5.0 01.5-.5h6.636a.5.5.0 00.5-.5z"/><path fill-rule="evenodd" d="M16 .5a.5.5.0 00-.5-.5h-5a.5.5.0 000 1h3.793L6.146 9.146a.5.5.0 10.708.708L15 1.707V5.5a.5.5.0 001 0v-5z"/></symbol></svg><header class="navbar docs-navbar navbar-expand-lg py-0 align-items-center"><div class=docs-left-toggle><button class=navbar-toggler type=button data-bs-toggle=offcanvas data-bs-target=#bdSidebar aria-controls=bdSidebar aria-label="Toggle docs content"><svg xmlns="http://www.w3.org/2000/svg" width="1.5rem" height="1.5rem" fill="currentcolor" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M2.5 11.5A.5.5.0 013 11h10a.5.5.0 010 1H3a.5.5.0 01-.5-.5zm0-4A.5.5.0 013 7h10a.5.5.0 010 1H3a.5.5.0 01-.5-.5zm0-4A.5.5.0 013 3h10a.5.5.0 010 1H3a.5.5.0 01-.5-.5z"/></svg> <span class="d-none fs-6 pe-1">Browse</span></button></div><div class="docs-right-toggle order-3"><button class=navbar-toggler type=button data-bs-toggle=offcanvas data-bs-target=#offcanvas aria-controls=offcanvas aria-label="Toggle Crossplane navigation"><svg class="bi white" aria-hidden="true"><use xlink:href="#three-dots"/></svg></button></div><div class=navbar-brand><a href=https://www.crossplane.io aria-label=Crossplane><img src=/img/crossplane-logo.svg alt="Crossplane logo" srcset="/img/crossplane-logo.svg 1x, /img/crossplane-logo.svg 2x" width=152px decoding=async data-nimg=future loading=lazy></a></div><div class="w-100 offcanvas-lg offcanvas-end" tabindex=-1 id=offcanvas aria-labelledby=offcanvasLabel><div class="offcanvas-body p-0"><div class="offcanvas-header p-0"><div class=navbar-brand><a href=https://www.crossplane.io aria-label=Crossplane><img src=/img/crossplane-logo.svg alt="Crossplane logo" srcset="/img/crossplane-logo.svg 1x, /img/crossplane-logo.svg 2x" width=152px decoding=async data-nimg=future loading=lazy></a></div><button type=button class="btn-close btn-close-white" data-bs-dismiss=offcanvas aria-label=Close data-bs-target=#offcanvas></button></div><div class="navbar-center-links collapse navbar-collapse justify-content-evenly show"><ul class="navbar-nav align-items-center"><li class=nav-item><a class=navbar-link href=https://www.crossplane.io/why-control-planes>Why Control Planes?</a></li><li class=nav-item><a class=navbar-link aria-current=page href=https://docs.crossplane.io/>Documentation</a></li><li class=nav-item><a class=navbar-link href=https://www.crossplane.io/community>Community</a></li><li class=nav-item><a class=navbar-link href=https://blog.crossplane.io/>Blog</a></li></ul></div><div class="navbar-icons flex-shrink-1 show"><ul class=navbar-nav><li class="nav-item col-xs p-2"><a class=navbar-link href=https://github.com/crossplane title="Crossplane Github Repository" target=_blank rel=noopener><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentcolor" class="icon-github" viewBox="0 0 16 16"><path d="M8 0C3.58.0.0 3.58.0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38.0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95.0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12.0.0.67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15.0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48.0 1.07-.01 1.93-.01 2.2.0.21.15.46.55.38A8.012 8.012.0 0016 8c0-4.42-3.58-8-8-8z"/></svg><span class=icon-label>Crossplane GitHub</span></a></li><li class="nav-item col-xs p-2"><div id=slack><a class=navbar-link href=https://slack.crossplane.io title="Join the Crossplane Slack" target=_blank rel=noopener><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentcolor" class="icon-slack" viewBox="0 0 16 16"><path d="M3.362 10.11c0 .926-.756 1.681-1.681 1.681S0 11.036.0 10.111C0 9.186.756 8.43 1.68 8.43h1.682v1.68zm.846.0c0-.924.756-1.68 1.681-1.68s1.681.756 1.681 1.68v4.21c0 .924-.756 1.68-1.68 1.68a1.685 1.685.0 01-1.682-1.68v-4.21zM5.89 3.362c-.926.0-1.682-.756-1.682-1.681S4.964.0 5.89.0s1.68.756 1.68 1.68v1.682H5.89zm0 .846c.924.0 1.68.756 1.68 1.681S6.814 7.57 5.89 7.57H1.68C.757 7.57.0 6.814.0 5.89c0-.926.756-1.682 1.68-1.682h4.21zm6.749 1.682c0-.926.755-1.682 1.68-1.682.925.0 1.681.756 1.681 1.681s-.756 1.681-1.68 1.681h-1.681V5.89zm-.848.0c0 .924-.755 1.68-1.68 1.68A1.685 1.685.0 018.43 5.89V1.68C8.43.757 9.186.0 10.11.0c.926.0 1.681.756 1.681 1.68v4.21zm-1.681 6.748c.926.0 1.682.756 1.682 1.681S11.036 16 10.11 16s-1.681-.756-1.681-1.68v-1.682h1.68zm0-.847c-.924.0-1.68-.755-1.68-1.68.0-.925.756-1.681 1.68-1.681h4.21c.924.0 1.68.756 1.68 1.68.0.926-.756 1.681-1.68 1.681h-4.21z"/></svg><span class=icon-label>Crossplane Slack</span></a></div></li><li class="nav-item col-x p-2"><div class="vr d-lg-flex mx-lg-2 text-white"></div></li><li class="nav-item col-xs p-2"><div class="form-check form-switch color-switcher"><input class="d-flex form-check-input" type=checkbox id=darkSwitch> <label class="d-flex navbar-link form-check-label" for=darkSwitch>Dark Mode</label></div></li></ul></div></div></div></header><div class="bd-layout docs-container" data-bs-spy=scroll data-bs-target=#TableOfContents data-bs-threshold=0,1 data-bs-root-margin="0% 0% -75%"><aside class=bd-sidebar><div class="offcanvas-lg offcanvas-start bd-sidebar-container" tabindex=-1 id=bdSidebar aria-labelledby=bdSidebarOffcanvasLabel><div class="offcanvas-header pb-4 border-bottom"><div class="d-flex offcanvas-title fw-bold" id=bdNavbarOffcanvasLabel>Crossplane Documentation - v1.16</div><div class=d-flex><button type=button class="btn-close bi align-self-center p-0" data-bs-dismiss=offcanvas aria-label=Close data-bs-target=#bdSidebar></button></div></div><div class=offcanvas-body><div class="container-fluid p-0"><div class="search-container d-flex row pt-3 ps-4 docsearch opacity-50" data-bs-target=#bdSidebar data-bs-dismiss=offcanvas aria-label="Docs navigation"><div class=p-0 id=docSearch></div></div><nav class="bd-links-nav w-100" aria-label="Docs navigation"><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/>Overview</a></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/getting-started/>Getting Started</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand Getting Started Section"> <label for=collapse-ddb170dc class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-ddb170dc aria-expanded=false aria-label="Close or Expand Getting Started Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-ddb170dc><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/getting-started/introduction/>Crossplane Introduction</a></div></div><div class="container flex-row collapse" id=collapse-ddb170dc><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/getting-started/provider-aws/>AWS Quickstart</a></div></div><div class="container flex-row collapse" id=collapse-ddb170dc><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/getting-started/provider-azure/>Azure Quickstart</a></div></div><div class="container flex-row collapse" id=collapse-ddb170dc><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/getting-started/provider-gcp/>GCP Quickstart</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/software/>Install, Upgrade and Uninstall</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand Install, Upgrade and Uninstall Section"> <label for=collapse-9f2b1e08 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-9f2b1e08 aria-expanded=false aria-label="Close or Expand Install, Upgrade and Uninstall Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-9f2b1e08><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/software/install/>Install Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-9f2b1e08><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/software/upgrade/>Upgrade Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-9f2b1e08><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/software/uninstall/>Uninstall Crossplane</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/concepts/>Concepts</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand Concepts Section"> <label for=collapse-9e31ed45 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-9e31ed45 aria-expanded=false aria-label="Close or Expand Concepts Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/pods/>Crossplane Pods</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/providers/>Providers</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/managed-resources/>Managed Resources</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/compositions/>Compositions</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/composition-revisions/>Composition Revisions</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/composite-resource-definitions/>Composite Resource Definitions</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/composite-resources/>Composite Resources</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/claims/>Claims</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/patch-and-transform/>Patch and Transforms</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/environment-configs/>Environment Configurations</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/composition-functions/>Composition Functions</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/usages/>Usages</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/connection-details/>Connection Details</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/packages/>Configuration Packages</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/server-side-apply/>Server-Side Apply</a></div></div><div class="container flex-row collapse" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/image-configs/>Image Configs</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/guides/>Guides</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand Guides Section"> <label for=collapse-c8ab9da3 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-c8ab9da3 aria-expanded=false aria-label="Close or Expand Guides Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/disaster-recovery/>Disaster Recovery with Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/write-a-composition-function-in-go/>Write a Composition Function in Go</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/write-a-composition-function-in-python/>Write a Composition Function in Python</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/import-existing-resources/>Import Existing Resources</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/vault-as-secret-store/>Vault as an External Secret Store</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/vault-injection/>Vault Credential Injection</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/multi-tenant/>Multi-Tenant Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/crossplane-with-argo-cd/>Configuring Crossplane with Argo CD</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/self-signed-ca-certs/>Self-Signed CA Certs</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/troubleshoot-crossplane/>Troubleshoot Crossplane</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100 active-parent"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/cli/>CLI Reference</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" checked aria-label="Close or Expand CLI Reference Section"> <label for=collapse-2f1c64f4 class=sidebar-label data-bs-toggle=collapse data-bs-target=#collapse-2f1c64f4 aria-expanded=false aria-label="Close or Expand CLI Reference Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse show" id=collapse-2f1c64f4><div class="d-flex flex-column"><a class="bd-links d-flex active" href=https://docs.crossplane.io/v1.16/cli/command-reference/>Command Reference</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/api/>API Reference</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand API Reference Section"> <label for=collapse-569451c8 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-569451c8 aria-expanded=false aria-label="Close or Expand API Reference Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/learn/>Learn More</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand Learn More Section"> <label for=collapse-47924500 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-47924500 aria-expanded=false aria-label="Close or Expand Learn More Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-47924500><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/learn/release-cycle/>Release Cycle</a></div></div><div class="container flex-row collapse" id=collapse-47924500><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/learn/feature-lifecycle/>Feature Lifecycle</a></div></div></div><div class="section-container container pe-0 pt-1"><div class=nav-container><a href=https://docs.crossplane.io/contribute/ class="d-inline-flex align-items-center">Contributing Guide</a></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href="https://github.com/orgs/crossplane/projects/20/views/9?pane=info" target=_blank>Crossplane Roadmap</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><a href="https://github.com/orgs/crossplane/projects/20/views/9?pane=info"><svg class="flex bi"><use xlink:href="#box-arrow-up-right"/></svg></a></div></div></div></nav></div></div></aside><main class="bd-main order-1"><div class="bd-intro pt-2 ps-lg-2"><div class="d-md-flex flex-md-row-reverse align-items-center justify-content-between"><div class="mb-3 mb-md-0 d-flex"><div class="dropdown float-end bd-dropdown"><a class="btn btn-outline-secondary dropdown-toggle bd-dropdown-item text-reset" href=# role=button id=dropdownMenuLink data-bs-toggle=dropdown aria-haspopup=true aria-expanded=false>v1.16</a><div class="dropdown-menu bd-border-color bd-dropdown" aria-labelledby=dropdownMenuLink><a class="dropdown-item bd-dropdown-item" href=https://docs.crossplane.io/master/cli/command-reference/>master</a> <a class="dropdown-item bd-dropdown-item" href=https://docs.crossplane.io/v1.18/cli/command-reference/>v1.18<div class="badge rounded-pill latest">Latest</div></a><a class="dropdown-item bd-dropdown-item" href=https://docs.crossplane.io/v1.17/cli/command-reference/>v1.17</a> <a class="dropdown-item bd-dropdown-item active" aria-current=true href=https://docs.crossplane.io/v1.16/cli/command-reference/>v1.16</a></div></div></div><h1 class="bd-title mb-0" id=content>Command Reference</h1></div></div><div class="bd-toc mt-3 mb-5 my-lg-0 ps-xl-3 mb-lg-5"><button class="btn btn-link p-md-0 mb-2 mb-md-0 text-decoration-none bd-toc-toggle d-md-none" type=button data-bs-toggle=collapse data-bs-target=#tocContents aria-expanded=false aria-controls=tocContents> On this page<svg class="bi d-md-none ms-2" aria-hidden="true"><use xlink:href="#chevron-expand"/></svg></button> <strong class="d-none d-md-block h6 my-2">On this page</strong><hr class="d-none d-md-block my-2"><div class="collapse bd-toc-collapse" id=tocContents><nav id=TableOfContents><ul class=nav><li class=nav-item><a class=nav-link href=#global-flags>Global flags</a></li><li class=nav-item><a class=nav-link href=#version>version</a></li><li class=nav-item><a class=nav-link href=#xpkg>xpkg</a><ul class=nav><li class=nav-item><a class=nav-link href=#xpkg-build>xpkg build</a><ul class=nav><li class=nav-item><a class=nav-link href=#flags>Flags</a></li><li class=nav-item><a class=nav-link href=#ignore-files>Ignore files</a></li><li class=nav-item><a class=nav-link href=#set-the-package-name>Set the package name</a></li><li class=nav-item><a class=nav-link href=#include-examples>Include examples</a></li><li class=nav-item><a class=nav-link href=#include-a-runtime-image>Include a runtime image</a></li></ul></li><li class=nav-item><a class=nav-link href=#xpkg-install>xpkg install</a><ul class=nav><li class=nav-item><a class=nav-link href=#flags-1>Flags</a></li><li class=nav-item><a class=nav-link href=#wait-for-package-install>Wait for package install</a></li><li class=nav-item><a class=nav-link href=#require-manual-package-activation>Require manual package activation</a></li><li class=nav-item><a class=nav-link href=#authenticate-to-a-private-registry>Authenticate to a private registry</a></li><li class=nav-item><a class=nav-link href=#customize-the-number-of-stored-package-versions>Customize the number of stored package versions</a></li></ul></li><li class=nav-item><a class=nav-link href=#xpkg-login>xpkg login</a><ul class=nav><li class=nav-item><a class=nav-link href=#flags-2>Flags</a></li><li class=nav-item><a class=nav-link href=#authentication-options>Authentication options</a></li><li class=nav-item><a class=nav-link href=#authenticate-with-a-registered-upbound-organization>Authenticate with a registered Upbound organization</a></li></ul></li><li class=nav-item><a class=nav-link href=#xpkg-logout>xpkg logout</a></li><li class=nav-item><a class=nav-link href=#xpkg-push>xpkg push</a><ul class=nav><li class=nav-item><a class=nav-link href=#flags-3>Flags</a></li></ul></li><li class=nav-item><a class=nav-link href=#xpkg-update>xpkg update</a></li></ul></li><li class=nav-item><a class=nav-link href=#beta>beta</a><ul class=nav><li class=nav-item><a class=nav-link href=#beta-convert>beta convert</a><ul class=nav><li class=nav-item><a class=nav-link href=#flags-4>Flags</a></li></ul></li><li class=nav-item><a class=nav-link href=#beta-render>beta render</a><ul class=nav><li class=nav-item><a class=nav-link href=#flags-5>Flags</a></li><li class=nav-item><a class=nav-link href=#provide-function-context>Provide function context</a></li><li class=nav-item><a class=nav-link href=#include-function-results>Include function results</a></li><li class=nav-item><a class=nav-link href=#include-the-composite-resource>Include the composite resource</a></li><li class=nav-item><a class=nav-link href=#mock-managed-resources>Mock managed resources</a></li></ul></li><li class=nav-item><a class=nav-link href=#beta-top>beta top</a><ul class=nav><li class=nav-item><a class=nav-link href=#flags-6>Flags</a></li></ul></li><li class=nav-item><a class=nav-link href=#beta-trace>beta trace</a><ul class=nav><li class=nav-item><a class=nav-link href=#flags-7>Flags</a></li><li class=nav-item><a class=nav-link href=#output-options>Output options</a></li><li class=nav-item><a class=nav-link href=#wide-outputs>Wide outputs</a></li><li class=nav-item><a class=nav-link href=#graphviz-dot-file-output>Graphviz dot file output</a></li><li class=nav-item><a class=nav-link href=#print-connection-secrets>Print connection secrets</a></li><li class=nav-item><a class=nav-link href=#print-package-dependencies>Print package dependencies</a></li><li class=nav-item><a class=nav-link href=#print-package-revisions>Print package revisions</a></li></ul></li><li class=nav-item><a class=nav-link href=#beta-validate>beta validate</a><ul class=nav><li class=nav-item><a class=nav-link href=#flags-8>Flags</a></li><li class=nav-item><a class=nav-link href=#validate-resources-against-a-schema>Validate resources against a schema</a></li><li class=nav-item><a class=nav-link href=#validate-render-command-output>Validate render command output</a></li><li class=nav-item><a class=nav-link href=#validate-common-expression-language-rules>Validate Common Expression Language rules</a></li><li class=nav-item><a class=nav-link href=#validate-against-a-directory-of-schemas>Validate against a directory of schemas</a></li></ul></li><li class=nav-item><a class=nav-link href=#beta-xpkg-init>beta xpkg init</a><ul class=nav><li class=nav-item><a class=nav-link href=#notestxt>NOTES.txt</a></li><li class=nav-item><a class=nav-link href=#initsh>init.sh</a></li><li class=nav-item><a class=nav-link href=#flags-9>Flags</a></li></ul></li></ul></li></ul></li></ul></nav><nav class=pt-3><div class=pb-2><svg class="bi" width="1em" height="1em"><use xlink:href="#pencil-square"/></svg><span class=ps-1><a target=_blank href="https://github.com/crossplane/docs/issues/new?title=[Web%20Bug]%20-%20Command%20Reference&body=%3c!--%20What%27s%20the%20problem?%20--%3e%0a%0a%0aURL:%20https://docs.crossplane.io/v1.16/cli/command-reference/">Report a problem</a></span></div><div><svg class="bi" width="1em" height="1em"><use xlink:href="#github"/></svg><span class=ps-1><a href=https://github.com/crossplane/docs/tree/master/content/v1.16/cli/command-reference.md>View page source</a></span></div></div></nav></div><div class="bd-content ps-lg-2 DocSearch-content"><div class="bd-callout bd-callout-info d-flex flex-column w-100"><div class="d-flex bd-title fs-6 fw-bold border-bottom border-info"><div class="d-flex pe-3 align-self-center"><svg class="bi flex-shrink-0" role="img" aria-label="Info:"><use xlink:href="#info"/></svg></div><div class=d-flex>This document is for an older version of Crossplane.</div></div><div class=mt-3><p>This document applies to Crossplane version v1.16 and not to the latest release v1.18.</p></div></div><p>The <code>crossplane</code> CLI provides utilities to make using Crossplane easier.</p><p>Read the <a href=https://docs.crossplane.io/v1.16/cli/>Crossplane CLI overview</a> page for information on installing <code>crossplane</code>.</p><h2 id=global-flags>Global flags <a class=anchor-link id=global-flags href=#global-flags aria-label="Link to this section: Global flags"></a></h2><p>The following flags are available for all commands.</p><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td><code>-h</code></td><td><code>--help</code></td><td>Show context sensitive help.</td></tr><tr><td></td><td><code>--verbose</code></td><td>Print verbose output.</td></tr></tbody></table></div><h2 id=version>version <a class=anchor-link id=version href=#version aria-label="Link to this section: version"></a></h2><p>The <code>crossplane version</code> command returns the version of Crossplane CLI and the control plane.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-0-1><a class=lnlinks href=#hl-0-1>1</a></span><span class=cl>crossplane version </span></span><span class=line><span class=ln id=hl-0-2><a class=lnlinks href=#hl-0-2>2</a></span><span class=cl>Client Version: v1.16.0 </span></span><span class=line><span class=ln id=hl-0-3><a class=lnlinks href=#hl-0-3>3</a></span><span class=cl>Server Version: v1.16.0 </span></span></code></pre></div><h2 id=xpkg>xpkg <a class=anchor-link id=xpkg href=#xpkg aria-label="Link to this section: xpkg"></a></h2><p>The <code>crossplane xpkg</code> commands create, install and update Crossplane <a href=https://docs.crossplane.io/v1.16/concepts/packages/>packages</a> as well as enable authentication and publishing of Crossplane packages to a Crossplane package registry.</p><h3 id=xpkg-build>xpkg build <a class=anchor-link id=xpkg-build href=#xpkg-build aria-label="Link to this section: xpkg build"></a></h3><p>Using <code>crossplane xpkg build</code> provides automation and simplification to build Crossplane packages.</p><p>The Crossplane CLI combines a directory of YAML files and packages them as an <a href=https://opencontainers.org/>OCI container image</a>.</p><p>The CLI applies the required annotations and values to meet the <a href=https://github.com/crossplane/crossplane/blob/main/contributing/specifications/xpkg.md>Crossplane XPKG specification</a>.</p><p>The <code>crossplane</code> CLI supports building <a href=https://docs.crossplane.io/v1.16/concepts/packages/>configuration</a>, <a href=https://docs.crossplane.io/v1.16/concepts/composition-functions/>function</a> and <a href=https://docs.crossplane.io/v1.16/concepts/providers/>provider</a> package types.</p><h4 id=flags>Flags <a class=anchor-link id=flags href=#flags aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td></td><td><code>--embed-runtime-image-name=NAME</code></td><td>The image name and tag of an image to include in the package. Only for provider and function packages.</td></tr><tr><td></td><td><code>--embed-runtime-image-tarball=PATH</code></td><td>The filename of an image to include in the package. Only for provider and function packages.</td></tr><tr><td><code>-e</code></td><td><code>--examples-root="./examples"</code></td><td>The path to a directory of examples related to the package.</td></tr><tr><td></td><td><code>--ignore=PATH,...</code></td><td>List of files and directories to ignore.</td></tr><tr><td><code>-o</code></td><td><code>--package-file=PATH</code></td><td>Directory and filename of the created package.</td></tr><tr><td><code>-f</code></td><td><code>--package-root="."</code></td><td>Directory to search for YAML files.</td></tr></tbody></table></div><p>The <code>crossplane xpkg build</code> command recursively looks in the directory set by <code>--package-root</code> and attempts to combine any files ending in <code>.yml</code> or <code>.yaml</code> into a package.</p><p>All YAML files must be valid Kubernetes manifests with <code>apiVersion</code>, <code>kind</code>, <code>metadata</code> and <code>spec</code> fields.</p><h4 id=ignore-files>Ignore files <a class=anchor-link id=ignore-files href=#ignore-files aria-label="Link to this section: Ignore files"></a></h4><p>Use <code>--ignore</code> to provide a list of files and directories to ignore.</p><p>For example,<br><code>crossplane xpkg build --ignore="./test/*,kind-config.yaml"</code></p><h4 id=set-the-package-name>Set the package name <a class=anchor-link id=set-the-package-name href=#set-the-package-name aria-label="Link to this section: Set the package name"></a></h4><p><code>crossplane</code> automatically names the new package a combination of the <code>metadata.name</code> and a hash of the package contents and saves the contents in the same location as <code>--package-root</code>. Define a specific location and filename with <code>--package-file</code> or <code>-o</code>.</p><p>For example,<br><code>crossplane xpkg build -o /home/crossplane/example.xpkg</code>.</p><h4 id=include-examples>Include examples <a class=anchor-link id=include-examples href=#include-examples aria-label="Link to this section: Include examples"></a></h4><p>Include YAML files demonstrating how to use the package with <code>--examples-root</code>.</p><p><a href=https://marketplace.upbound.io/>Upbound Marketplace</a> uses files included with <code>--examples-root</code> as documentation for published packages.</p><h4 id=include-a-runtime-image>Include a runtime image <a class=anchor-link id=include-a-runtime-image href=#include-a-runtime-image aria-label="Link to this section: Include a runtime image"></a></h4><p>Functions and Providers require YAML files describing their dependencies and settings as well as a container image for their runtime.</p><p>Using <code>--embed-runtime-image-name</code> runs a specified image and includes the image inside the function or provider package.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content><p>Images referenced with <code>--embed-runtime-image-name</code> must be in the local Docker cache.</p><p>Use <code>docker pull</code> to download a missing image.</p></div></div><p>The <code>--embed-runtime-image-tarball</code> flag includes a local OCI image tarball inside the function or provider package.</p><h3 id=xpkg-install>xpkg install <a class=anchor-link id=xpkg-install href=#xpkg-install aria-label="Link to this section: xpkg install"></a></h3><p>Download and install packages into Crossplane with <code>crossplane xpkg install</code>.</p><p>By default the <code>crossplane xpkg install</code> command uses the Kubernetes configuration defined in <code>~/.kube/config</code>.</p><p>Define a custom Kubernetes configuration file location with the environmental variable <code>KUBECONFIG</code>.</p><p>Specify the package kind, package file and optionally a name to give the package inside Crossplane.</p><p><code>crossplane xpkg install <package-kind> <registry URL package name and tag> [<optional-name>]</code></p><p>The <code><package-kind></code> is either a <code>configuration</code>, <code>function</code> or <code>provider</code>.</p><p>For example, to install version 0.42.0 of the <a href=https://marketplace.upbound.io/providers/upbound/provider-aws-s3/v0.42.0>AWS S3 provider</a>:</p><p><code>crossplane xpkg install provider xpkg.upbound.io/upbound/provider-aws-s3:v1.17.0</code></p><h4 id=flags-1>Flags <a class=anchor-link id=flags-1 href=#flags-1 aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td></td><td><code>--runtime-config=<runtime config name></code></td><td>Install the package with a runtime configuration.</td></tr><tr><td><code>-m</code></td><td><code>--manual-activation</code></td><td>Set the <code>revisionActiviationPolicy</code> to <code>Manual</code>.</td></tr><tr><td></td><td><code>--package-pull-secrets=<list of secrets></code></td><td>A comma-separated list of Kubernetes secrets to use for authenticating to the package registry.</td></tr><tr><td><code>-r</code></td><td><code>--revision-history-limit=<number of revisions></code></td><td>Set the <code>revisionHistoryLimit</code>. Defaults to <code>1</code>.</td></tr><tr><td><code>-w</code></td><td><code>--wait=<number of seconds></code></td><td>Number of seconds to wait for a package to install.</td></tr></tbody></table></div><h4 id=wait-for-package-install>Wait for package install <a class=anchor-link id=wait-for-package-install href=#wait-for-package-install aria-label="Link to this section: Wait for package install"></a></h4><p>When installing a package the <code>crossplane xpkg install</code> command doesn’t wait for the package to download and install. View any download or installation problems by inspecting the <code>configuration</code> with <code>kubectl describe configuration</code>.</p><p>Use <code>--wait</code> to have the <code>crossplane xpkg install</code> command to wait for a package to have the condition <code>HEALTHY</code> before continuing. The command returns an error if the <code>wait</code> time expires before the package is <code>HEALTHY</code>.</p><h4 id=require-manual-package-activation>Require manual package activation <a class=anchor-link id=require-manual-package-activation href=#require-manual-package-activation aria-label="Link to this section: Require manual package activation"></a></h4><p>Set the package to require <a href=https://docs.crossplane.io/v1.16/concepts/packages/#revision-activation-policy>manual activation</a>, preventing an automatic upgrade of a package with <code>--manual-activation</code></p><h4 id=authenticate-to-a-private-registry>Authenticate to a private registry <a class=anchor-link id=authenticate-to-a-private-registry href=#authenticate-to-a-private-registry aria-label="Link to this section: Authenticate to a private registry"></a></h4><p>To authenticate to a private package registry use <code>--package-pull-secrets</code> and provide a list of Kubernetes Secret objects.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content>The secrets must be in the same namespace as the Crossplane pod.</div></div><h4 id=customize-the-number-of-stored-package-versions>Customize the number of stored package versions <a class=anchor-link id=customize-the-number-of-stored-package-versions href=#customize-the-number-of-stored-package-versions aria-label="Link to this section: Customize the number of stored package versions"></a></h4><p>By default Crossplane only stores a single inactive package in the local package cache.</p><p>Store more inactive copies of a package with <code>--revision-history-limit</code>.</p><p>Read more about <a href=https://docs.crossplane.io/v1.16/concepts/packages/#configuration-revisions>package revisions</a> in the package documentation.</p><h3 id=xpkg-login>xpkg login <a class=anchor-link id=xpkg-login href=#xpkg-login aria-label="Link to this section: xpkg login"></a></h3><p>Use <code>xpkg login</code> to authenticate to <code>xpkg.upbound.io</code>, the <a href=https://marketplace.upbound.io/>Upbound Marketplace</a> container registry.</p><p><a href=https://accounts.upbound.io/register>Register with the Upbound Marketplace</a> to push packages and create private repositories.</p><h4 id=flags-2>Flags <a class=anchor-link id=flags-2 href=#flags-2 aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td><code>-u</code></td><td><code>--username=<username></code></td><td>Username to use for authentication.</td></tr><tr><td><code>-p</code></td><td><code>--password=<password></code></td><td>Password to use for authentication.</td></tr><tr><td><code>-t</code></td><td><code>--token=<token string></code></td><td>User token string to use for authentication.</td></tr><tr><td><code>-a</code></td><td><code>--account=<organization></code></td><td>Specify an Upbound organization during authentication.</td></tr></tbody></table></div><h4 id=authentication-options>Authentication options <a class=anchor-link id=authentication-options href=#authentication-options aria-label="Link to this section: Authentication options"></a></h4><p>The <code>crossplane xpkg login</code> command can use a username and password or Upbound API token.</p><p>By default, <code>crossplane xpkg login</code> without arguments, prompts for a username and password.</p><p>Provide a username and password with the <code>--username</code> and <code>--password</code> flags or set the environmental variable <code>UP_USER</code> for a username or <code>UP_PASSWORD</code> for the password.</p><p>Use an Upbound user token instead of a username and password with <code>--token</code> or the <code>UP_TOKEN</code> environmental variable.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content>The <code>--token</code> or <code>UP_TOKEN</code> environmental variables take precedence over a username and password.</div></div><p>Using <code>-</code> as the input for <code>--password</code> or <code>--token</code> reads the input from stdin.<br>For example, <code>crossplane xpkg login --password -</code>.</p><p>After logging in the Crossplane CLI creates a <code>profile</code> in <code>.crossplane/config.json</code> to cache unprivileged account information.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content><p>The <code>session</code> field of <code>config.json</code> file is a session cookie identifier.</p><p>The <code>session</code> value isn’t used for authentication. This isn’t a <code>token</code>.</p></div></div><h4 id=authenticate-with-a-registered-upbound-organization>Authenticate with a registered Upbound organization <a class=anchor-link id=authenticate-with-a-registered-upbound-organization href=#authenticate-with-a-registered-upbound-organization aria-label="Link to this section: Authenticate with a registered Upbound organization"></a></h4><p>Authenticate to a registered organization in the Upbound Marketplace with the <code>--account</code> option, along with the username and password or token.</p><p>For example, <code>crossplane xpkg login --account=Upbound --username=my-user --password -</code>.</p><h3 id=xpkg-logout>xpkg logout <a class=anchor-link id=xpkg-logout href=#xpkg-logout aria-label="Link to this section: xpkg logout"></a></h3><p>Use <code>crossplane xpkg logout</code> to invalidate the current <code>crossplane xpkg login</code> session.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content>Using <code>crossplane xpkg logout</code> removes the <code>session</code> from the <code>~/.crossplane/config.json</code> file, but doesn’t delete the configuration file.</div></div><h3 id=xpkg-push>xpkg push <a class=anchor-link id=xpkg-push href=#xpkg-push aria-label="Link to this section: xpkg push"></a></h3><p>Push a Crossplane package file to a package registry.</p><p>The Crossplane CLI pushes images to the <a href=https://marketplace.upbound.io/>Upbound Marketplace</a> at <code>xpkg.upbound.io</code> by default.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content>Pushing a package may require authentication with <a href=#xpkg-login><code>crossplane xpkg login</code></a></div></div><p>Specify the organization, package name and tag with<br><code>crossplane xpkg push <package></code></p><p>By default the command looks in the current directory for a single <code>.xpkg</code> file to push.</p><p>To push multiple files or to specify a specific <code>.xpkg</code> file use the <code>-f</code> flag.</p><p>For example, to push a local package named <code>my-package</code> to <code>crossplane-docs/my-package:v0.14.0</code> use:</p><p><code>crossplane xpkg push -f my-package.xpkg crossplane-docs/my-package:v0.14.0</code></p><p>To push to another package registry, like <a href=https://hub.docker.com/>DockerHub</a> provide the full URL along with the package name.</p><p>For example, to push a local package named <code>my-package</code> to DockerHub organization <code>crossplane-docs/my-package:v0.14.0</code> use: <code>crossplane xpkg push -f my-package.xpkg index.docker.io/crossplane-docs/my-package:v0.14.0</code>.</p><h4 id=flags-3>Flags <a class=anchor-link id=flags-3 href=#flags-3 aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td><code>-f</code></td><td><code>--package-files=PATH</code></td><td>A comma-separated list of xpkg files to push.</td></tr></tbody></table></div><h3 id=xpkg-update>xpkg update <a class=anchor-link id=xpkg-update href=#xpkg-update aria-label="Link to this section: xpkg update"></a></h3><p>The <code>crossplane xpkg update</code> command downloads and updates an existing package.</p><p>By default the <code>crossplane xpkg update</code> command uses the Kubernetes configuration defined in <code>~/.kube/config</code>.</p><p>Define a custom Kubernetes configuration file location with the environmental variable <code>KUBECONFIG</code>.</p><p>Specify the package kind, package file and optionally the name of the package already installed in Crossplane.</p><p><code>crossplane xpkg update <package-kind> <registry package name and tag> [<optional-name>]</code></p><p>The package file must be an organization, image and tag on the <code>xpkg.upbound.io</code> registry on <a href=https://marketplace.upbound.io/>Upbound Marketplace</a>.</p><p>For example, to update to version 0.42.0 of the <a href=https://marketplace.upbound.io/providers/upbound/provider-aws-s3/v0.42.0>AWS S3 provider</a>:</p><p><code>crossplane xpkg update provider xpkg.upbound.io/upbound/provider-aws-s3:v1.17.0</code></p><h2 id=beta>beta <a class=anchor-link id=beta href=#beta aria-label="Link to this section: beta"></a></h2><p>Crossplane <code>beta</code> commands are experimental. These commands may change the flags, options or outputs in future releases.</p><p>Crossplane maintainers may promote or remove commands under <code>beta</code> in future releases.</p><h3 id=beta-convert>beta convert <a class=anchor-link id=beta-convert href=#beta-convert aria-label="Link to this section: beta convert"></a></h3><p>As Crossplane evolves, its APIs and resources may change. To help with the migration to the new APIs and resources, the <code>crossplane beta convert</code> command converts a Crossplane resource to a new version or kind.</p><p>Use the <code>crossplane beta convert</code> command to convert an existing <a href=https://docs.crossplane.io/v1.16/concepts/providers/#controller-configuration>ControllerConfig</a> to a <a href=https://docs.crossplane.io/v1.16/concepts/providers/#runtime-configuration>DeploymentRuntimeConfig</a> or a Composition using <a href=https://docs.crossplane.io/v1.16/concepts/patch-and-transform/>patch and transforms</a> to a <a href=https://docs.crossplane.io/v1.16/concepts/compositions/#use-composition-functions>Composition pipeline function</a>.</p><p>Provide the <code>crossplane beta convert</code> command the conversion type, the input file and optionally, an output file. By default the command writes the output to standard out.</p><p>For example, to convert a ControllerConfig to a DeploymentRuntimeConfig use <code>crossplane beta convert deployment-runtime</code>. For example,</p><p><code>crossplane beta convert deployment-runtime controllerConfig.yaml -o deploymentConfig.yaml</code></p><p>To convert a Composition using patch and transforms to a pipeline function, use <code>crossplane beta convert pipeline-composition</code>.</p><p>Optionally, use the <code>-f</code> flag to provide the name of the function.<br>By default the function name is “function-patch-and-transform.”</p><p><code>crossplane beta convert pipeline-composition oldComposition.yaml -o newComposition.yaml -f patchFunctionName</code></p><h4 id=flags-4>Flags <a class=anchor-link id=flags-4 href=#flags-4 aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td><code>-o</code></td><td><code>--output-file</code></td><td>The output YAML file to write. Outputs to stdout by default.</td></tr><tr><td><code>-f</code></td><td><code>--function-name</code></td><td>The name of the new function. Defaults to <code>function-patch-and-transform</code>.</td></tr></tbody></table></div><h3 id=beta-render>beta render <a class=anchor-link id=beta-render href=#beta-render aria-label="Link to this section: beta render"></a></h3><p>The <code>crossplane beta render</code> command previews the output of a <a href=https://docs.crossplane.io/v1.16/concepts/composite-resources/>composite resource</a> after applying any <a href=https://docs.crossplane.io/v1.16/concepts/composition-functions/>composition functions</a>.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content><p>The <code>crossplane beta render</code> command doesn’t apply <a href=https://docs.crossplane.io/v1.16/concepts/patch-and-transform/>patch and transform composition patches</a>.</p><p>The command only supports function “patch and transforms.”</p></div></div><p>The <code>crossplane beta render</code> command connects to the locally running Docker Engine to pull and run composition functions.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content>Running <code>crossplane beta render</code> requires <a href=https://www.docker.com/>Docker</a>.</div></div><p>Provide a composite resource, composition and composition function YAML definition with the command to render the output locally.</p><p>For example, <code>crossplane beta render xr.yaml composition.yaml function.yaml</code></p><p>The output includes the original composite resource followed by the generated managed resources.</p><div class="accordion mb-3" id=an-example-render-output-1454-Parent><div class=accordion-item><h2 class=accordion-header id=an-example-render-output-1454><button class="accordion-button collapsed" type=button data-bs-toggle=collapse data-bs-target=#an-example-render-output-1454-Content aria-expanded=false aria-controls=an-example-render-output-1454-Content> An example render output</button></h2><div id=an-example-render-output-1454-Content class="accordion-collapse collapse" aria-labelledby=an-example-render-output-1454 data-bs-parent=#an-example-render-output-1454-Parent><div class="accordion-body rounded-bottom"><div class=highlight><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-0-1><a class=lnlinks href=#hl-0-1> 1</a></span><span class=cl><span class=nn>---</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-2><a class=lnlinks href=#hl-0-2> 2</a></span><span class=cl><span class=w></span><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>nopexample.org/v1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-3><a class=lnlinks href=#hl-0-3> 3</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>XBucket</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-4><a class=lnlinks href=#hl-0-4> 4</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-5><a class=lnlinks href=#hl-0-5> 5</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>test-xrender</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-6><a class=lnlinks href=#hl-0-6> 6</a></span><span class=cl><span class=w></span><span class=nt>status</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-7><a class=lnlinks href=#hl-0-7> 7</a></span><span class=cl><span class=w> </span><span class=nt>bucketRegion</span><span class=p>:</span><span class=w> </span><span class=l>us-east-2</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-8><a class=lnlinks href=#hl-0-8> 8</a></span><span class=cl><span class=w></span><span class=nn>---</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-9><a class=lnlinks href=#hl-0-9> 9</a></span><span class=cl><span class=w></span><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>s3.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-10><a class=lnlinks href=#hl-0-10>10</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Bucket</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-11><a class=lnlinks href=#hl-0-11>11</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-12><a class=lnlinks href=#hl-0-12>12</a></span><span class=cl><span class=w> </span><span class=nt>annotations</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-13><a class=lnlinks href=#hl-0-13>13</a></span><span class=cl><span class=w> </span><span class=nt>crossplane.io/composition-resource-name</span><span class=p>:</span><span class=w> </span><span class=l>my-bucket</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-14><a class=lnlinks href=#hl-0-14>14</a></span><span class=cl><span class=w> </span><span class=nt>generateName</span><span class=p>:</span><span class=w> </span><span class=l>test-xrender-</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-15><a class=lnlinks href=#hl-0-15>15</a></span><span class=cl><span class=w> </span><span class=nt>labels</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-16><a class=lnlinks href=#hl-0-16>16</a></span><span class=cl><span class=w> </span><span class=nt>crossplane.io/composite</span><span class=p>:</span><span class=w> </span><span class=l>test-xrender</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-17><a class=lnlinks href=#hl-0-17>17</a></span><span class=cl><span class=w> </span><span class=nt>ownerReferences</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-18><a class=lnlinks href=#hl-0-18>18</a></span><span class=cl><span class=w> </span>- <span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>nopexample.org/v1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-19><a class=lnlinks href=#hl-0-19>19</a></span><span class=cl><span class=w> </span><span class=nt>blockOwnerDeletion</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-20><a class=lnlinks href=#hl-0-20>20</a></span><span class=cl><span class=w> </span><span class=nt>controller</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-21><a class=lnlinks href=#hl-0-21>21</a></span><span class=cl><span class=w> </span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>XBucket</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-22><a class=lnlinks href=#hl-0-22>22</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>test-xrender</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-23><a class=lnlinks href=#hl-0-23>23</a></span><span class=cl><span class=w> </span><span class=nt>uid</span><span class=p>:</span><span class=w> </span><span class=s2>""</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-24><a class=lnlinks href=#hl-0-24>24</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-25><a class=lnlinks href=#hl-0-25>25</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-26><a class=lnlinks href=#hl-0-26>26</a></span><span class=cl><span class=w> </span><span class=nt>region</span><span class=p>:</span><span class=w> </span><span class=l>us-east-2</span><span class=w> </span></span></span></code></pre></div></div></div></div></div><h4 id=flags-5>Flags <a class=anchor-link id=flags-5 href=#flags-5 aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td></td><td><code>--context-files=<key>=<file>,<key>=<file></code></td><td>A comma separated list of files to load for function “contexts.”</td></tr><tr><td></td><td><code>--context-values=<key>=<value>,<key>=<value></code></td><td>A comma separated list of key-value pairs to load for function “contexts.”</td></tr><tr><td><code>-r</code></td><td><code>--include-function-results</code></td><td>Include the “results” or events from the function.</td></tr><tr><td><code>-o</code></td><td><code>--observed-resources=<directory or file></code></td><td></td></tr><tr><td>Provide artificial managed resource data to the function.</td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td><code>-x</code></td><td><code>--include-full-xr</code></td><td>Include a copy of the input Composite Resource spec and metadata fields in the rendered output.</td></tr><tr><td></td><td><code>--timeout=</code></td><td>Amount of time to wait for a function to finish.</td></tr></tbody></table></div><p>The <code>crossplane beta render</code> command relies on standard <a href=https://docs.docker.com/engine/reference/commandline/cli/#environment-variables>Docker environmental variables</a> to connect to the local Docker engine and run composition functions.</p><h4 id=provide-function-context>Provide function context <a class=anchor-link id=provide-function-context href=#provide-function-context aria-label="Link to this section: Provide function context"></a></h4><p>The <code>--context-files</code> and <code>--context-values</code> flags can provide data to a function’s <code>context</code>.<br>The context is JSON formatted data.</p><h4 id=include-function-results>Include function results <a class=anchor-link id=include-function-results href=#include-function-results aria-label="Link to this section: Include function results"></a></h4><p>If a function produces Kubernetes events with statuses use the <code>--include-function-results</code> to print them along with the managed resource outputs.</p><h4 id=include-the-composite-resource>Include the composite resource <a class=anchor-link id=include-the-composite-resource href=#include-the-composite-resource aria-label="Link to this section: Include the composite resource"></a></h4><p>Composition functions can only change the <code>status</code> field of a composite resource. By default, the <code>crossplane beta render</code> command only prints the <code>status</code> field with <code>metadata.name</code>.</p><p>Use <code>--include-full-xr</code> to print the full composite resource, including the <code>spec</code> and <code>metadata</code> fields.</p><h4 id=mock-managed-resources>Mock managed resources <a class=anchor-link id=mock-managed-resources href=#mock-managed-resources aria-label="Link to this section: Mock managed resources"></a></h4><p>Provide mocked, or artificial data representing a managed resource with <code>--observed-resources</code>. The <code>crossplane beta render</code> command treats the provided inputs as if they were resources in a Crossplane cluster.</p><p>A function can reference and manipulate the included resource as part of running the function.</p><p>The <code>observed-resources</code> may be a single YAML file with multiple resources or a directory of YAML files representing multiple resources.</p><p>Inside the YAML file include an <code><highlight-term id=1731573034412008723 data-label=apiVersion data-line=1>apiVersion</highlight-term></code>, <code><highlight-term id=1731573034412064766 data-label=apiVersion data-line=2>kind</highlight-term></code>, <code><highlight-term id=1731573034412123243 data-label=apiVersion data-line=3>metadata</highlight-term></code> and <code><highlight-term id=1731573034412173526 data-label=apiVersion data-line=7>spec</highlight-term></code>.</p><div class=highlight label=apiVersion><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-1-1><a class=lnlinks href=#hl-1-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>example.org/v1alpha1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-2><a class=lnlinks href=#hl-1-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>ComposedResource</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-3><a class=lnlinks href=#hl-1-3>3</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-4><a class=lnlinks href=#hl-1-4>4</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>test-render-b</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-5><a class=lnlinks href=#hl-1-5>5</a></span><span class=cl><span class=w> </span><span class=nt>annotations</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-6><a class=lnlinks href=#hl-1-6>6</a></span><span class=cl><span class=w> </span><span class=nt>crossplane.io/composition-resource-name</span><span class=p>:</span><span class=w> </span><span class=l>resource-b</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-7><a class=lnlinks href=#hl-1-7>7</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-8><a class=lnlinks href=#hl-1-8>8</a></span><span class=cl><span class=w> </span><span class=nt>coolerField</span><span class=p>:</span><span class=w> </span><span class=s2>"I'm cooler!"</span><span class=w> </span></span></span></code></pre></div><p>The schema of the resource isn’t validated and may contain any data.</p><h3 id=beta-top>beta top <a class=anchor-link id=beta-top href=#beta-top aria-label="Link to this section: beta top"></a></h3><p>The command <code>crossplane beta top</code> shows CPU and memory usage of Crossplane related pods.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-2-1><a class=lnlinks href=#hl-2-1>1</a></span><span class=cl>crossplane beta top </span></span><span class=line><span class=ln id=hl-2-2><a class=lnlinks href=#hl-2-2>2</a></span><span class=cl>TYPE NAMESPACE NAME CPU<span class=o>(</span>cores<span class=o>)</span> MEMORY </span></span><span class=line><span class=ln id=hl-2-3><a class=lnlinks href=#hl-2-3>3</a></span><span class=cl>crossplane default crossplane-f98f9ddfd-tnm46 4m 32Mi </span></span><span class=line><span class=ln id=hl-2-4><a class=lnlinks href=#hl-2-4>4</a></span><span class=cl>crossplane default crossplane-rbac-manager-74ff459b88-94p8p 4m 14Mi </span></span><span class=line><span class=ln id=hl-2-5><a class=lnlinks href=#hl-2-5>5</a></span><span class=cl>provider default provider-aws-s3-1f1a3fb08cbc-5c49d84447-sggrq 3m 108Mi </span></span><span class=line><span class=ln id=hl-2-6><a class=lnlinks href=#hl-2-6>6</a></span><span class=cl>provider default upbound-provider-family-aws-48b3b5ccf964-76c9686b6-bgg65 2m 89Mi </span></span></code></pre></div><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content><p>Using <code>crossplane beta top</code> requires the Kubernetes <a href=https://github.com/kubernetes-sigs/metrics-server>metrics server</a> enabled on the cluster running Crossplane before using <code>crossplane beta top</code>.</p><p>Follow the installation instructions on the <a href=https://github.com/kubernetes-sigs/metrics-server#installation>metrics-server GitHub page</a>.</p></div></div><h4 id=flags-6>Flags <a class=anchor-link id=flags-6 href=#flags-6 aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td><code>-n</code></td><td><code>--namespace</code></td><td>The namespace where the Crossplane pod runs. Default is <code>crossplane-system</code>.</td></tr><tr><td><code>-s</code></td><td><code>--summary</code></td><td>Print a summary of all Crossplane pods along with the output.</td></tr><tr><td></td><td><code>--verbose</code></td><td>Print verbose logging information with the output.</td></tr></tbody></table></div><p>The Kubernetes metrics server may take some time to collect data for the <code>crossplane beta top</code> command. Before the metrics server is ready, running the <code>top</code> command may produce an error, for example,</p><p><code>crossplane: error: error adding metrics to pod, check if metrics-server is running or wait until metrics are available for the pod: the server is currently unable to handle the request (get pods.metrics.k8s.io crossplane-contrib-provider-helm-b4cc4c2c8db3-6d787f9686-qzmz2)</code></p><h3 id=beta-trace>beta trace <a class=anchor-link id=beta-trace href=#beta-trace aria-label="Link to this section: beta trace"></a></h3><p>Use the <code>crossplane beta trace</code> command to display a visual relationship of Crossplane objects. The <code>trace</code> command supports claims, compositions, functions, managed resources or packages.</p><p>The command requires a resource type and a resource name.</p><p><code>crossplane beta trace <resource kind> <resource name></code></p><p>For example to view a resource named <code>my-claim</code> of type <code>example.crossplane.io</code>:<br><code>crossplane beta trace example.crossplane.io my-claim</code></p><p>The command also accepts Kubernetes CLI style <code><kind>/<name></code> input.<br>For example,<br><code>crossplane beta trace example.crossplane.io/my-claim</code></p><p>By default the <code>crossplane beta trace</code> command uses the Kubernetes configuration defined in <code>~/.kube/config</code>.</p><p>Define a custom Kubernetes configuration file location with the environmental variable <code>KUBECONFIG</code>.</p><h4 id=flags-7>Flags <a class=anchor-link id=flags-7 href=#flags-7 aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td><code>-n</code></td><td><code>--namespace</code></td><td>The namespace of the resource.</td></tr><tr><td><code>-o</code></td><td><code>--output=</code></td><td>Change the graph output with <code>wide</code>, <code>json</code>, or <code>dot</code> for a <a href=https://graphviz.org/docs/layouts/dot/>Graphviz dot</a> output.</td></tr><tr><td></td><td><code>--show-connection-secrets</code></td><td>Print any connection secret names. Doesn’t print the secret values.</td></tr><tr><td></td><td><code>--show-package-dependencies <filter></code></td><td>Show package dependencies. Options are <code>all</code> to show every dependency, <code>unique</code> to only print a package once or <code>none</code> to not print any dependencies. By default the <code>trace</code> command uses <code>--show-package-dependencies unique</code>.</td></tr><tr><td></td><td><code>--show-package-revisions <output></code></td><td>Print package revision versions. Options are <code>active</code>, showing only the active revisions, <code>all</code> showing all revisions or <code>none</code> to print not print any revisions.</td></tr><tr><td></td><td><code>--show-package-runtime-configs</code></td><td>Print DeploymentRuntimeConfig dependencies.</td></tr></tbody></table></div><h4 id=output-options>Output options <a class=anchor-link id=output-options href=#output-options aria-label="Link to this section: Output options"></a></h4><p>By default <code>crossplane beta trace</code> prints directly to the terminal, limiting the “Ready” condition and “Status” messages to 64 characters.</p><p>The following an example output a “cluster” claim from the AWS reference platform, which includes multiple Compositions and composed resources:</p><div class=highlight copy-lines=1><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-3-1><a class=lnlinks href=#hl-3-1> 1</a></span><span class=cl>crossplane beta trace cluster.aws.platformref.upbound.io platform-ref-aws </span></span><span class=line><span class=ln id=hl-3-2><a class=lnlinks href=#hl-3-2> 2</a></span><span class=cl>NAME VERSION INSTALLED HEALTHY STATE STATUS </span></span><span class=line><span class=ln id=hl-3-3><a class=lnlinks href=#hl-3-3> 3</a></span><span class=cl>Configuration/platform-ref-aws v0.9.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-4><a class=lnlinks href=#hl-3-4> 4</a></span><span class=cl>├─ ConfigurationRevision/platform-ref-aws-9ad7b5db2899 v0.9.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-5><a class=lnlinks href=#hl-3-5> 5</a></span><span class=cl>├─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-6><a class=lnlinks href=#hl-3-6> 6</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-7><a class=lnlinks href=#hl-3-7> 7</a></span><span class=cl>│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-8><a class=lnlinks href=#hl-3-8> 8</a></span><span class=cl>│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-9><a class=lnlinks href=#hl-3-9> 9</a></span><span class=cl>│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-10><a class=lnlinks href=#hl-3-10>10</a></span><span class=cl>│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-11><a class=lnlinks href=#hl-3-11>11</a></span><span class=cl>│ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-12><a class=lnlinks href=#hl-3-12>12</a></span><span class=cl>│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-13><a class=lnlinks href=#hl-3-13>13</a></span><span class=cl>├─ Configuration/upbound-configuration-aws-database v0.5.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-14><a class=lnlinks href=#hl-3-14>14</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-aws-database-3112f0a765c5 v0.5.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-15><a class=lnlinks href=#hl-3-15>15</a></span><span class=cl>│ └─ Provider/upbound-provider-aws-rds v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-16><a class=lnlinks href=#hl-3-16>16</a></span><span class=cl>│ └─ ProviderRevision/upbound-provider-aws-rds-58f96aa9fc4b v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-17><a class=lnlinks href=#hl-3-17>17</a></span><span class=cl>├─ Configuration/upbound-configuration-aws-eks v0.5.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-18><a class=lnlinks href=#hl-3-18>18</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-aws-eks-83c9d65f4a47 v0.5.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-19><a class=lnlinks href=#hl-3-19>19</a></span><span class=cl>│ ├─ Provider/crossplane-contrib-provider-helm v0.16.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-20><a class=lnlinks href=#hl-3-20>20</a></span><span class=cl>│ │ └─ ProviderRevision/crossplane-contrib-provider-helm-b4cc4c2c8db3 v0.16.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-21><a class=lnlinks href=#hl-3-21>21</a></span><span class=cl>│ ├─ Provider/crossplane-contrib-provider-kubernetes v0.10.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-22><a class=lnlinks href=#hl-3-22>22</a></span><span class=cl>│ │ └─ ProviderRevision/crossplane-contrib-provider-kubernetes-63506a3443e0 v0.10.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-23><a class=lnlinks href=#hl-3-23>23</a></span><span class=cl>│ ├─ Provider/upbound-provider-aws-eks v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-24><a class=lnlinks href=#hl-3-24>24</a></span><span class=cl>│ │ └─ ProviderRevision/upbound-provider-aws-eks-641a096d79d8 v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-25><a class=lnlinks href=#hl-3-25>25</a></span><span class=cl>│ └─ Provider/upbound-provider-aws-iam v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-26><a class=lnlinks href=#hl-3-26>26</a></span><span class=cl>│ └─ ProviderRevision/upbound-provider-aws-iam-438eac423037 v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-27><a class=lnlinks href=#hl-3-27>27</a></span><span class=cl>├─ Configuration/upbound-configuration-app v0.2.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-28><a class=lnlinks href=#hl-3-28>28</a></span><span class=cl>│ └─ ConfigurationRevision/upbound-configuration-app-5d95726dba8c v0.2.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-29><a class=lnlinks href=#hl-3-29>29</a></span><span class=cl>├─ Configuration/upbound-configuration-observability-oss v0.2.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-30><a class=lnlinks href=#hl-3-30>30</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-observability-oss-a51529457ad7 v0.2.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-31><a class=lnlinks href=#hl-3-31>31</a></span><span class=cl>│ └─ Provider/grafana-provider-grafana v0.8.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-32><a class=lnlinks href=#hl-3-32>32</a></span><span class=cl>│ └─ ProviderRevision/grafana-provider-grafana-ac529c8ce1c6 v0.8.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-33><a class=lnlinks href=#hl-3-33>33</a></span><span class=cl>└─ Configuration/upbound-configuration-gitops-flux v0.2.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-3-34><a class=lnlinks href=#hl-3-34>34</a></span><span class=cl> └─ ConfigurationRevision/upbound-configuration-gitops-flux-2e80ec62738d v0.2.0 - True Active HealthyPackageRevision </span></span></code></pre></div><h4 id=wide-outputs>Wide outputs <a class=anchor-link id=wide-outputs href=#wide-outputs aria-label="Link to this section: Wide outputs"></a></h4><p>Print the entire “Ready” or “Status” message if they’re longer than 64 characters with <code>--output=wide</code>.</p><p>For example, the output truncates the “Status” message that’s too long.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-4-1><a class=lnlinks href=#hl-4-1>1</a></span><span class=cl>crossplane trace cluster.aws.platformref.upbound.io platform-ref-aws </span></span><span class=line><span class=ln id=hl-4-2><a class=lnlinks href=#hl-4-2>2</a></span><span class=cl>NAME SYNCED READY STATUS </span></span><span class=line><span class=ln id=hl-4-3><a class=lnlinks href=#hl-4-3>3</a></span><span class=cl>Cluster/platform-ref-aws <span class=o>(</span>default<span class=o>)</span> True False Waiting: ...resource claim is waiting <span class=k>for</span> composite resource to become Ready </span></span></code></pre></div><p>Use <code>--output=wide</code> to see the full message.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-5-1><a class=lnlinks href=#hl-5-1>1</a></span><span class=cl>crossplane trace cluster.aws.platformref.upbound.io platform-ref-aws --output<span class=o>=</span>wide </span></span><span class=line><span class=ln id=hl-5-2><a class=lnlinks href=#hl-5-2>2</a></span><span class=cl>NAME SYNCED READY STATUS </span></span><span class=line><span class=ln id=hl-5-3><a class=lnlinks href=#hl-5-3>3</a></span><span class=cl>Cluster/platform-ref-aws <span class=o>(</span>default<span class=o>)</span> True False Waiting: Composite resource claim is waiting <span class=k>for</span> composite resource to become Ready </span></span></code></pre></div><h4 id=graphviz-dot-file-output>Graphviz dot file output <a class=anchor-link id=graphviz-dot-file-output href=#graphviz-dot-file-output aria-label="Link to this section: Graphviz dot file output"></a></h4><p>Use the <code>--output=dot</code> to print out a textual <a href=https://graphviz.org/docs/layouts/dot/>Graphviz dot</a> output.</p><p>Save the output and export it or the output directly to Graphviz <code>dot</code> to render an image.</p><p>For example, to save the output as a <code>graph.png</code> file use <code>dot -Tpng -o graph.png</code>.</p><p><code>crossplane beta trace cluster.aws.platformref.upbound.io platform-ref-aws -o dot | dot -Tpng -o graph.png</code></p><h4 id=print-connection-secrets>Print connection secrets <a class=anchor-link id=print-connection-secrets href=#print-connection-secrets aria-label="Link to this section: Print connection secrets"></a></h4><p>Use <code>-s</code> to print any connection secret names along with the other resources.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content>The <code>crossplane beta trace</code> command doesn’t print secret values.</div></div><p>The output includes both the secret name along with the secret’s namespace.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-6-1><a class=lnlinks href=#hl-6-1> 1</a></span><span class=cl>crossplane beta trace configuration platform-ref-aws -s </span></span><span class=line><span class=ln id=hl-6-2><a class=lnlinks href=#hl-6-2> 2</a></span><span class=cl>NAME SYNCED READY STATUS </span></span><span class=line><span class=ln id=hl-6-3><a class=lnlinks href=#hl-6-3> 3</a></span><span class=cl>Cluster/platform-ref-aws <span class=o>(</span>default<span class=o>)</span> True True Available </span></span><span class=line><span class=ln id=hl-6-4><a class=lnlinks href=#hl-6-4> 4</a></span><span class=cl>└─ XCluster/platform-ref-aws-mlnwb True True Available </span></span><span class=line><span class=ln id=hl-6-5><a class=lnlinks href=#hl-6-5> 5</a></span><span class=cl> ├─ XNetwork/platform-ref-aws-mlnwb-6nvkx True True Available </span></span><span class=line><span class=ln id=hl-6-6><a class=lnlinks href=#hl-6-6> 6</a></span><span class=cl> │ ├─ SecurityGroupRule/platform-ref-aws-mlnwb-szgxp True True Available </span></span><span class=line><span class=ln id=hl-6-7><a class=lnlinks href=#hl-6-7> 7</a></span><span class=cl> │ └─ Secret/3f11c30b-dd94-4f5b-aff7-10fe4318ab1f <span class=o>(</span>upbound-system<span class=o>)</span> - - </span></span><span class=line><span class=ln id=hl-6-8><a class=lnlinks href=#hl-6-8> 8</a></span><span class=cl> ├─ XEKS/platform-ref-aws-mlnwb-fqjzz True True Available </span></span><span class=line><span class=ln id=hl-6-9><a class=lnlinks href=#hl-6-9> 9</a></span><span class=cl> │ ├─ OpenIDConnectProvider/platform-ref-aws-mlnwb-h26xx True True Available </span></span><span class=line><span class=ln id=hl-6-10><a class=lnlinks href=#hl-6-10>10</a></span><span class=cl> │ └─ Secret/9666eccd-929c-4452-8658-c8c881aee137-eks <span class=o>(</span>upbound-system<span class=o>)</span> - - </span></span><span class=line><span class=ln id=hl-6-11><a class=lnlinks href=#hl-6-11>11</a></span><span class=cl> ├─ XServices/platform-ref-aws-mlnwb-bgndx True True Available </span></span><span class=line><span class=ln id=hl-6-12><a class=lnlinks href=#hl-6-12>12</a></span><span class=cl> │ ├─ Release/platform-ref-aws-mlnwb-7hfkv True True Available </span></span><span class=line><span class=ln id=hl-6-13><a class=lnlinks href=#hl-6-13>13</a></span><span class=cl> │ └─ Secret/d0955929-892d-40c3-b0e0-a8cabda55895 <span class=o>(</span>upbound-system<span class=o>)</span> - - </span></span><span class=line><span class=ln id=hl-6-14><a class=lnlinks href=#hl-6-14>14</a></span><span class=cl> └─ Secret/9666eccd-929c-4452-8658-c8c881aee137 <span class=o>(</span>upbound-system<span class=o>)</span> - - </span></span></code></pre></div><h4 id=print-package-dependencies>Print package dependencies <a class=anchor-link id=print-package-dependencies href=#print-package-dependencies aria-label="Link to this section: Print package dependencies"></a></h4><p>Use the <code>--show-package-dependencies</code> flag to include more information about package dependencies.</p><p>By default <code>crossplane beta trace</code> uses <code>--show-package-dependencies unique</code> to include a required package only once in the output.</p><p>Use <code>--show-package-dependencies all</code> to see every package requiring the same dependency.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-7-1><a class=lnlinks href=#hl-7-1> 1</a></span><span class=cl>crossplane beta trace configuration platform-ref-aws --show-package-dependencies all </span></span><span class=line><span class=ln id=hl-7-2><a class=lnlinks href=#hl-7-2> 2</a></span><span class=cl>NAME VERSION INSTALLED HEALTHY STATE STATUS </span></span><span class=line><span class=ln id=hl-7-3><a class=lnlinks href=#hl-7-3> 3</a></span><span class=cl>Configuration/platform-ref-aws v0.9.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-4><a class=lnlinks href=#hl-7-4> 4</a></span><span class=cl>├─ ConfigurationRevision/platform-ref-aws-9ad7b5db2899 v0.9.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-5><a class=lnlinks href=#hl-7-5> 5</a></span><span class=cl>├─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-6><a class=lnlinks href=#hl-7-6> 6</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-7><a class=lnlinks href=#hl-7-7> 7</a></span><span class=cl>│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-8><a class=lnlinks href=#hl-7-8> 8</a></span><span class=cl>│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-9><a class=lnlinks href=#hl-7-9> 9</a></span><span class=cl>│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-10><a class=lnlinks href=#hl-7-10>10</a></span><span class=cl>│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-11><a class=lnlinks href=#hl-7-11>11</a></span><span class=cl>│ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-12><a class=lnlinks href=#hl-7-12>12</a></span><span class=cl>│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-13><a class=lnlinks href=#hl-7-13>13</a></span><span class=cl>├─ Configuration/upbound-configuration-aws-database v0.5.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-14><a class=lnlinks href=#hl-7-14>14</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-aws-database-3112f0a765c5 v0.5.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-15><a class=lnlinks href=#hl-7-15>15</a></span><span class=cl>│ ├─ Provider/upbound-provider-aws-rds v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-16><a class=lnlinks href=#hl-7-16>16</a></span><span class=cl>│ │ ├─ ProviderRevision/upbound-provider-aws-rds-58f96aa9fc4b v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-17><a class=lnlinks href=#hl-7-17>17</a></span><span class=cl>│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-18><a class=lnlinks href=#hl-7-18>18</a></span><span class=cl>│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-19><a class=lnlinks href=#hl-7-19>19</a></span><span class=cl>│ └─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-20><a class=lnlinks href=#hl-7-20>20</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-21><a class=lnlinks href=#hl-7-21>21</a></span><span class=cl>│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-22><a class=lnlinks href=#hl-7-22>22</a></span><span class=cl>│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-23><a class=lnlinks href=#hl-7-23>23</a></span><span class=cl>│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-24><a class=lnlinks href=#hl-7-24>24</a></span><span class=cl>│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-25><a class=lnlinks href=#hl-7-25>25</a></span><span class=cl>│ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-26><a class=lnlinks href=#hl-7-26>26</a></span><span class=cl>│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-27><a class=lnlinks href=#hl-7-27>27</a></span><span class=cl>├─ Configuration/upbound-configuration-aws-eks v0.5.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-28><a class=lnlinks href=#hl-7-28>28</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-aws-eks-83c9d65f4a47 v0.5.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-29><a class=lnlinks href=#hl-7-29>29</a></span><span class=cl>│ ├─ Configuration/upbound-configuration-aws-network v0.7.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-30><a class=lnlinks href=#hl-7-30>30</a></span><span class=cl>│ │ ├─ ConfigurationRevision/upbound-configuration-aws-network-97be9100cfe1 v0.7.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-31><a class=lnlinks href=#hl-7-31>31</a></span><span class=cl>│ │ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-32><a class=lnlinks href=#hl-7-32>32</a></span><span class=cl>│ │ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-33><a class=lnlinks href=#hl-7-33>33</a></span><span class=cl>│ │ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-34><a class=lnlinks href=#hl-7-34>34</a></span><span class=cl>│ │ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-35><a class=lnlinks href=#hl-7-35>35</a></span><span class=cl>│ │ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-36><a class=lnlinks href=#hl-7-36>36</a></span><span class=cl>│ │ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-37><a class=lnlinks href=#hl-7-37>37</a></span><span class=cl>│ ├─ Provider/crossplane-contrib-provider-helm v0.16.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-38><a class=lnlinks href=#hl-7-38>38</a></span><span class=cl>│ │ └─ ProviderRevision/crossplane-contrib-provider-helm-b4cc4c2c8db3 v0.16.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-39><a class=lnlinks href=#hl-7-39>39</a></span><span class=cl>│ ├─ Provider/crossplane-contrib-provider-kubernetes v0.10.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-40><a class=lnlinks href=#hl-7-40>40</a></span><span class=cl>│ │ └─ ProviderRevision/crossplane-contrib-provider-kubernetes-63506a3443e0 v0.10.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-41><a class=lnlinks href=#hl-7-41>41</a></span><span class=cl>│ ├─ Provider/upbound-provider-aws-ec2 v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-42><a class=lnlinks href=#hl-7-42>42</a></span><span class=cl>│ │ ├─ ProviderRevision/upbound-provider-aws-ec2-cfeb0cd0f1d2 v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-43><a class=lnlinks href=#hl-7-43>43</a></span><span class=cl>│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-44><a class=lnlinks href=#hl-7-44>44</a></span><span class=cl>│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-45><a class=lnlinks href=#hl-7-45>45</a></span><span class=cl>│ ├─ Provider/upbound-provider-aws-eks v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-46><a class=lnlinks href=#hl-7-46>46</a></span><span class=cl>│ │ ├─ ProviderRevision/upbound-provider-aws-eks-641a096d79d8 v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-47><a class=lnlinks href=#hl-7-47>47</a></span><span class=cl>│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-48><a class=lnlinks href=#hl-7-48>48</a></span><span class=cl>│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-49><a class=lnlinks href=#hl-7-49>49</a></span><span class=cl>│ ├─ Provider/upbound-provider-aws-iam v0.47.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-50><a class=lnlinks href=#hl-7-50>50</a></span><span class=cl>│ │ ├─ ProviderRevision/upbound-provider-aws-iam-438eac423037 v0.47.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-51><a class=lnlinks href=#hl-7-51>51</a></span><span class=cl>│ │ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-52><a class=lnlinks href=#hl-7-52>52</a></span><span class=cl>│ │ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-53><a class=lnlinks href=#hl-7-53>53</a></span><span class=cl>│ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-54><a class=lnlinks href=#hl-7-54>54</a></span><span class=cl>│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-55><a class=lnlinks href=#hl-7-55>55</a></span><span class=cl>├─ Configuration/upbound-configuration-app v0.2.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-56><a class=lnlinks href=#hl-7-56>56</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-app-5d95726dba8c v0.2.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-57><a class=lnlinks href=#hl-7-57>57</a></span><span class=cl>│ ├─ Provider/crossplane-contrib-provider-helm v0.16.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-58><a class=lnlinks href=#hl-7-58>58</a></span><span class=cl>│ │ └─ ProviderRevision/crossplane-contrib-provider-helm-b4cc4c2c8db3 v0.16.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-59><a class=lnlinks href=#hl-7-59>59</a></span><span class=cl>│ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-60><a class=lnlinks href=#hl-7-60>60</a></span><span class=cl>│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-61><a class=lnlinks href=#hl-7-61>61</a></span><span class=cl>├─ Configuration/upbound-configuration-observability-oss v0.2.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-62><a class=lnlinks href=#hl-7-62>62</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-observability-oss-a51529457ad7 v0.2.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-63><a class=lnlinks href=#hl-7-63>63</a></span><span class=cl>│ ├─ Provider/crossplane-contrib-provider-helm v0.16.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-64><a class=lnlinks href=#hl-7-64>64</a></span><span class=cl>│ │ └─ ProviderRevision/crossplane-contrib-provider-helm-b4cc4c2c8db3 v0.16.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-65><a class=lnlinks href=#hl-7-65>65</a></span><span class=cl>│ ├─ Provider/crossplane-contrib-provider-kubernetes v0.10.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-66><a class=lnlinks href=#hl-7-66>66</a></span><span class=cl>│ │ └─ ProviderRevision/crossplane-contrib-provider-kubernetes-63506a3443e0 v0.10.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-67><a class=lnlinks href=#hl-7-67>67</a></span><span class=cl>│ ├─ Provider/grafana-provider-grafana v0.8.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-68><a class=lnlinks href=#hl-7-68>68</a></span><span class=cl>│ │ └─ ProviderRevision/grafana-provider-grafana-ac529c8ce1c6 v0.8.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-69><a class=lnlinks href=#hl-7-69>69</a></span><span class=cl>│ └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-70><a class=lnlinks href=#hl-7-70>70</a></span><span class=cl>│ └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-71><a class=lnlinks href=#hl-7-71>71</a></span><span class=cl>└─ Configuration/upbound-configuration-gitops-flux v0.2.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-72><a class=lnlinks href=#hl-7-72>72</a></span><span class=cl> ├─ ConfigurationRevision/upbound-configuration-gitops-flux-2e80ec62738d v0.2.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-73><a class=lnlinks href=#hl-7-73>73</a></span><span class=cl> ├─ Provider/crossplane-contrib-provider-helm v0.16.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-74><a class=lnlinks href=#hl-7-74>74</a></span><span class=cl> │ └─ ProviderRevision/crossplane-contrib-provider-helm-b4cc4c2c8db3 v0.16.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-75><a class=lnlinks href=#hl-7-75>75</a></span><span class=cl> └─ Function/upbound-function-patch-and-transform v0.2.1 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-7-76><a class=lnlinks href=#hl-7-76>76</a></span><span class=cl> └─ FunctionRevision/upbound-function-patch-and-transform-a2f88f8d8715 v0.2.1 - True Active HealthyPackageRevision </span></span></code></pre></div><p>Use <code>--show-package-dependencies none</code> to hide all dependencies.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-8-1><a class=lnlinks href=#hl-8-1>1</a></span><span class=cl>crossplane beta trace configuration platform-ref-aws --show-package-dependencies none </span></span><span class=line><span class=ln id=hl-8-2><a class=lnlinks href=#hl-8-2>2</a></span><span class=cl>NAME VERSION INSTALLED HEALTHY STATE STATUS </span></span><span class=line><span class=ln id=hl-8-3><a class=lnlinks href=#hl-8-3>3</a></span><span class=cl>Configuration/platform-ref-aws v0.9.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-8-4><a class=lnlinks href=#hl-8-4>4</a></span><span class=cl>└─ ConfigurationRevision/platform-ref-aws-9ad7b5db2899 v0.9.0 - True Active HealthyPackageRevision </span></span></code></pre></div><h4 id=print-package-revisions>Print package revisions <a class=anchor-link id=print-package-revisions href=#print-package-revisions aria-label="Link to this section: Print package revisions"></a></h4><p>By default the <code>crossplane beta trace</code> command only shows the package revisions actively in use. To view both active and inactive revisions use <code>--show-package-revisions all</code>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-9-1><a class=lnlinks href=#hl-9-1> 1</a></span><span class=cl>crossplane beta trace configuration platform-ref-aws --show-package-revisions all </span></span><span class=line><span class=ln id=hl-9-2><a class=lnlinks href=#hl-9-2> 2</a></span><span class=cl>NAME VERSION INSTALLED HEALTHY STATE STATUS </span></span><span class=line><span class=ln id=hl-9-3><a class=lnlinks href=#hl-9-3> 3</a></span><span class=cl>Configuration/platform-ref-aws v0.9.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-9-4><a class=lnlinks href=#hl-9-4> 4</a></span><span class=cl>├─ ConfigurationRevision/platform-ref-aws-ad01153c1179 v0.8.0 - True Inactive HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-9-5><a class=lnlinks href=#hl-9-5> 5</a></span><span class=cl>├─ ConfigurationRevision/platform-ref-aws-9ad7b5db2899 v0.9.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-9-6><a class=lnlinks href=#hl-9-6> 6</a></span><span class=cl>├─ Configuration/upbound-configuration-aws-network v0.2.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-9-7><a class=lnlinks href=#hl-9-7> 7</a></span><span class=cl>│ ├─ ConfigurationRevision/upbound-configuration-aws-network-288fcd1b88dd v0.2.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-9-8><a class=lnlinks href=#hl-9-8> 8</a></span><span class=cl>│ └─ Provider/upbound-provider-aws-ec2 v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-9-9><a class=lnlinks href=#hl-9-9> 9</a></span><span class=cl>│ ├─ ProviderRevision/upbound-provider-aws-ec2-5cfd948d082f v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-9-10><a class=lnlinks href=#hl-9-10>10</a></span><span class=cl>│ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-9-11><a class=lnlinks href=#hl-9-11>11</a></span><span class=cl>│ └─ ProviderRevision/upbound-provider-family-aws-48b3b5ccf964 v1.0.0 - True Active HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-9-12><a class=lnlinks href=#hl-9-12>12</a></span><span class=cl><span class=c1># Removed for brevity</span> </span></span></code></pre></div><p>To hide all revisions use <code>--show-package-revision none</code>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-10-1><a class=lnlinks href=#hl-10-1>1</a></span><span class=cl>crossplane beta trace configuration platform-ref-aws --show-package-revisions none </span></span><span class=line><span class=ln id=hl-10-2><a class=lnlinks href=#hl-10-2>2</a></span><span class=cl>NAME VERSION INSTALLED HEALTHY STATE STATUS </span></span><span class=line><span class=ln id=hl-10-3><a class=lnlinks href=#hl-10-3>3</a></span><span class=cl>Configuration/platform-ref-aws v0.9.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-10-4><a class=lnlinks href=#hl-10-4>4</a></span><span class=cl>├─ Configuration/upbound-configuration-aws-network v0.2.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-10-5><a class=lnlinks href=#hl-10-5>5</a></span><span class=cl>│ └─ Provider/upbound-provider-aws-ec2 v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-10-6><a class=lnlinks href=#hl-10-6>6</a></span><span class=cl>│ └─ Provider/upbound-provider-family-aws v1.0.0 True True - HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-10-7><a class=lnlinks href=#hl-10-7>7</a></span><span class=cl><span class=c1># Removed for brevity</span> </span></span></code></pre></div><h3 id=beta-validate>beta validate <a class=anchor-link id=beta-validate href=#beta-validate aria-label="Link to this section: beta validate"></a></h3><p>The <code>crossplane beta validate</code> command validates <a href=https://docs.crossplane.io/v1.16/concepts/compositions/>compositions</a> against provider or XRD schemas using the Kubernetes API server’s validation library.</p><p>The <code>crossplane beta validate</code> command supports validating the following scenarios:</p><ul><li>Validate a managed resource or composite resource <a href=#validate-resources-against-a-schema>against a Provider or XRD schema</a>.</li><li>Use the output of <code>crossplane beta render</code> as <a href=#validate-render-command-output>validation input</a>.</li><li>Validate an <a href=#validate-common-expression-language-rules>XRD against Kubernetes Common Expression Language</a> (CEL) rules.</li><li>Validate resources against a <a href=#validate-against-a-directory-of-schemas>directory of schemas</a>.</li></ul><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content><p>The <code>crossplane beta validate</code> command performs all validation offline.</p><p>A Kubernetes cluster running Crossplane isn’t required.</p></div></div><h4 id=flags-8>Flags <a class=anchor-link id=flags-8 href=#flags-8 aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td><code>-h</code></td><td><code>--help</code></td><td>Show context sensitive help.</td></tr><tr><td><code>-v</code></td><td><code>--version</code></td><td>Print version and quit.</td></tr><tr><td></td><td><code>--cache-dir=".crossplane/cache"</code></td><td>Specify the absolute path to the cache directory to store downloaded schemas.</td></tr><tr><td></td><td><code>--clean-cache</code></td><td>Clean the cache directory before downloading package schemas.</td></tr><tr><td></td><td><code>--skip-success-results</code></td><td>Skip printing success results.</td></tr><tr><td></td><td><code>--verbose</code></td><td>Print verbose logging statements.</td></tr></tbody></table></div><h4 id=validate-resources-against-a-schema>Validate resources against a schema <a class=anchor-link id=validate-resources-against-a-schema href=#validate-resources-against-a-schema aria-label="Link to this section: Validate resources against a schema"></a></h4><p>The <code>crossplane beta validate</code> command can validate an XR and one or more managed resources against a provider’s schema.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content><p>When validating against a provider the <code>crossplane beta validate</code> command downloads the provider package to the <code>--cache-dir</code> directory. By default Crossplane uses <code>.crossplane</code> as the <code>--cache-dir</code> location.</p><p>Access to a Kubernetes cluster or Crossplane pod isn’t required.<br>Validation requires the ability to download the provider package.</p></div></div><p>The <code>crossplane beta validate</code> command downloads and caches the schema CRD files in the <code>--cache-dir</code> directory. By default the Crossplane CLI uses <code>.crossplane/cache</code> as the cache location.</p><p>To clear the cache and download the CRD files again use the <code>--clean-cache</code> flag.</p><p>To validate a managed resource against a provider, first, create a provider manifest file. For example, to validate an IAM role from Provider AWS, use the <a href=https://marketplace.upbound.io/providers/upbound/provider-aws-iam/v1.0.0>Provider AWS IAM</a> manifest.</p><div class="admonition tip d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="tip:"><use xlink:href="#check"/></svg><span class=ps-1>Tip</span></div><div class=admonition-content>To validate a “<a href=https://blog.upbound.io/new-provider-families>family provider</a>” use the provider manifests of the resources to validate.</div></div><div class=highlight><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-11-1><a class=lnlinks href=#hl-11-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>pkg.crossplane.io/v1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-2><a class=lnlinks href=#hl-11-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Provider</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-3><a class=lnlinks href=#hl-11-3>3</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-4><a class=lnlinks href=#hl-11-4>4</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>provider-aws-iam</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-5><a class=lnlinks href=#hl-11-5>5</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-6><a class=lnlinks href=#hl-11-6>6</a></span><span class=cl><span class=w> </span><span class=nt>package</span><span class=p>:</span><span class=w> </span><span class=l>xpkg.upbound.io/upbound/provider-aws-iam:v1.17.0</span><span class=w> </span></span></span></code></pre></div><p>Now include the XR or managed resource to validate.</p><p>For example, to validate an <code><highlight-term id=1731573034413018602 data-label=iamAK data-line=2>AccessKey</highlight-term></code> managed resource, provide a managed resource YAML file.</p><div class=highlight label=iamAK><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-12-1><a class=lnlinks href=#hl-12-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>iam.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-2><a class=lnlinks href=#hl-12-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>AccessKey</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-3><a class=lnlinks href=#hl-12-3>3</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-4><a class=lnlinks href=#hl-12-4>4</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>sample-access-key-0</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-5><a class=lnlinks href=#hl-12-5>5</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-6><a class=lnlinks href=#hl-12-6>6</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-7><a class=lnlinks href=#hl-12-7>7</a></span><span class=cl><span class=w> </span><span class=nt>userSelector</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-8><a class=lnlinks href=#hl-12-8>8</a></span><span class=cl><span class=w> </span><span class=nt>matchLabels</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-9><a class=lnlinks href=#hl-12-9>9</a></span><span class=cl><span class=w> </span><span class=nt>example-name</span><span class=p>:</span><span class=w> </span><span class=l>test-user-0</span><span class=w> </span></span></span></code></pre></div><p>Run the <code>crossplane beta validate</code> command providing the provider and managed resource YAML files as input.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-13-1><a class=lnlinks href=#hl-13-1>1</a></span><span class=cl>crossplane beta validate provider.yaml managedResource.yaml </span></span><span class=line><span class=ln id=hl-13-2><a class=lnlinks href=#hl-13-2>2</a></span><span class=cl><span class=o>[</span>✓<span class=o>]</span> iam.aws.upbound.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>AccessKey, sample-access-key-0 validated successfully </span></span><span class=line><span class=ln id=hl-13-3><a class=lnlinks href=#hl-13-3>3</a></span><span class=cl>Total <span class=m>1</span> resources: <span class=m>0</span> missing schemas, <span class=m>1</span> success <span class=k>case</span>, <span class=m>0</span> failure cases </span></span></code></pre></div><h4 id=validate-render-command-output>Validate render command output <a class=anchor-link id=validate-render-command-output href=#validate-render-command-output aria-label="Link to this section: Validate render command output"></a></h4><p>You can pipe the output of <code>crossplane beta render</code> into <code>crossplane beta validate</code> to validate complete Crossplane resource pipelines, including XRs, compositions and composition functions.</p><p>Use the <code>--include-full-xr</code> command with <code>crossplane beta render</code> and the <code>-</code> option with <code>crossplane beta validate</code> to pipe the output from <code>crossplane beta render</code> to the input of <code>crossplane beta validate</code>.</p><div class=highlight copy-lines=1><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-14-1><a class=lnlinks href=#hl-14-1>1</a></span><span class=cl>crossplane beta render xr.yaml composition.yaml <span class=k>function</span>.yaml --include-full-xr <span class=p>|</span> crossplane beta validate schemas.yaml - </span></span><span class=line><span class=ln id=hl-14-2><a class=lnlinks href=#hl-14-2>2</a></span><span class=cl><span class=o>[</span>x<span class=o>]</span> schema validation error example.crossplane.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>XR, example : status.conditions<span class=o>[</span>0<span class=o>]</span>.lastTransitionTime: Invalid value: <span class=s2>"null"</span>: status.conditions<span class=o>[</span>0<span class=o>]</span>.lastTransitionTime in body must be of <span class=nb>type</span> string: <span class=s2>"null"</span> </span></span><span class=line><span class=ln id=hl-14-3><a class=lnlinks href=#hl-14-3>3</a></span><span class=cl><span class=o>[</span>x<span class=o>]</span> schema validation error example.crossplane.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>XR, example : spec: Required value </span></span><span class=line><span class=ln id=hl-14-4><a class=lnlinks href=#hl-14-4>4</a></span><span class=cl><span class=o>[</span>✓<span class=o>]</span> iam.aws.upbound.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>AccessKey, sample-access-key-0 validated successfully </span></span><span class=line><span class=ln id=hl-14-5><a class=lnlinks href=#hl-14-5>5</a></span><span class=cl><span class=o>[</span>✓<span class=o>]</span> iam.aws.upbound.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>AccessKey, sample-access-key-1 validated successfully </span></span><span class=line><span class=ln id=hl-14-6><a class=lnlinks href=#hl-14-6>6</a></span><span class=cl><span class=o>[</span>✓<span class=o>]</span> iam.aws.upbound.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>User, test-user-0 validated successfully </span></span><span class=line><span class=ln id=hl-14-7><a class=lnlinks href=#hl-14-7>7</a></span><span class=cl><span class=o>[</span>✓<span class=o>]</span> iam.aws.upbound.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>User, test-user-1 validated successfully </span></span><span class=line><span class=ln id=hl-14-8><a class=lnlinks href=#hl-14-8>8</a></span><span class=cl>Total <span class=m>5</span> resources: <span class=m>0</span> missing schemas, <span class=m>4</span> success cases, <span class=m>1</span> failure cases </span></span></code></pre></div><h4 id=validate-common-expression-language-rules>Validate Common Expression Language rules <a class=anchor-link id=validate-common-expression-language-rules href=#validate-common-expression-language-rules aria-label="Link to this section: Validate Common Expression Language rules"></a></h4><p>XRDs can define <a href=https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-rules>validation rules</a> expressed in the Common Expression Language (<a href=https://kubernetes.io/docs/reference/using-api/cel/>CEL</a>).</p><p>Apply a CEL rule with the <code><highlight-term id=1731573034413053268 data-label=celXRD data-line=12>x-kubernetes-validations</highlight-term></code> key inside the schema <code><highlight-term id=1731573034413073890 data-label=celXRD data-line=10>spec</highlight-term></code> object of an XRD.</p><div class=highlight label=celXRD><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-15-1><a class=lnlinks href=#hl-15-1> 1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>apiextensions.crossplane.io/v1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-2><a class=lnlinks href=#hl-15-2> 2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>CompositeResourceDefinition</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-3><a class=lnlinks href=#hl-15-3> 3</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-4><a class=lnlinks href=#hl-15-4> 4</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>myXR.crossplane.io</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-5><a class=lnlinks href=#hl-15-5> 5</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-6><a class=lnlinks href=#hl-15-6> 6</a></span><span class=cl><span class=w></span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-7><a class=lnlinks href=#hl-15-7> 7</a></span><span class=cl><span class=w> </span><span class=nt>openAPIV3Schema</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-8><a class=lnlinks href=#hl-15-8> 8</a></span><span class=cl><span class=w> </span><span class=nt>type</span><span class=p>:</span><span class=w> </span><span class=l>object</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-9><a class=lnlinks href=#hl-15-9> 9</a></span><span class=cl><span class=w> </span><span class=nt>properties</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-10><a class=lnlinks href=#hl-15-10>10</a></span><span class=cl><span class=w> </span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-11><a class=lnlinks href=#hl-15-11>11</a></span><span class=cl><span class=w> </span><span class=nt>type</span><span class=p>:</span><span class=w> </span><span class=l>object</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-12><a class=lnlinks href=#hl-15-12>12</a></span><span class=cl><span class=w> </span><span class=nt>x-kubernetes-validations</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-13><a class=lnlinks href=#hl-15-13>13</a></span><span class=cl><span class=w> </span>- <span class=nt>rule</span><span class=p>:</span><span class=w> </span><span class=s2>"self.minReplicas <= self.replicas && self.replicas <= self.maxReplicas"</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-14><a class=lnlinks href=#hl-15-14>14</a></span><span class=cl><span class=w> </span><span class=nt>message</span><span class=p>:</span><span class=w> </span><span class=s2>"replicas should be in between minReplicas and maxReplicas."</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-15><a class=lnlinks href=#hl-15-15>15</a></span><span class=cl><span class=w> </span><span class=nt>properties</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-16><a class=lnlinks href=#hl-15-16>16</a></span><span class=cl><span class=w> </span><span class=nt>minReplicas</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-17><a class=lnlinks href=#hl-15-17>17</a></span><span class=cl><span class=w> </span><span class=nt>type</span><span class=p>:</span><span class=w> </span><span class=l>integer</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-18><a class=lnlinks href=#hl-15-18>18</a></span><span class=cl><span class=w> </span><span class=nt>maxReplicas</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-19><a class=lnlinks href=#hl-15-19>19</a></span><span class=cl><span class=w> </span><span class=nt>type</span><span class=p>:</span><span class=w> </span><span class=l>integer</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-20><a class=lnlinks href=#hl-15-20>20</a></span><span class=cl><span class=w> </span><span class=nt>replicas</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-21><a class=lnlinks href=#hl-15-21>21</a></span><span class=cl><span class=w> </span><span class=nt>type</span><span class=p>:</span><span class=w> </span><span class=l>integer</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-22><a class=lnlinks href=#hl-15-22>22</a></span><span class=cl><span class=w></span><span class=c># Removed for brevity</span><span class=w> </span></span></span></code></pre></div><p>The rule in this example checks that the vale of the <code><highlight-term id=1731573034413099217 data-label=celXR data-line=6>replicas</highlight-term></code> field of an XR is between the <code><highlight-term id=1731573034413117572 data-label=celXR data-line=7>minReplicas</highlight-term></code> and <code><highlight-term id=1731573034413138636 data-label=celXR data-line=8>maxReplicas</highlight-term></code> values.</p><div class=highlight label=celXR><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-16-1><a class=lnlinks href=#hl-16-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>example.crossplane.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-2><a class=lnlinks href=#hl-16-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>XR</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-3><a class=lnlinks href=#hl-16-3>3</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-4><a class=lnlinks href=#hl-16-4>4</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>example</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-5><a class=lnlinks href=#hl-16-5>5</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-6><a class=lnlinks href=#hl-16-6>6</a></span><span class=cl><span class=w> </span><span class=nt>replicas</span><span class=p>:</span><span class=w> </span><span class=m>49</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-7><a class=lnlinks href=#hl-16-7>7</a></span><span class=cl><span class=w> </span><span class=nt>minReplicas</span><span class=p>:</span><span class=w> </span><span class=m>1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-8><a class=lnlinks href=#hl-16-8>8</a></span><span class=cl><span class=w> </span><span class=nt>maxReplicas</span><span class=p>:</span><span class=w> </span><span class=m>30</span><span class=w> </span></span></span></code></pre></div><p>Running <code>crossplane beta validate</code> with the example XRD and XR produces an error.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-17-1><a class=lnlinks href=#hl-17-1>1</a></span><span class=cl><span class=sb>`</span>crossplane beta validate xrd.yaml xr.yaml </span></span><span class=line><span class=ln id=hl-17-2><a class=lnlinks href=#hl-17-2>2</a></span><span class=cl><span class=o>[</span>x<span class=o>]</span> CEL validation error example.crossplane.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>XR, example : spec: Invalid value: <span class=s2>"object"</span>: replicas should be in between minReplicas and maxReplicas. </span></span><span class=line><span class=ln id=hl-17-3><a class=lnlinks href=#hl-17-3>3</a></span><span class=cl>Total <span class=m>1</span> resources: <span class=m>0</span> missing schemas, <span class=m>0</span> success cases, <span class=m>1</span> failure cases </span></span></code></pre></div><h4 id=validate-against-a-directory-of-schemas>Validate against a directory of schemas <a class=anchor-link id=validate-against-a-directory-of-schemas href=#validate-against-a-directory-of-schemas aria-label="Link to this section: Validate against a directory of schemas"></a></h4><p>The <code>crossplane beta render</code> command can validate a directory of YAML files.</p><p>The command only processes <code>.yaml</code> and <code>.yml</code> files, while ignoring all other file types.</p><p>With a directory of files, provide the directory and resource to validate.</p><p>For example, using a directory named <code><highlight-term id=1731573034413158102 data-label=validateDir data-line=2>schemas</highlight-term></code> containing the XRD and Provider schemas.</p><div class=highlight label=validateDir><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-18-1><a class=lnlinks href=#hl-18-1>1</a></span><span class=cl>tree </span></span><span class=line><span class=ln id=hl-18-2><a class=lnlinks href=#hl-18-2>2</a></span><span class=cl>schemas </span></span><span class=line><span class=ln id=hl-18-3><a class=lnlinks href=#hl-18-3>3</a></span><span class=cl><span class=p>|</span>-- platform-ref-aws.yaml </span></span><span class=line><span class=ln id=hl-18-4><a class=lnlinks href=#hl-18-4>4</a></span><span class=cl><span class=p>|</span>-- providers </span></span><span class=line><span class=ln id=hl-18-5><a class=lnlinks href=#hl-18-5>5</a></span><span class=cl><span class=p>|</span> <span class=p>|</span>-- a.txt </span></span><span class=line><span class=ln id=hl-18-6><a class=lnlinks href=#hl-18-6>6</a></span><span class=cl><span class=p>|</span> <span class=sb>`</span>-- provider-aws-iam.yaml </span></span><span class=line><span class=ln id=hl-18-7><a class=lnlinks href=#hl-18-7>7</a></span><span class=cl><span class=sb>`</span>-- xrds </span></span><span class=line><span class=ln id=hl-18-8><a class=lnlinks href=#hl-18-8>8</a></span><span class=cl> <span class=sb>`</span>-- xrd.yaml </span></span></code></pre></div><p>Provide the directory name and a resource YAML file to the <code>crossplane beta validate</code> command.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-19-1><a class=lnlinks href=#hl-19-1>1</a></span><span class=cl>crossplane beta validate schema resources.yaml </span></span><span class=line><span class=ln id=hl-19-2><a class=lnlinks href=#hl-19-2>2</a></span><span class=cl><span class=o>[</span>x<span class=o>]</span> schema validation error example.crossplane.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>XR, example : status.conditions<span class=o>[</span>0<span class=o>]</span>.lastTransitionTime: Invalid value: <span class=s2>"null"</span>: status.conditions<span class=o>[</span>0<span class=o>]</span>.lastTransitionTime in body must be of <span class=nb>type</span> string: <span class=s2>"null"</span> </span></span><span class=line><span class=ln id=hl-19-3><a class=lnlinks href=#hl-19-3>3</a></span><span class=cl><span class=o>[</span>x<span class=o>]</span> CEL validation error example.crossplane.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>XR, example : spec: Invalid value: <span class=s2>"object"</span>: no such key: minReplicas evaluating rule: replicas should be greater than or equal to minReplicas. </span></span><span class=line><span class=ln id=hl-19-4><a class=lnlinks href=#hl-19-4>4</a></span><span class=cl><span class=o>[</span>✓<span class=o>]</span> iam.aws.upbound.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>AccessKey, sample-access-key-0 validated successfully </span></span><span class=line><span class=ln id=hl-19-5><a class=lnlinks href=#hl-19-5>5</a></span><span class=cl><span class=o>[</span>✓<span class=o>]</span> iam.aws.upbound.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>AccessKey, sample-access-key-1 validated successfully </span></span><span class=line><span class=ln id=hl-19-6><a class=lnlinks href=#hl-19-6>6</a></span><span class=cl><span class=o>[</span>✓<span class=o>]</span> iam.aws.upbound.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>User, test-user-0 validated successfully </span></span><span class=line><span class=ln id=hl-19-7><a class=lnlinks href=#hl-19-7>7</a></span><span class=cl><span class=o>[</span>✓<span class=o>]</span> iam.aws.upbound.io/v1beta1, <span class=nv>Kind</span><span class=o>=</span>User, test-user-1 validated successfully </span></span><span class=line><span class=ln id=hl-19-8><a class=lnlinks href=#hl-19-8>8</a></span><span class=cl>Total <span class=m>5</span> resources: <span class=m>0</span> missing schemas, <span class=m>4</span> success cases, <span class=m>1</span> failure cases </span></span></code></pre></div><h3 id=beta-xpkg-init>beta xpkg init <a class=anchor-link id=beta-xpkg-init href=#beta-xpkg-init aria-label="Link to this section: beta xpkg init"></a></h3><p>The <code>crossplane beta xpkg init</code> command populates the current directory with files to build a package.</p><p>Provide a name to use for the package and the package template to start from with the command<br><code>crossplane beta xpkg init <name> <template></code></p><p>The <code><name></code> input isn’t used. Crossplane reserves the <code><name></code> for future releases.</p><p>The <code><template></code> value may be one of four well known templates:</p><ul><li><code>configuration-template</code> - A template to build a Crossplane <a href=https://docs.crossplane.io/v1.16/concepts/packages/>Configuration</a> from the <a href=https://github.com/crossplane/configuration-template>crossplane/configuration-template</a> repository.</li><li><code>function-template-go</code> - A template to build Crossplane Go <a href=https://docs.crossplane.io/v1.16/concepts/composition-functions/>composition functions</a> from the <a href=https://github.com/crossplane/function-template-go>crossplane/function-template-go</a> repository.</li><li><code>function-template-python</code> - A template to build Crossplane Python <a href=https://docs.crossplane.io/v1.16/concepts/composition-functions/>composition functions</a> from the <a href=https://github.com/crossplane/function-template-go>crossplane/function-template-python</a> repository.</li><li><code>provider-template</code> - A template to build a basic Crossplane provider from the <a href=https://github.com/crossplane/provider-template>Crossplane/provider-template</a> repository.</li><li><code>provider-template-upjet</code> - A template for building <a href=https://github.com/crossplane/upjet>Upjet</a> based Crossplane providers from existing Terraform providers. Copies from the <a href=https://github.com/upbound/upjet-provider-template>upbound/upjet-provider-template</a> repository.</li></ul><p>Instead of a well known template the <code><template></code> value can be a git repository URL.</p><h4 id=notestxt>NOTES.txt <a class=anchor-link id=notestxt href=#notestxt aria-label="Link to this section: NOTES.txt"></a></h4><p>If the template repository contains a <code>NOTES.txt</code> file in its root directory, the <code>crossplane beta xpkg init</code> command prints the contents of the file to the terminal after populating the directory with the template files. This can be useful for providing information about the template.</p><h4 id=initsh>init.sh <a class=anchor-link id=initsh href=#initsh aria-label="Link to this section: init.sh"></a></h4><p>If the template repository contains an <code>init.sh</code> file in its root directory, the <code>crossplane beta xpkg init</code> command starts a dialog after populating the directory with the template files. The dialog prompts the user if they want to view or run the script. Use the initialization script to automatically personalize the template.</p><h4 id=flags-9>Flags <a class=anchor-link id=flags-9 href=#flags-9 aria-label="Link to this section: Flags"></a></h4><div class="table-responsive border rounded"><table class="table table-sm table-striped"><thead><tr><th>Short flag</th><th>Long flag</th><th>Description</th></tr></thead><tbody><tr><td><code>-b</code></td><td><code>--ref-name</code></td><td>The branch or tag to clone from the template repository.</td></tr><tr><td><code>-d</code></td><td><code>--directory</code></td><td>The directory to create and load the template files into. Uses the current directory by default.</td></tr><tr><td><code>-r</code></td><td><code>--run-init-script</code></td><td>Run the init.sh script without prompting, if it exists.</td></tr></tbody></table></div></div></main></div><footer class="bd-footer p-5"><div class="container text-center"><div class="row pb-5 top-row"><div class="col-lg img-col"><img src=/img/crossplane-logo.svg alt="Crossplane logo" srcset="/img/crossplane-logo.svg 1x, /img/crossplane-logo.svg 2x" width=185 height=40 decoding=async data-nimg=future loading=lazy class="d-flex crossplane-footer"></div><div class="col-lg links-col d-fill justify-content-evenly ms-5"><div class=row><div class=col-lg><a class=footer-link target=_blank href=https://twitter.com/crossplane_io>Twitter</a></div><div class=col-lg><a class=footer-link target=_blank href=https://www.youtube.com/channel/UC19FgzMBMqBro361HbE46Fw>Youtube</a></div><div class=col-lg><a class=footer-link target=_blank href="https://www.youtube.com/playlist?list=PL510POnNVaaYFuK-B_SIUrpIonCtLVOzT">Podcast</a></div><div class=col-lg><a class=footer-link target=_blank href=https://groups.google.com/g/crossplane-dev>Forum</a></div></div></div></div><div class="row pb-5"><div class="col-lg copyright-col pe-4 border-end"><p>© Crossplane Authors 2024. Documentation distributed under <a target=_blank href=https://creativecommons.org/licenses/by/4.0/>CC-BY-4.0</a>.</p><p>© 2024 The Linux Foundation. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our <a target=_blank href=https://www.linuxfoundation.org/legal/trademark-usage>Trademark Usage</a> page.</p></div><div class="col-lg cncf-col ms-5"><a class=d-flex target=_blank href=https://www.cncf.io/><img alt=cncfLogo src=/img/cncf-white.webp width=702 height=114 decoding=async data-nimg=future loading=lazy class="cncf-footer py-3"></a><p class=d-flex>We are a Cloud Native Computing Foundation incubating project.</p></div></div></div></footer><script src=https://docs.crossplane.io/js/main-727bf178.bundle.min.js data-no-instant></script><script type=text/javascript>(function(e,t,n,s,o,i,a){e[n]=e[n]||function(){(e[n].q=e[n].q||[]).push(arguments)},i=t.createElement(s),i.async=1,i.src="https://www.clarity.ms/tag/"+o,a=t.getElementsByTagName(s)[0],a.parentNode.insertBefore(i,a)})(window,document,"clarity","script","el5517lxor")</script> <script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-WFF2NQHG")</script><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WFF2NQHG" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><script type=text/javascript>adroll_adv_id="B4XQTO44VJFVDGCGM332GU",adroll_pix_id="6ROIBHUPMVCSXN7HHIKJTK",adroll_version="2.0",function(e,t,n,s,o){e.__adroll_loaded=!0,e.adroll=e.adroll||[],e.adroll.f=["setProperties","identify","track"];var i="https://s.adroll.com/j/"+adroll_adv_id+"/roundtrip.js";for(o=0;o<e.adroll.f.length;o++)e.adroll[e.adroll.f[o]]=e.adroll[e.adroll.f[o]]||function(t){return function(){e.adroll.push([t,arguments])}}(e.adroll.f[o]);n=t.createElement("script"),s=t.getElementsByTagName("script")[0],n.async=1,n.src=i,s.parentNode.insertBefore(n,s)}(window,document),adroll.track("pageView")</script><script src=https://cdn.jsdelivr.net/npm/@docsearch/js@3></script> <script>docsearch({container:"#docSearch",appId:"9UXKYX61NK",indexName:"crossplane",apiKey:"e07e181044d561f6a4cb7261931d980a",placeholder:"Search the docs"})</script></body></html>