CINXE.COM
Troubleshoot Crossplane · Crossplane v1.18
<!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="Crossplane lets you build a control plane with Kubernetes-style declarative and API-driven configuration and management for anything."><meta property="og:url" content="https://docs.crossplane.io/v1.18/guides/troubleshoot-crossplane/"><meta name=docsearch:modified content="November 5, 2024"><meta name=docsearch:version content="1.18"><title>Troubleshoot Crossplane · Crossplane v1.18</title><link rel=canonical href=https://docs.crossplane.io/latest/guides/troubleshoot-crossplane/><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.18 · Troubleshoot Crossplane"><meta property="og:description" content="Requested Resource Not Found If you use the Crossplane CLI to install a Provider or Configuration (for example, crossplane install provider xpkg.upbound.io/crossplane-contrib/provider-aws:v0.33.0) and …"></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.18</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.18/>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.18/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-83678735 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-83678735 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-83678735><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/getting-started/introduction/>Crossplane Introduction</a></div></div><div class="container flex-row collapse" id=collapse-83678735><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/getting-started/provider-aws/>AWS Quickstart</a></div></div><div class="container flex-row collapse" id=collapse-83678735><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/getting-started/provider-azure/>Azure Quickstart</a></div></div><div class="container flex-row collapse" id=collapse-83678735><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/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.18/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-2ea344ac class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-2ea344ac 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-2ea344ac><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/software/install/>Install Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-2ea344ac><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/software/upgrade/>Upgrade Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-2ea344ac><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/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.18/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-4c9a67bb class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-4c9a67bb 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-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/pods/>Crossplane Pods</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/providers/>Providers</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/managed-resources/>Managed Resources</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/compositions/>Compositions</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/composition-revisions/>Composition Revisions</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/composite-resource-definitions/>Composite Resource Definitions</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/composite-resources/>Composite Resources</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/claims/>Claims</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/environment-configs/>Environment Configurations</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/usages/>Usages</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/connection-details/>Connection Details</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/packages/>Configuration Packages</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/concepts/server-side-apply/>Server-Side Apply</a></div></div><div class="container flex-row collapse" id=collapse-4c9a67bb><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/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 active-parent"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.18/guides/>Guides</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 Guides Section"> <label for=collapse-0092279e class=sidebar-label data-bs-toggle=collapse data-bs-target=#collapse-0092279e 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 show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/disaster-recovery/>Disaster Recovery with Crossplane</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/metrics/>Metrics</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/function-patch-and-transform/>Function Patch and Transform</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/write-a-composition-function-in-go/>Write a Composition Function in Go</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/write-a-composition-function-in-python/>Write a Composition Function in Python</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/import-existing-resources/>Import Existing Resources</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/vault-as-secret-store/>Vault as an External Secret Store</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/vault-injection/>Vault Credential Injection</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/multi-tenant/>Multi-Tenant Crossplane</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/crossplane-with-argo-cd/>Configuring Crossplane with Argo CD</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/guides/self-signed-ca-certs/>Self-Signed CA Certs</a></div></div><div class="container flex-row collapse show" id=collapse-0092279e><div class="d-flex flex-column"><a class="bd-links d-flex active" href=https://docs.crossplane.io/v1.18/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"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.18/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" aria-label="Close or Expand CLI Reference Section"> <label for=collapse-ffd26267 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-ffd26267 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" id=collapse-ffd26267><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/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.18/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-6144acbe class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-6144acbe 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.18/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-a721e305 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-a721e305 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-a721e305><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/learn/release-cycle/>Release Cycle</a></div></div><div class="container flex-row collapse" id=collapse-a721e305><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.18/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.18<div class="badge rounded-pill latest">Latest</div></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/guides/troubleshoot-crossplane/>master</a> <a class="dropdown-item bd-dropdown-item active" aria-current=true href=https://docs.crossplane.io/v1.18/guides/troubleshoot-crossplane/>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/guides/troubleshoot-crossplane/>v1.17</a> <a class="dropdown-item bd-dropdown-item" href=https://docs.crossplane.io/v1.16/guides/troubleshoot-crossplane/>v1.16</a></div></div></div><h1 class="bd-title mb-0" id=content>Troubleshoot Crossplane</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=#requested-resource-not-found>Requested Resource Not Found</a></li><li class=nav-item><a class=nav-link href=#resource-status-and-conditions>Resource Status and Conditions</a></li><li class=nav-item><a class=nav-link href=#resource-events>Resource Events</a></li><li class=nav-item><a class=nav-link href=#crossplane-logs>Crossplane Logs</a></li><li class=nav-item><a class=nav-link href=#provider-logs>Provider Logs</a></li><li class=nav-item><a class=nav-link href=#compositions-and-composite-resource-definition>Compositions and composite resource definition</a><ul class=nav><li class=nav-item><a class=nav-link href=#general-troubleshooting-steps>General troubleshooting steps</a></li><li class=nav-item><a class=nav-link href=#examples>Examples</a><ul class=nav><li class=nav-item><a class=nav-link href=#composition>Composition</a></li><li class=nav-item><a class=nav-link href=#composite-resource-definition>Composite resource definition</a></li><li class=nav-item><a class=nav-link href=#providers>Providers</a></li></ul></li></ul></li><li class=nav-item><a class=nav-link href=#pausing-crossplane>Pausing Crossplane</a></li><li class=nav-item><a class=nav-link href=#pausing-providers>Pausing Providers</a></li><li class=nav-item><a class=nav-link href=#deleting-when-a-resource-hangs>Deleting When a Resource Hangs</a></li><li class=nav-item><a class=nav-link href=#tips-tricks-and-troubleshooting>Tips, Tricks, and Troubleshooting</a><ul class=nav><li class=nav-item><a class=nav-link href=#troubleshooting-claims-and-xrs>Troubleshooting Claims and XRs</a></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-%20Troubleshoot%20Crossplane&body=%3c!--%20What%27s%20the%20problem?%20--%3e%0a%0a%0aURL:%20https://docs.crossplane.io/v1.18/guides/troubleshoot-crossplane/">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.18/guides/troubleshoot-crossplane.md>View page source</a></span></div></div></nav></div><div class="bd-content ps-lg-2 DocSearch-content"><h2 id=requested-resource-not-found>Requested Resource Not Found <a class=anchor-link id=requested-resource-not-found href=#requested-resource-not-found aria-label="Link to this section: Requested Resource Not Found"></a></h2><p>If you use the Crossplane CLI to install a <code>Provider</code> or <code>Configuration</code> (for example, <code>crossplane install provider xpkg.upbound.io/crossplane-contrib/provider-aws:v0.33.0</code>) and get <code>the server could not find the requested resource</code> error, more often than not, that’s an indicator that the Crossplane CLI you’re using is outdated. In other words some Crossplane API has been graduated from alpha to beta or stable and the old plugin isn’t aware of this change.</p><h2 id=resource-status-and-conditions>Resource Status and Conditions <a class=anchor-link id=resource-status-and-conditions href=#resource-status-and-conditions aria-label="Link to this section: Resource Status and Conditions"></a></h2><p>Most Crossplane resources have a <code>status</code> section that can represent the current state of that particular resource. Running <code>kubectl describe</code> against a Crossplane resource will frequently give insightful information about its condition. For example, to determine the status of a GCP <code>CloudSQLInstance</code> managed resource use <code>kubectl describe</code> for the resource.</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-0-1><a class=lnlinks href=#hl-0-1>1</a></span><span class=cl>kubectl describe cloudsqlinstance my-db </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>Status: </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> Conditions: </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> Last Transition Time: 2019-09-16T13:46:42Z </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> Reason: Creating </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> Status: False </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> Type: Ready </span></span></code></pre></div><p>Most Crossplane resources set the <code>Ready</code> condition. <code>Ready</code> represents the availability of the resource - whether it’s creating, deleting, available, unavailable, binding, etc.</p><h2 id=resource-events>Resource Events <a class=anchor-link id=resource-events href=#resource-events aria-label="Link to this section: Resource Events"></a></h2><p>Most Crossplane resources emit <em>events</em> when something interesting happens. You can see the events associated with a resource by running <code>kubectl describe</code> - for example, <code>kubectl describe cloudsqlinstance my-db</code>. You can also see all events in a particular namespace by running <code>kubectl get events</code>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-console data-lang=console><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=go>Events: </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=go> Type Reason Age From Message </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=go> ---- ------ ---- ---- ------- </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=go> Warning CannotConnectToProvider 16s (x4 over 46s) managed/postgresqlserver.database.azure.crossplane.io cannot get referenced ProviderConfig: ProviderConfig.azure.crossplane.io "default" not found </span></span></span></code></pre></div><blockquote><p>Note that events are namespaced, while many Crossplane resources (XRs, etc) are cluster scoped. Crossplane emits events for cluster scoped resources to the ‘default’ namespace.</p></blockquote><h2 id=crossplane-logs>Crossplane Logs <a class=anchor-link id=crossplane-logs href=#crossplane-logs aria-label="Link to this section: Crossplane Logs"></a></h2><p>The next place to look to get more information or investigate a failure would be in the Crossplane pod logs, which should be running in the <code>crossplane-system</code> namespace. To get the current Crossplane logs, run the following:</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>kubectl -n crossplane-system logs -lapp<span class=o>=</span>crossplane </span></span></code></pre></div><blockquote><p>Note that Crossplane emits few logs by default - events are typically the best place to look for information about what Crossplane is doing. You may need to restart Crossplane with the <code>--debug</code> flag if you can’t find what you’re looking for.</p></blockquote><h2 id=provider-logs>Provider Logs <a class=anchor-link id=provider-logs href=#provider-logs aria-label="Link to this section: Provider Logs"></a></h2><p>Remember that much of Crossplane’s functionality is provided by providers. You can use <code>kubectl logs</code> to view provider logs too. By convention, they also emit few logs by default.</p><div class=highlight><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>kubectl -n crossplane-system logs <name-of-provider-pod> </span></span></code></pre></div><p>All providers maintained by the Crossplane community mirror Crossplane’s support of the <code>--debug</code> flag. The easiest way to set flags on a provider is to create a <code>ControllerConfig</code> and reference it from the <code>Provider</code>:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-4-1><a class=lnlinks href=#hl-4-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/v1alpha1</span><span class=w> </span></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><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>ControllerConfig</span><span class=w> </span></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><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-4-4><a class=lnlinks href=#hl-4-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>debug-config</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-4-5><a class=lnlinks href=#hl-4-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-4-6><a class=lnlinks href=#hl-4-6> 6</a></span><span class=cl><span class=w> </span><span class=nt>args</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-4-7><a class=lnlinks href=#hl-4-7> 7</a></span><span class=cl><span class=w> </span>- --<span class=l>debug</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-4-8><a class=lnlinks href=#hl-4-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-4-9><a class=lnlinks href=#hl-4-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>pkg.crossplane.io/v1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-4-10><a class=lnlinks href=#hl-4-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>Provider</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-4-11><a class=lnlinks href=#hl-4-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-4-12><a class=lnlinks href=#hl-4-12>12</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</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-4-13><a class=lnlinks href=#hl-4-13>13</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-4-14><a class=lnlinks href=#hl-4-14>14</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/crossplane-contrib/provider-aws:v0.33.0</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-4-15><a class=lnlinks href=#hl-4-15>15</a></span><span class=cl><span class=w> </span><span class=nt>controllerConfigRef</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-4-16><a class=lnlinks href=#hl-4-16>16</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>debug-config</span><span class=w> </span></span></span></code></pre></div><blockquote><p>Note that a reference to a <code>ControllerConfig</code> can be added to an already installed <code>Provider</code> and it will update its <code>Deployment</code> accordingly.</p></blockquote><h2 id=compositions-and-composite-resource-definition>Compositions and composite resource definition <a class=anchor-link id=compositions-and-composite-resource-definition href=#compositions-and-composite-resource-definition aria-label="Link to this section: Compositions and composite resource definition"></a></h2><h3 id=general-troubleshooting-steps>General troubleshooting steps <a class=anchor-link id=general-troubleshooting-steps href=#general-troubleshooting-steps aria-label="Link to this section: General troubleshooting steps"></a></h3><p>Crossplane and its providers log most error messages to resources’ event fields. Whenever your Composite Resources aren’t getting provisioned, follow the following steps:</p><ol><li><p>Get the events for the root resource using <code>kubectl describe</code> or <code>kubectl get event</code></p></li><li><p>If there are errors in the events, address them.</p></li><li><p>If there are no errors, follow its subresources.</p><p><code>kubectl get <KIND> <NAME> -o=jsonpath='{.spec.resourceRef}{" "}{.spec.resourceRefs}' | jq</code></p></li><li><p>Repeat this process for each resource returned.</p></li></ol><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>The rest of this section show you how to debug issues related to compositions without using external tooling. If you are using ArgoCD or FluxCD with UI, you can visualize object relationships in the UI. You can also use the <code>kube-lineage</code> plugin to visualize object relationships in your terminal.</div></div><h3 id=examples>Examples <a class=anchor-link id=examples href=#examples aria-label="Link to this section: Examples"></a></h3><h4 id=composition>Composition <a class=anchor-link id=composition href=#composition aria-label="Link to this section: Composition"></a></h4><p>You deployed an example application using a claim. Kind = <code>ExampleApp</code>. Name = <code>example-application</code>.</p><p>The example application never reaches available state as shown below.</p><ol><li><p>View the claim.</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>kubectl describe exampleapp example-application </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> </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>Status: </span></span><span class=line><span class=ln id=hl-5-4><a class=lnlinks href=#hl-5-4>4</a></span><span class=cl>Conditions: </span></span><span class=line><span class=ln id=hl-5-5><a class=lnlinks href=#hl-5-5>5</a></span><span class=cl> Last Transition Time: 2022-03-01T22:57:38Z </span></span><span class=line><span class=ln id=hl-5-6><a class=lnlinks href=#hl-5-6>6</a></span><span class=cl> Reason: Composite resource claim is waiting <span class=k>for</span> composite resource to become Ready </span></span><span class=line><span class=ln id=hl-5-7><a class=lnlinks href=#hl-5-7>7</a></span><span class=cl> Status: False </span></span><span class=line><span class=ln id=hl-5-8><a class=lnlinks href=#hl-5-8>8</a></span><span class=cl> Type: Ready </span></span><span class=line><span class=ln id=hl-5-9><a class=lnlinks href=#hl-5-9>9</a></span><span class=cl>Events: <none> </span></span></code></pre></div></li><li><p>If the claim doesn’t have errors, inspect the <code>.spec.resourceRef</code> field of the claim.</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>kubectl get exampleapp example-application -o<span class=o>=</span><span class=nv>jsonpath</span><span class=o>=</span><span class=s1>'{.spec.resourceRef}{" "}{.spec.resourceRefs}'</span> <span class=p>|</span> jq </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> </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><span class=o>{</span> </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> <span class=s2>"apiVersion"</span>: <span class=s2>"awsblueprints.io/v1alpha1"</span>, </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> <span class=s2>"kind"</span>: <span class=s2>"XExampleApp"</span>, </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> <span class=s2>"name"</span>: <span class=s2>"example-application-xqlsz"</span> </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><span class=o>}</span> </span></span></code></pre></div></li><li><p>In the preceding output, you see the cluster scoped resource for this claim. Kind = <code>XExampleApp</code> name = <code>example-application-xqlsz</code></p></li><li><p>View the cluster scoped resource’s events.</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>kubectl describe xexampleapp example-application-xqlsz </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> </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>Events: </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>Type Reason Age From Message </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>---- ------ ---- ---- ------- </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>Normal PublishConnectionSecret 9s <span class=o>(</span>x2 over 10s<span class=o>)</span> defined/compositeresourcedefinition.apiextensions.crossplane.io Successfully published connection details </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>Normal SelectComposition 6s <span class=o>(</span>x6 over 11s<span class=o>)</span> defined/compositeresourcedefinition.apiextensions.crossplane.io Successfully selected composition </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>Warning ComposeResources 6s <span class=o>(</span>x6 over 10s<span class=o>)</span> defined/compositeresourcedefinition.apiextensions.crossplane.io can<span class=s1>'t render composed resource from resource template at index 3: can'</span>t use dry-run create to name composed resource: an empty namespace may not be <span class=nb>set</span> during creation </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>Normal ComposeResources 6s <span class=o>(</span>x6 over 10s<span class=o>)</span> defined/compositeresourcedefinition.apiextensions.crossplane.io Successfully composed resources </span></span></code></pre></div></li><li><p>You see errors in the events. it’s complaining about not specifying namespace in its compositions. For this particular kind of error, you can get its subresources and check which one isn’t created.</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>kubectl get xexampleapp example-application-xqlsz -o<span class=o>=</span><span class=nv>jsonpath</span><span class=o>=</span><span class=s1>'{.spec.resourceRef}{" "}{.spec.resourceRefs}'</span> <span class=p>|</span> jq </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> </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><span class=o>[</span> </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> <span class=o>{</span> </span></span><span class=line><span class=ln id=hl-8-5><a class=lnlinks href=#hl-8-5> 5</a></span><span class=cl> <span class=s2>"apiVersion"</span>: <span class=s2>"awsblueprints.io/v1alpha1"</span>, </span></span><span class=line><span class=ln id=hl-8-6><a class=lnlinks href=#hl-8-6> 6</a></span><span class=cl> <span class=s2>"kind"</span>: <span class=s2>"XDynamoDBTable"</span>, </span></span><span class=line><span class=ln id=hl-8-7><a class=lnlinks href=#hl-8-7> 7</a></span><span class=cl> <span class=s2>"name"</span>: <span class=s2>"example-application-xqlsz-6j9nm"</span> </span></span><span class=line><span class=ln id=hl-8-8><a class=lnlinks href=#hl-8-8> 8</a></span><span class=cl> <span class=o>}</span>, </span></span><span class=line><span class=ln id=hl-8-9><a class=lnlinks href=#hl-8-9> 9</a></span><span class=cl> <span class=o>{</span> </span></span><span class=line><span class=ln id=hl-8-10><a class=lnlinks href=#hl-8-10>10</a></span><span class=cl> <span class=s2>"apiVersion"</span>: <span class=s2>"awsblueprints.io/v1alpha1"</span>, </span></span><span class=line><span class=ln id=hl-8-11><a class=lnlinks href=#hl-8-11>11</a></span><span class=cl> <span class=s2>"kind"</span>: <span class=s2>"XIAMPolicy"</span>, </span></span><span class=line><span class=ln id=hl-8-12><a class=lnlinks href=#hl-8-12>12</a></span><span class=cl> <span class=s2>"name"</span>: <span class=s2>"example-application-xqlsz-lp9wt"</span> </span></span><span class=line><span class=ln id=hl-8-13><a class=lnlinks href=#hl-8-13>13</a></span><span class=cl> <span class=o>}</span>, </span></span><span class=line><span class=ln id=hl-8-14><a class=lnlinks href=#hl-8-14>14</a></span><span class=cl> <span class=o>{</span> </span></span><span class=line><span class=ln id=hl-8-15><a class=lnlinks href=#hl-8-15>15</a></span><span class=cl> <span class=s2>"apiVersion"</span>: <span class=s2>"awsblueprints.io/v1alpha1"</span>, </span></span><span class=line><span class=ln id=hl-8-16><a class=lnlinks href=#hl-8-16>16</a></span><span class=cl> <span class=s2>"kind"</span>: <span class=s2>"XIAMPolicy"</span>, </span></span><span class=line><span class=ln id=hl-8-17><a class=lnlinks href=#hl-8-17>17</a></span><span class=cl> <span class=s2>"name"</span>: <span class=s2>"example-application-xqlsz-btwkn"</span> </span></span><span class=line><span class=ln id=hl-8-18><a class=lnlinks href=#hl-8-18>18</a></span><span class=cl> <span class=o>}</span>, </span></span><span class=line><span class=ln id=hl-8-19><a class=lnlinks href=#hl-8-19>19</a></span><span class=cl> <span class=o>{</span> </span></span><span class=line><span class=ln id=hl-8-20><a class=lnlinks href=#hl-8-20>20</a></span><span class=cl> <span class=s2>"apiVersion"</span>: <span class=s2>"awsblueprints.io/v1alpha1"</span>, </span></span><span class=line><span class=ln id=hl-8-21><a class=lnlinks href=#hl-8-21>21</a></span><span class=cl> <span class=s2>"kind"</span>: <span class=s2>"IRSA"</span> </span></span><span class=line><span class=ln id=hl-8-22><a class=lnlinks href=#hl-8-22>22</a></span><span class=cl> <span class=o>}</span> </span></span><span class=line><span class=ln id=hl-8-23><a class=lnlinks href=#hl-8-23>23</a></span><span class=cl><span class=o>]</span> </span></span></code></pre></div></li><li><p>Notice the last element in the array doesn’t have a name. When a resource in composition fails validation, the resource object isn’t created and doesn’t have a name. For this particular issue, you must specify the namespace for the IRSA resource.</p></li></ol><h4 id=composite-resource-definition>Composite resource definition <a class=anchor-link id=composite-resource-definition href=#composite-resource-definition aria-label="Link to this section: Composite resource definition"></a></h4><p>Debugging Composite Resource Definition (XRD) is like debugging Compositions.</p><ol><li><p>Get the XRD</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>kubectl get xrd testing.awsblueprints.io </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> </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>NAME ESTABLISHED OFFERED AGE </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>testing.awsblueprints.io 66s </span></span></code></pre></div></li><li><p>Notice its status it not established. You describe this XRD to get its events.</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>kubectl describe xrd testing.awsblueprints.io </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> </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>Events: </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>Type Reason Age From Message </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>---- ------ ---- ---- ------- </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>Normal ApplyClusterRoles 3m19s <span class=o>(</span>x3 over 3m19s<span class=o>)</span> rbac/compositeresourcedefinition.apiextensions.crossplane.io Applied RBAC ClusterRoles </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>Normal RenderCRD 18s <span class=o>(</span>x9 over 3m19s<span class=o>)</span> defined/compositeresourcedefinition.apiextensions.crossplane.io Rendered composite resource CustomResourceDefinition </span></span><span class=line><span class=ln id=hl-10-8><a class=lnlinks href=#hl-10-8>8</a></span><span class=cl>Warning EstablishComposite 18s <span class=o>(</span>x9 over 3m19s<span class=o>)</span> defined/compositeresourcedefinition.apiextensions.crossplane.io can<span class=s1>'t apply rendered composite resource CustomResourceDefinition: can'</span>t create object: CustomResourceDefinition.apiextensions.k8s.io <span class=s2>"testing.awsblueprints.io"</span> is invalid: metadata.name: Invalid value: <span class=s2>"testing.awsblueprints.io"</span>: must be spec.names.plural+<span class=s2>"."</span>+spec.group </span></span></code></pre></div></li><li><p>You see in the events that Crossplane can’t generate corresponding CRDs for this XRD. In this case, ensure the name is <code>spec.names.plural+"."+spec.group</code></p></li></ol><h4 id=providers>Providers <a class=anchor-link id=providers href=#providers aria-label="Link to this section: Providers"></a></h4><p>You can use install providers in two ways: <code>configuration.pkg.crossplane.io</code> and <code>provider.pkg.crossplane.io</code>. You can use either one to install providers with no functional differences to providers themselves. If you define a <code>configuration.pkg.crossplane.io</code> object, Crossplane creates a <code>provider.pkg.crossplane.io</code> object and manages it. Refer to <a href=https://docs.crossplane.io/master/concepts/packages/>the Packages documentation</a> for more information about Crossplane Packages.</p><p>If you are experiencing provider issues, steps below are a good starting point.</p><ol><li><p>Check the status of provider object.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-11-1><a class=lnlinks href=#hl-11-1> 1</a></span><span class=cl>kubectl describe provider.pkg.crossplane.io provider-aws </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></span><span class=line><span class=ln id=hl-11-3><a class=lnlinks href=#hl-11-3> 3</a></span><span class=cl>Status: </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> Conditions: </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> Last Transition Time: 2022-08-04T16:19:44Z </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> Reason: HealthyPackageRevision </span></span><span class=line><span class=ln id=hl-11-7><a class=lnlinks href=#hl-11-7> 7</a></span><span class=cl> Status: True </span></span><span class=line><span class=ln id=hl-11-8><a class=lnlinks href=#hl-11-8> 8</a></span><span class=cl> Type: Healthy </span></span><span class=line><span class=ln id=hl-11-9><a class=lnlinks href=#hl-11-9> 9</a></span><span class=cl> Last Transition Time: 2022-08-04T16:14:29Z </span></span><span class=line><span class=ln id=hl-11-10><a class=lnlinks href=#hl-11-10>10</a></span><span class=cl> Reason: ActivePackageRevision </span></span><span class=line><span class=ln id=hl-11-11><a class=lnlinks href=#hl-11-11>11</a></span><span class=cl> Status: True </span></span><span class=line><span class=ln id=hl-11-12><a class=lnlinks href=#hl-11-12>12</a></span><span class=cl> Type: Installed </span></span><span class=line><span class=ln id=hl-11-13><a class=lnlinks href=#hl-11-13>13</a></span><span class=cl> Current Identifier: crossplane/provider-aws:v0.29.0 </span></span><span class=line><span class=ln id=hl-11-14><a class=lnlinks href=#hl-11-14>14</a></span><span class=cl> Current Revision: provider-aws-a2e16ca2fc1a </span></span><span class=line><span class=ln id=hl-11-15><a class=lnlinks href=#hl-11-15>15</a></span><span class=cl>Events: </span></span><span class=line><span class=ln id=hl-11-16><a class=lnlinks href=#hl-11-16>16</a></span><span class=cl> Type Reason Age From Message </span></span><span class=line><span class=ln id=hl-11-17><a class=lnlinks href=#hl-11-17>17</a></span><span class=cl> ---- ------ ---- ---- ------- </span></span><span class=line><span class=ln id=hl-11-18><a class=lnlinks href=#hl-11-18>18</a></span><span class=cl> Normal InstallPackageRevision 9m49s <span class=o>(</span>x237 over 4d17h<span class=o>)</span> packages/provider.pkg.crossplane.io Successfully installed package revision </span></span></code></pre></div><p>In the output above you see that this provider is healthy. To get more information about this provider, you can dig deeper. The <code>Current Revision</code> field let you know of your next object to look at.</p></li><li><p>When you create a provider object, Crossplane creates a <code>ProviderRevision</code> object based on the contents of the OCI image. In this example, you’re specifying the OCI image to be <code>crossplane/provider-aws:v0.29.0</code>. This image contains a YAML file which defines Kubernetes objects such as Deployment, ServiceAccount, and CRDs. The <code>ProviderRevision</code> object creates resources necessary for a provider to function based on the contents of the YAML file. To inspect what’s deployed as part of the provider package, you inspect the ProviderRevision object. The <code>Current Revision</code> field above indicates which ProviderRevision object this provider uses.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-12-1><a class=lnlinks href=#hl-12-1>1</a></span><span class=cl>kubectl get providerrevision provider-aws-a2e16ca2fc1a </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></span><span class=line><span class=ln id=hl-12-3><a class=lnlinks href=#hl-12-3>3</a></span><span class=cl>NAME HEALTHY REVISION IMAGE STATE DEP-FOUND DEP-INSTALLED AGE </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>provider-aws-a2e16ca2fc1a True <span class=m>1</span> crossplane/provider-aws:v0.29.0 Active 19d </span></span></code></pre></div><p>When you describe the object, you find all CRDs managed by this object.</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>kubectl describe providerrevision provider-aws-a2e16ca2fc1a </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></span><span class=line><span class=ln id=hl-13-3><a class=lnlinks href=#hl-13-3> 3</a></span><span class=cl>Status: </span></span><span class=line><span class=ln id=hl-13-4><a class=lnlinks href=#hl-13-4> 4</a></span><span class=cl> Controller Ref: </span></span><span class=line><span class=ln id=hl-13-5><a class=lnlinks href=#hl-13-5> 5</a></span><span class=cl> Name: provider-aws-a2e16ca2fc1a </span></span><span class=line><span class=ln id=hl-13-6><a class=lnlinks href=#hl-13-6> 6</a></span><span class=cl> Object Refs: </span></span><span class=line><span class=ln id=hl-13-7><a class=lnlinks href=#hl-13-7> 7</a></span><span class=cl> API Version: apiextensions.k8s.io/v1 </span></span><span class=line><span class=ln id=hl-13-8><a class=lnlinks href=#hl-13-8> 8</a></span><span class=cl> Kind: CustomResourceDefinition </span></span><span class=line><span class=ln id=hl-13-9><a class=lnlinks href=#hl-13-9> 9</a></span><span class=cl> Name: natgateways.ec2.aws.crossplane.io </span></span><span class=line><span class=ln id=hl-13-10><a class=lnlinks href=#hl-13-10>10</a></span><span class=cl> UID: 5c36d1bc-61b8-44f8-bca0-47e368af87a9 </span></span><span class=line><span class=ln id=hl-13-11><a class=lnlinks href=#hl-13-11>11</a></span><span class=cl> .... </span></span><span class=line><span class=ln id=hl-13-12><a class=lnlinks href=#hl-13-12>12</a></span><span class=cl>Events: </span></span><span class=line><span class=ln id=hl-13-13><a class=lnlinks href=#hl-13-13>13</a></span><span class=cl> Type Reason Age From Message </span></span><span class=line><span class=ln id=hl-13-14><a class=lnlinks href=#hl-13-14>14</a></span><span class=cl> ---- ------ ---- ---- ------- </span></span><span class=line><span class=ln id=hl-13-15><a class=lnlinks href=#hl-13-15>15</a></span><span class=cl> Normal SyncPackage 22m <span class=o>(</span>x369 over 4d18h<span class=o>)</span> packages/providerrevision.pkg.crossplane.io Successfully configured package revision </span></span><span class=line><span class=ln id=hl-13-16><a class=lnlinks href=#hl-13-16>16</a></span><span class=cl> Normal BindClusterRole 15m <span class=o>(</span>x348 over 4d18h<span class=o>)</span> rbac/providerrevision.pkg.crossplane.io Bound system ClusterRole to provider ServiceAccount </span></span><span class=line><span class=ln id=hl-13-17><a class=lnlinks href=#hl-13-17>17</a></span><span class=cl> Normal ApplyClusterRoles 15m <span class=o>(</span>x364 over 4d18h<span class=o>)</span> rbac/providerrevision.pkg.crossplane.io Applied RBAC ClusterRoles </span></span></code></pre></div><p>The event field also indicates any issues that may have occurred during this process.</p></li><li><p>If you don’t see any errors in the event field above, you should check if Crossplane provisioned deployments and their status.</p><div class=highlight><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>kubectl get deployment -n crossplane-system </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></span><span class=line><span class=ln id=hl-14-3><a class=lnlinks href=#hl-14-3> 3</a></span><span class=cl>NAME READY UP-TO-DATE AVAILABLE AGE </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>crossplane 1/1 <span class=m>1</span> <span class=m>1</span> 105d </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>crossplane-rbac-manager 1/1 <span class=m>1</span> <span class=m>1</span> 105d </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>provider-aws-a2e16ca2fc1a 1/1 <span class=m>1</span> <span class=m>1</span> 19d </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></span><span class=line><span class=ln id=hl-14-8><a class=lnlinks href=#hl-14-8> 8</a></span><span class=cl>kubectl get pods -n crossplane-system </span></span><span class=line><span class=ln id=hl-14-9><a class=lnlinks href=#hl-14-9> 9</a></span><span class=cl> </span></span><span class=line><span class=ln id=hl-14-10><a class=lnlinks href=#hl-14-10>10</a></span><span class=cl>NAME READY STATUS RESTARTS AGE </span></span><span class=line><span class=ln id=hl-14-11><a class=lnlinks href=#hl-14-11>11</a></span><span class=cl>crossplane-54db688c8d-qng6b 2/2 Running <span class=m>0</span> 4d19h </span></span><span class=line><span class=ln id=hl-14-12><a class=lnlinks href=#hl-14-12>12</a></span><span class=cl>crossplane-rbac-manager-5776c9fbf4-wn5rj 1/1 Running <span class=m>0</span> 4d19h </span></span><span class=line><span class=ln id=hl-14-13><a class=lnlinks href=#hl-14-13>13</a></span><span class=cl>provider-aws-a2e16ca2fc1a-776769ccbd-4dqml 1/1 Running <span class=m>0</span> 4d23h </span></span></code></pre></div><p>If there are any pods failing, check its logs and remedy the problem.</p></li></ol><h2 id=pausing-crossplane>Pausing Crossplane <a class=anchor-link id=pausing-crossplane href=#pausing-crossplane aria-label="Link to this section: Pausing Crossplane"></a></h2><p>Sometimes, for example when you encounter a bug, it can be useful to pause Crossplane if you want to stop it from actively attempting to manage your resources. To pause Crossplane without deleting all of its resources, run the following command to scale down its deployment:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-15-1><a class=lnlinks href=#hl-15-1>1</a></span><span class=cl>kubectl -n crossplane-system scale --replicas<span class=o>=</span><span class=m>0</span> deployment/crossplane </span></span></code></pre></div><p>Once you have been able to rectify the problem or smooth things out, you can unpause Crossplane by scaling its deployment back up:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-16-1><a class=lnlinks href=#hl-16-1>1</a></span><span class=cl>kubectl -n crossplane-system scale --replicas<span class=o>=</span><span class=m>1</span> deployment/crossplane </span></span></code></pre></div><h2 id=pausing-providers>Pausing Providers <a class=anchor-link id=pausing-providers href=#pausing-providers aria-label="Link to this section: Pausing Providers"></a></h2><p>Providers can also be paused when troubleshooting an issue or orchestrating a complex migration of resources. Creating and referencing a <code>ControllerConfig</code> is the easiest way to scale down a provider, and the <code>ControllerConfig</code> can be modified or the reference can be removed to scale it back up:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><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=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>pkg.crossplane.io/v1alpha1</span><span class=w> </span></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=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>ControllerConfig</span><span class=w> </span></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><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-17-4><a class=lnlinks href=#hl-17-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>scale-config</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-17-5><a class=lnlinks href=#hl-17-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-17-6><a class=lnlinks href=#hl-17-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>0</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-17-7><a class=lnlinks href=#hl-17-7> 7</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-17-8><a class=lnlinks href=#hl-17-8> 8</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>pkg.crossplane.io/v1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-17-9><a class=lnlinks href=#hl-17-9> 9</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-17-10><a class=lnlinks href=#hl-17-10>10</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-17-11><a class=lnlinks href=#hl-17-11>11</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</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-17-12><a class=lnlinks href=#hl-17-12>12</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-17-13><a class=lnlinks href=#hl-17-13>13</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/crossplane-contrib/provider-aws:v0.33.0</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-17-14><a class=lnlinks href=#hl-17-14>14</a></span><span class=cl><span class=w> </span><span class=nt>controllerConfigRef</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-17-15><a class=lnlinks href=#hl-17-15>15</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>scale-config</span><span class=w> </span></span></span></code></pre></div><blockquote><p>Note that a reference to a <code>ControllerConfig</code> can be added to an already installed <code>Provider</code> and it will update its <code>Deployment</code> accordingly.</p></blockquote><h2 id=deleting-when-a-resource-hangs>Deleting When a Resource Hangs <a class=anchor-link id=deleting-when-a-resource-hangs href=#deleting-when-a-resource-hangs aria-label="Link to this section: Deleting When a Resource Hangs"></a></h2><p>The resources that Crossplane manages will automatically be cleaned up so as not to leave anything running behind. This is accomplished by using finalizers, but in certain scenarios the finalizer can prevent the Kubernetes object from getting deleted.</p><p>To deal with this, we essentially want to patch the object to remove its finalizer, which will then allow it to be deleted completely. Note that this won’t necessarily delete the external resource that Crossplane was managing, so you will want to go to your cloud provider’s console and look there for any lingering resources to clean up.</p><p>In general, a finalizer can be removed from an object with this 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-18-1><a class=lnlinks href=#hl-18-1>1</a></span><span class=cl>kubectl patch <resource-type> <resource-name> -p <span class=s1>'{"metadata":{"finalizers": []}}'</span> --type<span class=o>=</span>merge </span></span></code></pre></div><p>For example, for a <code>CloudSQLInstance</code> managed resource (<code>database.gcp.crossplane.io</code>) named <code>my-db</code>, you can remove its finalizer with:</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>kubectl patch cloudsqlinstance my-db -p <span class=s1>'{"metadata":{"finalizers": []}}'</span> --type<span class=o>=</span>merge </span></span></code></pre></div><h2 id=tips-tricks-and-troubleshooting>Tips, Tricks, and Troubleshooting <a class=anchor-link id=tips-tricks-and-troubleshooting href=#tips-tricks-and-troubleshooting aria-label="Link to this section: Tips, Tricks, and Troubleshooting"></a></h2><p>In this section we’ll cover some common tips, tricks, and troubleshooting steps for working with Composite Resources. If you’re trying to track down why your Composite Resources aren’t working the [Troubleshooting][trouble-ref] page also has some useful information.</p><h3 id=troubleshooting-claims-and-xrs>Troubleshooting Claims and XRs <a class=anchor-link id=troubleshooting-claims-and-xrs href=#troubleshooting-claims-and-xrs aria-label="Link to this section: Troubleshooting Claims and XRs"></a></h3><p>Crossplane relies heavily on status conditions and events for troubleshooting. You can see both using <code>kubectl describe</code> - for example:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-console data-lang=console><span class=line><span class=ln id=hl-20-1><a class=lnlinks href=#hl-20-1>1</a></span><span class=cl><span class=gp>#</span> Describe the PostgreSQLInstance claim named my-db </span></span><span class=line><span class=ln id=hl-20-2><a class=lnlinks href=#hl-20-2>2</a></span><span class=cl><span class=go>kubectl describe postgresqlinstance.database.example.org my-db </span></span></span></code></pre></div><p>Per Kubernetes convention, Crossplane keeps errors close to the place they happen. This means that if your claim isn’t becoming ready due to an issue with your <code>Composition</code> or with a composed resource you’ll need to “follow the references” to find out why. Your claim will only tell you that the XR isn’t yet ready.</p><p>To follow the references:</p><ol><li>Find your XR by running <code>kubectl describe</code> on your claim and looking for its “Resource Ref” (aka <code>spec.resourceRef</code>).</li><li>Run <code>kubectl describe</code> on your XR. This is where you’ll find out about issues with the <code>Composition</code> you’re using, if any.</li><li>If there are no issues but your XR doesn’t seem to be becoming ready, take a look for the “Resource Refs” (or <code>spec.resourceRefs</code>) to find your composed resources.</li><li>Run <code>kubectl describe</code> on each referenced composed resource to determine whether it’s ready and what issues, if any, it’s encountering.</li></ol></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>