CINXE.COM

Managed Resources · Crossplane v1.16

<!doctype html><html lang=en class=color-toggle-hidden color-theme=light><head><meta charset=utf-8><script type="text/javascript"> ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(t){try{s.console&&console.log(t)}catch(e){}}var o,i=t("ee"),a=t(32),s={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(s.console=!0,o.indexOf("dev")!==-1&&(s.dev=!0),o.indexOf("nr_dev")!==-1&&(s.nrDev=!0))}catch(c){}s.nrDev&&i.on("internal-error",function(t){r(t.stack)}),s.dev&&i.on("fn-err",function(t,e,n){r(n.stack)}),s.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(s,function(t,e){return t}).join(", ")))},{}],2:[function(t,e,n){function r(t,e,n,r,s){try{l?l-=1:o(s||new UncaughtException(t,e,n),!0)}catch(f){try{i("ierr",[f,c.now(),!0])}catch(d){}}return"function"==typeof u&&u.apply(this,a(arguments))}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function o(t,e){var n=e?null:c.now();i("err",[t,n])}var i=t("handle"),a=t(33),s=t("ee"),c=t("loader"),f=t("gos"),u=window.onerror,d=!1,p="nr@seenError";if(!c.disabled){var l=0;c.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(h){"stack"in h&&(t(14),t(13),"addEventListener"in window&&t(7),c.xhrWrappable&&t(15),d=!0)}s.on("fn-start",function(t,e,n){d&&(l+=1)}),s.on("fn-err",function(t,e,n){d&&!n[p]&&(f(n,p,function(){return!0}),this.thrown=!0,o(n))}),s.on("fn-end",function(){d&&!this.thrown&&l>0&&(l-=1)}),s.on("internal-error",function(t){i("ierr",[t,c.now(),!0])})}},{}],3:[function(t,e,n){var r=t("loader");r.disabled||(r.features.ins=!0)},{}],4:[function(t,e,n){function r(){U++,L=g.hash,this[u]=y.now()}function o(){U--,g.hash!==L&&i(0,!0);var t=y.now();this[h]=~~this[h]+t-this[u],this[d]=t}function i(t,e){E.emit("newURL",[""+g,e])}function a(t,e){t.on(e,function(){this[e]=y.now()})}var s="-start",c="-end",f="-body",u="fn"+s,d="fn"+c,p="cb"+s,l="cb"+c,h="jsTime",m="fetch",v="addEventListener",w=window,g=w.location,y=t("loader");if(w[v]&&y.xhrWrappable&&!y.disabled){var x=t(11),b=t(12),E=t(9),R=t(7),O=t(14),T=t(8),P=t(15),S=t(10),M=t("ee"),N=M.get("tracer"),C=t(23);t(17),y.features.spa=!0;var L,U=0;M.on(u,r),b.on(p,r),S.on(p,r),M.on(d,o),b.on(l,o),S.on(l,o),M.buffer([u,d,"xhr-resolved"]),R.buffer([u]),O.buffer(["setTimeout"+c,"clearTimeout"+s,u]),P.buffer([u,"new-xhr","send-xhr"+s]),T.buffer([m+s,m+"-done",m+f+s,m+f+c]),E.buffer(["newURL"]),x.buffer([u]),b.buffer(["propagate",p,l,"executor-err","resolve"+s]),N.buffer([u,"no-"+u]),S.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(T,m+s),a(T,m+"-done"),a(S,"new-jsonp"),a(S,"jsonp-end"),a(S,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,C(!0)),w[v]("load",i,C(!0)),w[v]("popstate",function(){i(0,U>1)},C(!0))}},{}],5:[function(t,e,n){function r(){var t=new PerformanceObserver(function(t,e){var n=t.getEntries();s(v,[n])});try{t.observe({entryTypes:["resource"]})}catch(e){}}function o(t){if(s(v,[window.performance.getEntriesByType(w)]),window.performance["c"+p])try{window.performance[h](m,o,!1)}catch(t){}else try{window.performance[h]("webkit"+m,o,!1)}catch(t){}}function i(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var a=t("ee"),s=t("handle"),c=t(14),f=t(13),u=t(6),d=t(23),p="learResourceTimings",l="addEventListener",h="removeEventListener",m="resourcetimingbufferfull",v="bstResource",w="resource",g="-start",y="-end",x="fn"+g,b="fn"+y,E="bstTimer",R="pushState",O=t("loader");if(!O.disabled){O.features.stn=!0,t(9),"addEventListener"in window&&t(7);var T=NREUM.o.EV;a.on(x,function(t,e){var n=t[0];n instanceof T&&(this.bstStart=O.now())}),a.on(b,function(t,e){var n=t[0];n instanceof T&&s("bst",[n,e,this.bstStart,O.now()])}),c.on(x,function(t,e,n){this.bstStart=O.now(),this.bstType=n}),c.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),this.bstType])}),f.on(x,function(){this.bstStart=O.now()}),f.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),"requestAnimationFrame"])}),a.on(R+g,function(t){this.time=O.now(),this.startPath=location.pathname+location.hash}),a.on(R+y,function(t){s("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),u()?(s(v,[window.performance.getEntriesByType("resource")]),r()):l in window.performance&&(window.performance["c"+p]?window.performance[l](m,o,d(!1)):window.performance[l]("webkit"+m,o,d(!1))),document[l]("scroll",i,d(!1)),document[l]("keypress",i,d(!1)),document[l]("click",i,d(!1))}}},{}],6:[function(t,e,n){e.exports=function(){return"PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver}},{}],7:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){s.inPlace(t,[u,d],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),s=t("wrap-function")(a,!0),c=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var r=c(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?s(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],8:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=i(arguments),e={};o.emit(n+"before-start",[t],e);var a;e[m]&&e[m].dt&&(a=e[m].dt);var s=r.apply(this,t);return o.emit(n+"start",[t,a],s),s.then(function(t){return o.emit(n+"end",[null,t],s),t},function(t){throw o.emit(n+"end",[t],s),t})})}var o=t("ee").get("fetch"),i=t(33),a=t(32);e.exports=o;var s=window,c="fetch-",f=c+"body-",u=["arrayBuffer","blob","json","text","formData"],d=s.Request,p=s.Response,l=s.fetch,h="prototype",m="nr@context";d&&p&&l&&(a(u,function(t,e){r(d[h],e,f),r(p[h],e,f)}),r(s,"fetch",c),o.on(c+"end",function(t,e){var n=this;if(e){var r=e.headers.get("content-length");null!==r&&(n.rxSize=r),o.emit(c+"done",[null,e],n)}else o.emit(c+"done",[t],n)}))},{}],9:[function(t,e,n){var r=t("ee").get("history"),o=t("wrap-function")(r);e.exports=r;var i=window.history&&window.history.constructor&&window.history.constructor.prototype,a=window.history;i&&i.pushState&&i.replaceState&&(a=i),o.inPlace(a,["pushState","replaceState"],"-")},{}],10:[function(t,e,n){function r(t){function e(){f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}function n(){f.emit("jsonp-error",[],l),f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}var r=t&&"string"==typeof t.nodeName&&"script"===t.nodeName.toLowerCase();if(r){var o="function"==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var d=s(a),p="function"==typeof d.parent[d.key];if(p){var l={};u.inPlace(d.parent,[d.key],"cb-",l),t.addEventListener("load",e,c(!1)),t.addEventListener("error",n,c(!1)),f.emit("new-jsonp",[t.src],l)}}}}}function o(){return"addEventListener"in window}function i(t){var e=t.match(d);return e?e[1]:null}function a(t,e){var n=t.match(l),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function s(t){var e=t.match(p);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var c=t(23),f=t("ee").get("jsonp"),u=t("wrap-function")(f);if(e.exports=f,o()){var d=/[?&](?:callback|cb)=([^&#]+)/,p=/(.*)\.([^.]+)/,l=/^(\w+)(\.|$)(.*)$/,h=["appendChild","insertBefore","replaceChild"];Node&&Node.prototype&&Node.prototype.appendChild?u.inPlace(Node.prototype,h,"dom-"):(u.inPlace(HTMLElement.prototype,h,"dom-"),u.inPlace(HTMLHeadElement.prototype,h,"dom-"),u.inPlace(HTMLBodyElement.prototype,h,"dom-")),f.on("dom-start",function(t){r(t[0])})}},{}],11:[function(t,e,n){var r=t("ee").get("mutation"),o=t("wrap-function")(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],12:[function(t,e,n){function r(t){var e=i.context(),n=s(t,"executor-",e,null,!1),r=new f(n);return i.context(r).getCtx=function(){return e},r}var o=t("wrap-function"),i=t("ee").get("promise"),a=t("ee").getOrSetContext,s=o(i),c=t(32),f=NREUM.o.PR;e.exports=i,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){i.emit("propagate",[null,!o],a,!1,!1),o=o||!t}}var o=!1;c(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var a=e.apply(f,arguments),s=f.resolve(a);return s}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&i.emit("propagate",[t,!0],n,!1,!1),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),c(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),o.wrapInPlace(f.prototype,"then",function(t){return function(){var e=this,n=o.argsToArray.apply(this,arguments),r=a(e);r.promise=e,n[0]=s(n[0],"cb-",r,null,!1),n[1]=s(n[1],"cb-",r,null,!1);var c=t.apply(this,n);return r.nextPromise=c,i.emit("propagate",[e,!0],c,!1,!1),c}}),i.on("executor-start",function(t){t[0]=s(t[0],"resolve-",this,null,!1),t[1]=s(t[1],"resolve-",this,null,!1)}),i.on("executor-err",function(t,e,n){t[1](n)}),i.on("cb-end",function(t,e,n){i.emit("propagate",[n,!0],this.nextPromise,!1,!1)}),i.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=i.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],13:[function(t,e,n){var r=t("ee").get("raf"),o=t("wrap-function")(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],14:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t("wrap-function")(i),s="setTimeout",c="setInterval",f="clearTimeout",u="-start",d="-";e.exports=i,a.inPlace(window,[s,"setImmediate"],s+d),a.inPlace(window,[c],c+d),a.inPlace(window,[f,"clearImmediate"],f+d),i.on(c+u,r),i.on(s+u,o)},{}],15:[function(t,e,n){function r(t,e){d.inPlace(e,["onreadystatechange"],"fn-",s)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),d.inPlace(t,y,"fn-",s)}function i(t){x.push(t),m&&(E?E.then(a):w?w(a):(R=-R,O.data=R))}function a(){for(var t=0;t<x.length;t++)r([],x[t]);x.length&&(x=[])}function s(t,e){return e}function c(t,e){for(var n in t)e[n]=t[n];return e}t(7);var f=t("ee"),u=f.get("xhr"),d=t("wrap-function")(u),p=t(23),l=NREUM.o,h=l.XHR,m=l.MO,v=l.PR,w=l.SI,g="readystatechange",y=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],x=[];e.exports=u;var b=window.XMLHttpRequest=function(t){var e=new h(t);try{u.emit("new-xhr",[e],e),e.addEventListener(g,o,p(!1))}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(c(h,b),b.prototype=h.prototype,d.inPlace(b.prototype,["open","send"],"-xhr-",s),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),m){var E=v&&v.resolve();if(!w&&!v){var R=1,O=document.createTextNode(R);new m(a).observe(O,{characterData:!0})}}else f.on("fn-end",function(t){t[0]&&t[0].type===g||a()})},{}],16:[function(t,e,n){function r(t){if(!s(t))return null;var e=window.NREUM;if(!e.loader_config)return null;var n=(e.loader_config.accountID||"").toString()||null,r=(e.loader_config.agentID||"").toString()||null,f=(e.loader_config.trustKey||"").toString()||null;if(!n||!r)return null;var h=l.generateSpanId(),m=l.generateTraceId(),v=Date.now(),w={spanId:h,traceId:m,timestamp:v};return(t.sameOrigin||c(t)&&p())&&(w.traceContextParentHeader=o(h,m),w.traceContextStateHeader=i(h,v,n,r,f)),(t.sameOrigin&&!u()||!t.sameOrigin&&c(t)&&d())&&(w.newrelicHeader=a(h,m,v,n,r,f)),w}function o(t,e){return"00-"+e+"-"+t+"-01"}function i(t,e,n,r,o){var i=0,a="",s=1,c="",f="";return o+"@nr="+i+"-"+s+"-"+n+"-"+r+"-"+t+"-"+a+"-"+c+"-"+f+"-"+e}function a(t,e,n,r,o,i){var a="btoa"in window&&"function"==typeof window.btoa;if(!a)return null;var s={v:[0,1],d:{ty:"Browser",ac:r,ap:o,id:t,tr:e,ti:n}};return i&&r!==i&&(s.d.tk=i),btoa(JSON.stringify(s))}function s(t){return f()&&c(t)}function c(t){var e=!1,n={};if("init"in NREUM&&"distributed_tracing"in NREUM.init&&(n=NREUM.init.distributed_tracing),t.sameOrigin)e=!0;else if(n.allowed_origins instanceof Array)for(var r=0;r<n.allowed_origins.length;r++){var o=h(n.allowed_origins[r]);if(t.hostname===o.hostname&&t.protocol===o.protocol&&t.port===o.port){e=!0;break}}return e}function f(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.enabled}function u(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.exclude_newrelic_header}function d(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&NREUM.init.distributed_tracing.cors_use_newrelic_header!==!1}function p(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.cors_use_tracecontext_headers}var l=t(29),h=t(18);e.exports={generateTracePayload:r,shouldGenerateTrace:s}},{}],17:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<p;r++)t.removeEventListener(d[r],this.listener,!1);e.aborted||(n.duration=a.now()-this.startTime,this.loadCaptureCalled||4!==t.readyState?null==e.status&&(e.status=0):i(this,t),n.cbTime=this.cbTime,s("xhr",[e,n,this.startTime,this.endTime,"xhr"],this))}}function o(t,e){var n=c(e),r=t.params;r.hostname=n.hostname,r.port=n.port,r.protocol=n.protocol,r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.parsedOrigin=n,t.sameOrigin=n.sameOrigin}function i(t,e){t.params.status=e.status;var n=v(e,t.lastSize);if(n&&(t.metrics.rxSize=n),t.sameOrigin){var r=e.getResponseHeader("X-NewRelic-App-Data");r&&(t.params.cat=r.split(", ").pop())}t.loadCaptureCalled=!0}var a=t("loader");if(a.xhrWrappable&&!a.disabled){var s=t("handle"),c=t(18),f=t(16).generateTracePayload,u=t("ee"),d=["load","error","abort","timeout"],p=d.length,l=t("id"),h=t(24),m=t(22),v=t(19),w=t(23),g=NREUM.o.REQ,y=window.XMLHttpRequest;a.features.xhr=!0,t(15),t(8),u.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,e.loadCaptureCalled=!1,e.params=this.params||{},e.metrics=this.metrics||{},t.addEventListener("load",function(n){i(e,t)},w(!1)),h&&(h>34||h<10)||t.addEventListener("progress",function(t){e.lastSize=t.loaded},w(!1))}),u.on("open-xhr-start",function(t){this.params={method:t[0]},o(this,t[1]),this.metrics={}}),u.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid);var n=f(this.parsedOrigin);if(n){var r=!1;n.newrelicHeader&&(e.setRequestHeader("newrelic",n.newrelicHeader),r=!0),n.traceContextParentHeader&&(e.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&e.setRequestHeader("tracestate",n.traceContextStateHeader),r=!0),r&&(this.dt=n)}}),u.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=m(r);i&&(n.txSize=i)}this.startTime=a.now(),this.listener=function(t){try{"abort"!==t.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}};for(var s=0;s<p;s++)e.addEventListener(d[s],this.listener,w(!1))}),u.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),u.on("xhr-load-added",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),u.on("xhr-load-removed",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),u.on("xhr-resolved",function(){this.endTime=a.now()}),u.on("addEventListener-end",function(t,e){e instanceof y&&"load"===t[0]&&u.emit("xhr-load-added",[t[1],t[2]],e)}),u.on("removeEventListener-end",function(t,e){e instanceof y&&"load"===t[0]&&u.emit("xhr-load-removed",[t[1],t[2]],e)}),u.on("fn-start",function(t,e,n){e instanceof y&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=a.now()))}),u.on("fn-end",function(t,e){this.xhrCbStart&&u.emit("xhr-cb-time",[a.now()-this.xhrCbStart,this.onload,e],e)}),u.on("fetch-before-start",function(t){function e(t,e){var n=!1;return e.newrelicHeader&&(t.set("newrelic",e.newrelicHeader),n=!0),e.traceContextParentHeader&&(t.set("traceparent",e.traceContextParentHeader),e.traceContextStateHeader&&t.set("tracestate",e.traceContextStateHeader),n=!0),n}var n,r=t[1]||{};"string"==typeof t[0]?n=t[0]:t[0]&&t[0].url?n=t[0].url:window.URL&&t[0]&&t[0]instanceof URL&&(n=t[0].href),n&&(this.parsedOrigin=c(n),this.sameOrigin=this.parsedOrigin.sameOrigin);var o=f(this.parsedOrigin);if(o&&(o.newrelicHeader||o.traceContextParentHeader))if("string"==typeof t[0]||window.URL&&t[0]&&t[0]instanceof URL){var i={};for(var a in r)i[a]=r[a];i.headers=new Headers(r.headers||{}),e(i.headers,o)&&(this.dt=o),t.length>1?t[1]=i:t.push(i)}else t[0]&&t[0].headers&&e(t[0].headers,o)&&(this.dt=o)}),u.on("fetch-start",function(t,e){this.params={},this.metrics={},this.startTime=a.now(),this.dt=e,t.length>=1&&(this.target=t[0]),t.length>=2&&(this.opts=t[1]);var n,r=this.opts||{},i=this.target;"string"==typeof i?n=i:"object"==typeof i&&i instanceof g?n=i.url:window.URL&&"object"==typeof i&&i instanceof URL&&(n=i.href),o(this,n);var s=(""+(i&&i instanceof g&&i.method||r.method||"GET")).toUpperCase();this.params.method=s,this.txSize=m(r.body)||0}),u.on("fetch-done",function(t,e){this.endTime=a.now(),this.params||(this.params={}),this.params.status=e?e.status:0;var n;"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var r={txSize:this.txSize,rxSize:n,duration:a.now()-this.startTime};s("xhr",[this.params,r,this.startTime,this.endTime,"fetch"],this)})}},{}],18:[function(t,e,n){var r={};e.exports=function(t){if(t in r)return r[t];var e=document.createElement("a"),n=window.location,o={};e.href=t,o.port=e.port;var i=e.href.split("://");!o.port&&i[1]&&(o.port=i[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===i[0]?"443":"80"),o.hostname=e.hostname||n.hostname,o.pathname=e.pathname,o.protocol=i[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var a=!e.protocol||":"===e.protocol||e.protocol===n.protocol,s=e.hostname===document.domain&&e.port===n.port;return o.sameOrigin=a&&(!e.hostname||s),"/"===o.pathname&&(r[t]=o),o}},{}],19:[function(t,e,n){function r(t,e){var n=t.responseType;return"json"===n&&null!==e?e:"arraybuffer"===n||"blob"===n||"json"===n?o(t.response):"text"===n||""===n||void 0===n?o(t.responseText):void 0}var o=t(22);e.exports=r},{}],20:[function(t,e,n){function r(){}function o(t,e,n,r){return function(){return u.recordSupportability("API/"+e+"/called"),i(t+e,[f.now()].concat(s(arguments)),n?null:this,r),n?void 0:this}}var i=t("handle"),a=t(32),s=t(33),c=t("ee").get("tracer"),f=t("loader"),u=t(25),d=NREUM;"undefined"==typeof window.newrelic&&(newrelic=d);var p=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",h=l+"ixn-";a(p,function(t,e){d[e]=o(l,e,!0,"api")}),d.addPageAction=o(l,"addPageAction",!0),d.setCurrentRouteName=o(l,"routeName",!0),e.exports=newrelic,d.interaction=function(){return(new r).get()};var m=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(h+"tracer",[f.now(),t,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return e.apply(this,arguments)}catch(t){throw c.emit("fn-err",[arguments,this,t],n),t}finally{c.emit("fn-end",[f.now()],n)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){m[e]=o(h,e)}),newrelic.noticeError=function(t,e){"string"==typeof t&&(t=new Error(t)),u.recordSupportability("API/noticeError/called"),i("err",[t,f.now(),!1,e])}},{}],21:[function(t,e,n){function r(t){if(NREUM.init){for(var e=NREUM.init,n=t.split("."),r=0;r<n.length-1;r++)if(e=e[n[r]],"object"!=typeof e)return;return e=e[n[n.length-1]]}}e.exports={getConfiguration:r}},{}],22:[function(t,e,n){e.exports=function(t){if("string"==typeof t&&t.length)return t.length;if("object"==typeof t){if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!("undefined"!=typeof FormData&&t instanceof FormData))try{return JSON.stringify(t).length}catch(e){return}}}},{}],23:[function(t,e,n){var r=!1;try{var o=Object.defineProperty({},"passive",{get:function(){r=!0}});window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}catch(i){}e.exports=function(t){return r?{passive:!0,capture:!!t}:!!t}},{}],24:[function(t,e,n){var r=0,o=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);o&&(r=+o[1]),e.exports=r},{}],25:[function(t,e,n){function r(t,e){var n=[a,t,{name:t},e];return i("storeMetric",n,null,"api"),n}function o(t,e){var n=[s,t,{name:t},e];return i("storeEventMetrics",n,null,"api"),n}var i=t("handle"),a="sm",s="cm";e.exports={constants:{SUPPORTABILITY_METRIC:a,CUSTOM_METRIC:s},recordSupportability:r,recordCustom:o}},{}],26:[function(t,e,n){function r(){return s.exists&&performance.now?Math.round(performance.now()):(i=Math.max((new Date).getTime(),i))-a}function o(){return i}var i=(new Date).getTime(),a=i,s=t(34);e.exports=r,e.exports.offset=a,e.exports.getLastTimestamp=o},{}],27:[function(t,e,n){function r(t){return!(!t||!t.protocol||"file:"===t.protocol)}e.exports=r},{}],28:[function(t,e,n){function r(t,e){var n=t.getEntries();n.forEach(function(t){"first-paint"===t.name?p("timing",["fp",Math.floor(t.startTime)]):"first-contentful-paint"===t.name&&p("timing",["fcp",Math.floor(t.startTime)])})}function o(t,e){var n=t.getEntries();if(n.length>0){var r=n[n.length-1];if(c&&c<r.startTime)return;p("lcp",[r])}}function i(t){t.getEntries().forEach(function(t){t.hadRecentInput||p("cls",[t])})}function a(t){if(t instanceof v&&!g){var e=Math.round(t.timeStamp),n={type:t.type};e<=l.now()?n.fid=l.now()-e:e>l.offset&&e<=Date.now()?(e-=l.offset,n.fid=l.now()-e):e=l.now(),g=!0,p("timing",["fi",e,n])}}function s(t){"hidden"===t&&(c=l.now(),p("pageHide",[c]))}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var c,f,u,d,p=t("handle"),l=t("loader"),h=t(31),m=t(23),v=NREUM.o.EV;if("PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){f=new PerformanceObserver(r);try{f.observe({entryTypes:["paint"]})}catch(w){}u=new PerformanceObserver(o);try{u.observe({entryTypes:["largest-contentful-paint"]})}catch(w){}d=new PerformanceObserver(i);try{d.observe({type:"layout-shift",buffered:!0})}catch(w){}}if("addEventListener"in document){var g=!1,y=["click","keydown","mousedown","pointerdown","touchstart"];y.forEach(function(t){document.addEventListener(t,a,m(!1))})}h(s)}},{}],29:[function(t,e,n){function r(){function t(){return e?15&e[n++]:16*Math.random()|0}var e=null,n=0,r=window.crypto||window.msCrypto;r&&r.getRandomValues&&(e=r.getRandomValues(new Uint8Array(31)));for(var o,i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",a="",s=0;s<i.length;s++)o=i[s],"x"===o?a+=t().toString(16):"y"===o?(o=3&t()|8,a+=o.toString(16)):a+=o;return a}function o(){return a(16)}function i(){return a(32)}function a(t){function e(){return n?15&n[r++]:16*Math.random()|0}var n=null,r=0,o=window.crypto||window.msCrypto;o&&o.getRandomValues&&Uint8Array&&(n=o.getRandomValues(new Uint8Array(31)));for(var i=[],a=0;a<t;a++)i.push(e().toString(16));return i.join("")}e.exports={generateUuid:r,generateSpanId:o,generateTraceId:i}},{}],30:[function(t,e,n){function r(t,e){if(!o)return!1;if(t!==o)return!1;if(!e)return!0;if(!i)return!1;for(var n=i.split("."),r=e.split("."),a=0;a<r.length;a++)if(r[a]!==n[a])return!1;return!0}var o=null,i=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var s=navigator.userAgent,c=s.match(a);c&&s.indexOf("Chrome")===-1&&s.indexOf("Chromium")===-1&&(o="Safari",i=c[1])}e.exports={agent:o,version:i,match:r}},{}],31:[function(t,e,n){function r(t){function e(){t(s&&document[s]?document[s]:document[i]?"hidden":"visible")}"addEventListener"in document&&a&&document.addEventListener(a,e,o(!1))}var o=t(23);e.exports=r;var i,a,s;"undefined"!=typeof document.hidden?(i="hidden",a="visibilitychange",s="visibilityState"):"undefined"!=typeof document.msHidden?(i="msHidden",a="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(i="webkitHidden",a="webkitvisibilitychange",s="webkitVisibilityState")},{}],32:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],33:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],34:[function(t,e,n){e.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?f(t,c,a):a()}function n(n,r,o,i,a){if(a!==!1&&(a=!0),!l.aborted||i){t&&a&&t(n,r,o);for(var s=e(o),c=m(n),f=c.length,u=0;u<f;u++)c[u].apply(s,r);var p=d[y[n]];return p&&p.push([x,n,r,s]),s}}function i(t,e){g[t]=m(t).concat(e)}function h(t,e){var n=g[t];if(n)for(var r=0;r<n.length;r++)n[r]===e&&n.splice(r,1)}function m(t){return g[t]||[]}function v(t){return p[t]=p[t]||o(n)}function w(t,e){l.aborted||u(t,function(t,n){e=e||"feature",y[n]=e,e in d||(d[e]=[])})}var g={},y={},x={on:i,addEventListener:i,removeEventListener:h,emit:n,get:v,listeners:m,context:e,buffer:w,abort:s,aborted:!1};return x}function i(t){return f(t,c,a)}function a(){return new r}function s(){(d.api||d.feature)&&(l.aborted=!0,d=l.backlog={})}var c="nr@context",f=t("gos"),u=t(32),d={},p={},l=e.exports=o();e.exports.getOrSetContext=i,l.backlog=d},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!P++){var t=T.info=NREUM.info,e=v.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(t&&t.licenseKey&&t.applicationID&&e))return f.abort();c(R,function(e,n){t[e]||(t[e]=n)});var n=a();s("mark",["onload",n+T.offset],null,"api"),s("timing",["load",n]);var r=v.createElement("script");0===t.agent.indexOf("http://")||0===t.agent.indexOf("https://")?r.src=t.agent:r.src=h+"://"+t.agent,e.parentNode.insertBefore(r,e)}}function o(){"complete"===v.readyState&&i()}function i(){s("mark",["domContent",a()+T.offset],null,"api")}var a=t(26),s=t("handle"),c=t(32),f=t("ee"),u=t(30),d=t(27),p=t(21),l=t(23),h=p.getConfiguration("ssl")===!1?"http":"https",m=window,v=m.document,w="addEventListener",g="attachEvent",y=m.XMLHttpRequest,x=y&&y.prototype,b=!d(m.location);NREUM.o={ST:setTimeout,SI:m.setImmediate,CT:clearTimeout,XHR:y,REQ:m.Request,EV:m.Event,PR:m.Promise,MO:m.MutationObserver};var E=""+location,R={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-spa-1212.min.js"},O=y&&x&&x[w]&&!/CriOS/.test(navigator.userAgent),T=e.exports={offset:a.getLastTimestamp(),now:a,origin:E,features:{},xhrWrappable:O,userAgent:u,disabled:b};if(!b){t(20),t(28),v[w]?(v[w]("DOMContentLoaded",i,l(!1)),m[w]("load",r,l(!1))):(v[g]("onreadystatechange",o),m[g]("onload",r)),s("mark",["firstbyte",a.getLastTimestamp()],null,"api");var P=0}},{}],"wrap-function":[function(t,e,n){function r(t,e){function n(e,n,r,c,f){function nrWrapper(){var i,a,u,p;try{a=this,i=d(arguments),u="function"==typeof r?r(i,a):r||{}}catch(l){o([l,"",[i,a,c],u],t)}s(n+"start",[i,a,c],u,f);try{return p=e.apply(a,i)}catch(h){throw s(n+"err",[i,a,h],u,f),h}finally{s(n+"end",[i,a,p],u,f)}}return a(e)?e:(n||(n=""),nrWrapper[p]=e,i(e,nrWrapper,t),nrWrapper)}function r(t,e,r,o,i){r||(r="");var s,c,f,u="-"===r.charAt(0);for(f=0;f<e.length;f++)c=e[f],s=t[c],a(s)||(t[c]=n(s,u?c+r:r,o,c,i))}function s(n,r,i,a){if(!h||e){var s=h;h=!0;try{t.emit(n,r,i,e,a)}catch(c){o([c,n,r,i],t)}h=s}}return t||(t=u),n.inPlace=r,n.flag=p,n}function o(t,e){e||(e=u);try{e.emit("internal-error",t)}catch(n){}}function i(t,e,n){if(Object.defineProperty&&Object.keys)try{var r=Object.keys(t);return r.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(i){o([i],n)}for(var a in t)l.call(t,a)&&(e[a]=t[a]);return e}function a(t){return!(t&&t instanceof Function&&t.apply&&!t[p])}function s(t,e){var n=e(t);return n[p]=t,i(t,n,u),n}function c(t,e,n){var r=t[e];t[e]=s(r,n)}function f(){for(var t=arguments.length,e=new Array(t),n=0;n<t;++n)e[n]=arguments[n];return e}var u=t("ee"),d=t(33),p="nr@original",l=Object.prototype.hasOwnProperty,h=!1;e.exports=r,e.exports.wrapFunction=s,e.exports.wrapInPlace=c,e.exports.argsToArray=f},{}]},{},["loader",2,17,5,3,4]); ;NREUM.loader_config={accountID:"3768898",trustKey:"3768898",agentID:"1134285132",licenseKey:"NRJS-2bc9f9fb1efc463f27c",applicationID:"1134285132"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"NRJS-2bc9f9fb1efc463f27c",applicationID:"1134285132",sa:1} newrelic.addRelease("", "Remove-ControllerConfig-r-production-4dd74f6-17d951-17d94f"); </script><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Crossplane Community"><meta name=color-scheme content="light dark"><meta name=docsearch:language content="en"><meta name=generator content="Hugo 0.119.0"><link rel=preload href=/fonts/Avenir-Roman.woff2 as=font type=font/woff2 crossorigin><meta property="og:image" content="/img/crossplane-logo-og.webp"><meta property="twitter:card" content="/img/crossplane-logo-og.webp"><meta property="og:image:width" content="600"><meta property="og:image:height" content="199"><meta property="og:image:alt" content="Crossplane name and popsicle logo"><meta property="twitter:image:alt" content="Crossplane name and popsicle logo"><meta property="og:type" content="website"><meta name=twitter:site content="@crossplane_io"><meta property="og:site_name" content="Crossplane Documentation"><meta name=description content="Managed resources are the Crossplane representation of external provider resources"><meta property="og:url" content="https://docs.crossplane.io/v1.16/concepts/managed-resources/"><meta name=docsearch:modified content="May 15, 2024"><meta name=docsearch:version content="1.16"><title>Managed Resources · Crossplane v1.16</title><link rel=canonical href=https://docs.crossplane.io/latest/concepts/managed-resources/><script>(()=>{var e=window.matchMedia("(prefers-color-scheme: dark)").matches,t=localStorage.getItem("darkSwitch")!==null&&localStorage.getItem("darkSwitch")==="dark",n=localStorage.getItem("darkSwitch")!==null&&localStorage.getItem("darkSwitch")==="light";n&&(e=!1),t||e?document.documentElement.setAttribute("color-theme","dark"):document.documentElement.setAttribute("color-theme","light")})()</script><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3 media=print onload='this.media="all"'><link rel=preconnect href=https://9UXKYX61NK-dsn.algolia.net crossorigin data-proofer-ignore><link href="https://docs.crossplane.io/scss/docs.0346bfd4a8aeace526724de64ddada78a0e5122b3b0c83b1021770d6ddef1160.css" rel=stylesheet><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=192x192 href=/android-chrome-192x192.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><link rel=manifest href=/site.webmanifest><link rel=mask-icon href=/safari-pinned-tab.svg color=#f87c44><meta name=apple-mobile-web-app-title content="Crossplane Docs"><meta name=application-name content="Crossplane Docs"><meta name=msapplication-TileColor content="#333f5b"><meta name=theme-color content="#ffffff"><meta property="og:title" content="Crossplane Docs · v1.16 · Managed Resources"><meta property="og:description" content="A managed resource (MR) represents an external service in a Provider. When users create a new managed resource, the Provider reacts by creating an external resource inside the Provider&rsquo;s …"></head><body><svg xmlns="http://www.w3.org/2000/svg" style="display:none"><symbol id="check2" viewBox="0 0 16 16"><path d="M13.854 3.646a.5.5.0 010 .708l-7 7a.5.5.0 01-.708.0l-3.5-3.5a.5.5.0 11.708-.708L6.5 10.293l6.646-6.647a.5.5.0 01.708.0z"/></symbol><symbol id="x" viewBox="0 0 16 16"><path d="M2.146 2.854a.5.5.0 11.708-.708L8 7.293l5.146-5.147a.5.5.0 01.708.708L8.707 8l5.147 5.146a.5.5.0 01-.708.708L8 8.707l-5.146 5.147a.5.5.0 01-.708-.708L7.293 8 2.146 2.854z"/></symbol><symbol id="chevron-expand" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M3.646 9.146a.5.5.0 01.708.0L8 12.793l3.646-3.647a.5.5.0 01.708.708l-4 4a.5.5.0 01-.708.0l-4-4a.5.5.0 010-.708zm0-2.292a.5.5.0 00.708.0L8 3.207l3.646 3.647a.5.5.0 00.708-.708l-4-4a.5.5.0 00-.708.0l-4 4a.5.5.0 000 .708z"/></symbol><symbol id="clipboard" viewBox="0 0 16 16"><path d="M4 1.5H3a2 2 0 00-2 2V14a2 2 0 002 2h10a2 2 0 002-2V3.5a2 2 0 00-2-2h-1v1h1a1 1 0 011 1V14a1 1 0 01-1 1H3a1 1 0 01-1-1V3.5a1 1 0 011-1h1v-1z"/><path d="M9.5 1a.5.5.0 01.5.5v1a.5.5.0 01-.5.5h-3A.5.5.0 016 2.5v-1a.5.5.0 01.5-.5h3zm-3-1A1.5 1.5.0 005 1.5v1A1.5 1.5.0 006.5 4h3A1.5 1.5.0 0011 2.5v-1A1.5 1.5.0 009.5.0h-3z"/></symbol><symbol id="plus" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8 2a.5.5.0 01.5.5v5h5a.5.5.0 010 1h-5v5a.5.5.0 01-1 0v-5h-5a.5.5.0 010-1h5v-5A.5.5.0 018 2z"/></symbol><symbol id="three-dots" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5.0 110-3 1.5 1.5.0 010 3zm5 0a1.5 1.5.0 110-3 1.5 1.5.0 010 3zm5 0a1.5 1.5.0 110-3 1.5 1.5.0 010 3z"/></symbol><symbol id="info" viewBox="0 0 16 16"><path d="M8 15A7 7 0 118 1a7 7 0 010 14zm0 1A8 8 0 108 0a8 8 0 000 16z"/><path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545.0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275.0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 11-2 0 1 1 0 012 0z"/></symbol><symbol id="check" viewBox="0 0 16 16"><path d="M8 15A7 7 0 118 1a7 7 0 010 14zm0 1A8 8 0 108 0a8 8 0 000 16z"/><path d="M10.97 4.97a.235.235.0 00-.02.022L7.477 9.417 5.384 7.323a.75.75.0 00-1.06 1.06L6.97 11.03a.75.75.0 001.079-.02l3.992-4.99A.75.75.0 0010.97 4.97z"/></symbol><symbol id="exclamation" viewBox="0 0 16 16"><path d="M8 15A7 7 0 118 1a7 7 0 010 14zm0 1A8 8 0 108 0a8 8 0 000 16z"/><path d="M7.002 11a1 1 0 112 0 1 1 0 01-2 0zM7.1 4.995a.905.905.0 111.8.0l-.35 3.507a.552.552.0 01-1.1.0L7.1 4.995z"/></symbol><symbol id="x-circle" viewBox="0 0 16 16"><path d="M8 15A7 7 0 118 1a7 7 0 010 14zm0 1A8 8 0 108 0a8 8 0 000 16z"/><path d="M4.646 4.646a.5.5.0 01.708.0L8 7.293l2.646-2.647a.5.5.0 01.708.708L8.707 8l2.647 2.646a.5.5.0 01-.708.708L8 8.707l-2.646 2.647a.5.5.0 01-.708-.708L7.293 8 4.646 5.354a.5.5.0 010-.708z"/></symbol><symbol id="fire" viewBox="0 0 16 16"><path d="M8 16c3.314.0 6-2 6-5.5.0-1.5-.5-4-2.5-6 .25 1.5-1.25 2-1.25 2C11 4 9 .5 6 0c.357 2 .5 4-2 6-1.25 1-2 2.729-2 4.5C2 14 4.686 16 8 16zm0-1c-1.657.0-3-1-3-2.75.0-.75.25-2 1.25-3C6.125 10 7 10.5 7 10.5c-.375-1.25.5-3.25 2-3.5-.179 1-.25 2 1 3 .625.5 1 1.364 1 2.25C11 14 9.657 15 8 15z"/></symbol><symbol id="search" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5.0 10-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 001.415-1.414l-3.85-3.85a1.007 1.007.0 00-.115-.1zM12 6.5a5.5 5.5.0 11-11 0 5.5 5.5.0 0111 0z"/></symbol><symbol id="clipboard-check" viewBox="0 0 16 16"><path d="M6.5.0A1.5 1.5.0 005 1.5v1A1.5 1.5.0 006.5 4h3A1.5 1.5.0 0011 2.5v-1A1.5 1.5.0 009.5.0h-3zm3 1a.5.5.0 01.5.5v1a.5.5.0 01-.5.5h-3A.5.5.0 016 2.5v-1a.5.5.0 01.5-.5h3z"/><path d="M4 1.5H3a2 2 0 00-2 2V14a2 2 0 002 2h10a2 2 0 002-2V3.5a2 2 0 00-2-2h-1v1A2.5 2.5.0 019.5 5h-3A2.5 2.5.0 014 2.5v-1zm6.854 7.354-3 3a.5.5.0 01-.708.0l-1.5-1.5a.5.5.0 01.708-.708L7.5 10.793l2.646-2.647a.5.5.0 01.708.708z"/></symbol><symbol id="pencil-square" viewBox="0 0 16 16"><path d="M15.502 1.94a.5.5.0 010 .706L14.459 3.69l-2-2L13.502.646a.5.5.0 01.707.0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5.0 00-.121.196l-.805 2.414a.25.25.0 00.316.316l2.414-.805a.5.5.0 00.196-.12l6.813-6.814z"/><path fill-rule="evenodd" d="M1 13.5A1.5 1.5.0 002.5 15h11a1.5 1.5.0 001.5-1.5v-6a.5.5.0 00-1 0v6a.5.5.0 01-.5.5h-11a.5.5.0 01-.5-.5v-11a.5.5.0 01.5-.5H9a.5.5.0 000-1H2.5A1.5 1.5.0 001 2.5v11z"/></symbol><symbol id="github" viewBox="0 0 16 16"><path d="M8 0C3.58.0.0 3.58.0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38.0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95.0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12.0.0.67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15.0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48.0 1.07-.01 1.93-.01 2.2.0.21.15.46.55.38A8.012 8.012.0 0016 8c0-4.42-3.58-8-8-8z"/></symbol><symbol id="box-arrow-up-right" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.636 3.5a.5.5.0 00-.5-.5H1.5A1.5 1.5.0 000 4.5v10A1.5 1.5.0 001.5 16h10a1.5 1.5.0 001.5-1.5V7.864a.5.5.0 00-1 0V14.5a.5.5.0 01-.5.5h-10a.5.5.0 01-.5-.5v-10a.5.5.0 01.5-.5h6.636a.5.5.0 00.5-.5z"/><path fill-rule="evenodd" d="M16 .5a.5.5.0 00-.5-.5h-5a.5.5.0 000 1h3.793L6.146 9.146a.5.5.0 10.708.708L15 1.707V5.5a.5.5.0 001 0v-5z"/></symbol></svg><header class="navbar docs-navbar navbar-expand-lg py-0 align-items-center"><div class=docs-left-toggle><button class=navbar-toggler type=button data-bs-toggle=offcanvas data-bs-target=#bdSidebar aria-controls=bdSidebar aria-label="Toggle docs content"><svg xmlns="http://www.w3.org/2000/svg" width="1.5rem" height="1.5rem" fill="currentcolor" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M2.5 11.5A.5.5.0 013 11h10a.5.5.0 010 1H3a.5.5.0 01-.5-.5zm0-4A.5.5.0 013 7h10a.5.5.0 010 1H3a.5.5.0 01-.5-.5zm0-4A.5.5.0 013 3h10a.5.5.0 010 1H3a.5.5.0 01-.5-.5z"/></svg> <span class="d-none fs-6 pe-1">Browse</span></button></div><div class="docs-right-toggle order-3"><button class=navbar-toggler type=button data-bs-toggle=offcanvas data-bs-target=#offcanvas aria-controls=offcanvas aria-label="Toggle Crossplane navigation"><svg class="bi white" aria-hidden="true"><use xlink:href="#three-dots"/></svg></button></div><div class=navbar-brand><a href=https://www.crossplane.io aria-label=Crossplane><img src=/img/crossplane-logo.svg alt="Crossplane logo" srcset="/img/crossplane-logo.svg 1x, /img/crossplane-logo.svg 2x" width=152px decoding=async data-nimg=future loading=lazy></a></div><div class="w-100 offcanvas-lg offcanvas-end" tabindex=-1 id=offcanvas aria-labelledby=offcanvasLabel><div class="offcanvas-body p-0"><div class="offcanvas-header p-0"><div class=navbar-brand><a href=https://www.crossplane.io aria-label=Crossplane><img src=/img/crossplane-logo.svg alt="Crossplane logo" srcset="/img/crossplane-logo.svg 1x, /img/crossplane-logo.svg 2x" width=152px decoding=async data-nimg=future loading=lazy></a></div><button type=button class="btn-close btn-close-white" data-bs-dismiss=offcanvas aria-label=Close data-bs-target=#offcanvas></button></div><div class="navbar-center-links collapse navbar-collapse justify-content-evenly show"><ul class="navbar-nav align-items-center"><li class=nav-item><a class=navbar-link href=https://www.crossplane.io/why-control-planes>Why Control Planes?</a></li><li class=nav-item><a class=navbar-link aria-current=page href=https://docs.crossplane.io/>Documentation</a></li><li class=nav-item><a class=navbar-link href=https://www.crossplane.io/community>Community</a></li><li class=nav-item><a class=navbar-link href=https://blog.crossplane.io/>Blog</a></li></ul></div><div class="navbar-icons flex-shrink-1 show"><ul class=navbar-nav><li class="nav-item col-xs p-2"><a class=navbar-link href=https://github.com/crossplane title="Crossplane Github Repository" target=_blank rel=noopener><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentcolor" class="icon-github" viewBox="0 0 16 16"><path d="M8 0C3.58.0.0 3.58.0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38.0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95.0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12.0.0.67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15.0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48.0 1.07-.01 1.93-.01 2.2.0.21.15.46.55.38A8.012 8.012.0 0016 8c0-4.42-3.58-8-8-8z"/></svg><span class=icon-label>Crossplane GitHub</span></a></li><li class="nav-item col-xs p-2"><div id=slack><a class=navbar-link href=https://slack.crossplane.io title="Join the Crossplane Slack" target=_blank rel=noopener><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentcolor" class="icon-slack" viewBox="0 0 16 16"><path d="M3.362 10.11c0 .926-.756 1.681-1.681 1.681S0 11.036.0 10.111C0 9.186.756 8.43 1.68 8.43h1.682v1.68zm.846.0c0-.924.756-1.68 1.681-1.68s1.681.756 1.681 1.68v4.21c0 .924-.756 1.68-1.68 1.68a1.685 1.685.0 01-1.682-1.68v-4.21zM5.89 3.362c-.926.0-1.682-.756-1.682-1.681S4.964.0 5.89.0s1.68.756 1.68 1.68v1.682H5.89zm0 .846c.924.0 1.68.756 1.68 1.681S6.814 7.57 5.89 7.57H1.68C.757 7.57.0 6.814.0 5.89c0-.926.756-1.682 1.68-1.682h4.21zm6.749 1.682c0-.926.755-1.682 1.68-1.682.925.0 1.681.756 1.681 1.681s-.756 1.681-1.68 1.681h-1.681V5.89zm-.848.0c0 .924-.755 1.68-1.68 1.68A1.685 1.685.0 018.43 5.89V1.68C8.43.757 9.186.0 10.11.0c.926.0 1.681.756 1.681 1.68v4.21zm-1.681 6.748c.926.0 1.682.756 1.682 1.681S11.036 16 10.11 16s-1.681-.756-1.681-1.68v-1.682h1.68zm0-.847c-.924.0-1.68-.755-1.68-1.68.0-.925.756-1.681 1.68-1.681h4.21c.924.0 1.68.756 1.68 1.68.0.926-.756 1.681-1.68 1.681h-4.21z"/></svg><span class=icon-label>Crossplane Slack</span></a></div></li><li class="nav-item col-x p-2"><div class="vr d-lg-flex mx-lg-2 text-white"></div></li><li class="nav-item col-xs p-2"><div class="form-check form-switch color-switcher"><input class="d-flex form-check-input" type=checkbox id=darkSwitch> <label class="d-flex navbar-link form-check-label" for=darkSwitch>Dark Mode</label></div></li></ul></div></div></div></header><div class="bd-layout docs-container" data-bs-spy=scroll data-bs-target=#TableOfContents data-bs-threshold=0,1 data-bs-root-margin="0% 0% -75%"><aside class=bd-sidebar><div class="offcanvas-lg offcanvas-start bd-sidebar-container" tabindex=-1 id=bdSidebar aria-labelledby=bdSidebarOffcanvasLabel><div class="offcanvas-header pb-4 border-bottom"><div class="d-flex offcanvas-title fw-bold" id=bdNavbarOffcanvasLabel>Crossplane Documentation - v1.16</div><div class=d-flex><button type=button class="btn-close bi align-self-center p-0" data-bs-dismiss=offcanvas aria-label=Close data-bs-target=#bdSidebar></button></div></div><div class=offcanvas-body><div class="container-fluid p-0"><div class="search-container d-flex row pt-3 ps-4 docsearch opacity-50" data-bs-target=#bdSidebar data-bs-dismiss=offcanvas aria-label="Docs navigation"><div class=p-0 id=docSearch></div></div><nav class="bd-links-nav w-100" aria-label="Docs navigation"><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/>Overview</a></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/getting-started/>Getting Started</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand Getting Started Section"> <label for=collapse-ddb170dc class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-ddb170dc aria-expanded=false aria-label="Close or Expand Getting Started Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-ddb170dc><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/getting-started/introduction/>Crossplane Introduction</a></div></div><div class="container flex-row collapse" id=collapse-ddb170dc><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/getting-started/provider-aws/>AWS Quickstart</a></div></div><div class="container flex-row collapse" id=collapse-ddb170dc><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/getting-started/provider-azure/>Azure Quickstart</a></div></div><div class="container flex-row collapse" id=collapse-ddb170dc><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/getting-started/provider-gcp/>GCP Quickstart</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/software/>Install, Upgrade and Uninstall</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand Install, Upgrade and Uninstall Section"> <label for=collapse-9f2b1e08 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-9f2b1e08 aria-expanded=false aria-label="Close or Expand Install, Upgrade and Uninstall Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-9f2b1e08><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/software/install/>Install Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-9f2b1e08><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/software/upgrade/>Upgrade Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-9f2b1e08><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/software/uninstall/>Uninstall Crossplane</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100 active-parent"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/concepts/>Concepts</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" checked aria-label="Close or Expand Concepts Section"> <label for=collapse-9e31ed45 class=sidebar-label data-bs-toggle=collapse data-bs-target=#collapse-9e31ed45 aria-expanded=false aria-label="Close or Expand Concepts Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/pods/>Crossplane Pods</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/providers/>Providers</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex active" href=https://docs.crossplane.io/v1.16/concepts/managed-resources/>Managed Resources</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/compositions/>Compositions</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/composition-revisions/>Composition Revisions</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/composite-resource-definitions/>Composite Resource Definitions</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/composite-resources/>Composite Resources</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/claims/>Claims</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/patch-and-transform/>Patch and Transforms</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/environment-configs/>Environment Configurations</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/composition-functions/>Composition Functions</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/usages/>Usages</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/connection-details/>Connection Details</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/packages/>Configuration Packages</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/server-side-apply/>Server-Side Apply</a></div></div><div class="container flex-row collapse show" id=collapse-9e31ed45><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/concepts/image-configs/>Image Configs</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/guides/>Guides</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand Guides Section"> <label for=collapse-c8ab9da3 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-c8ab9da3 aria-expanded=false aria-label="Close or Expand Guides Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/disaster-recovery/>Disaster Recovery with Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/write-a-composition-function-in-go/>Write a Composition Function in Go</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/write-a-composition-function-in-python/>Write a Composition Function in Python</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/import-existing-resources/>Import Existing Resources</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/vault-as-secret-store/>Vault as an External Secret Store</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/vault-injection/>Vault Credential Injection</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/multi-tenant/>Multi-Tenant Crossplane</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/crossplane-with-argo-cd/>Configuring Crossplane with Argo CD</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/self-signed-ca-certs/>Self-Signed CA Certs</a></div></div><div class="container flex-row collapse" id=collapse-c8ab9da3><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/guides/troubleshoot-crossplane/>Troubleshoot Crossplane</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/cli/>CLI Reference</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand CLI Reference Section"> <label for=collapse-2f1c64f4 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-2f1c64f4 aria-expanded=false aria-label="Close or Expand CLI Reference Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-2f1c64f4><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/cli/command-reference/>Command Reference</a></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/api/>API Reference</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand API Reference Section"> <label for=collapse-569451c8 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-569451c8 aria-expanded=false aria-label="Close or Expand API Reference Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href=https://docs.crossplane.io/v1.16/learn/>Learn More</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><input type=checkbox class="d-flex sidebar-checkbox" aria-label="Close or Expand Learn More Section"> <label for=collapse-47924500 class="sidebar-label collapsed" data-bs-toggle=collapse data-bs-target=#collapse-47924500 aria-expanded=false aria-label="Close or Expand Learn More Section"><svg class="flex bi sidebar-icon plus"><use xlink:href="#plus"/></svg><svg class="flex bi sidebar-icon x"><use xlink:href="#x"/></svg></label></div></div><div class="container flex-row collapse" id=collapse-47924500><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/learn/release-cycle/>Release Cycle</a></div></div><div class="container flex-row collapse" id=collapse-47924500><div class="d-flex flex-column"><a class="bd-links d-flex" href=https://docs.crossplane.io/v1.16/learn/feature-lifecycle/>Feature Lifecycle</a></div></div></div><div class="section-container container pe-0 pt-1"><div class=nav-container><a href=https://docs.crossplane.io/contribute/ class="d-inline-flex align-items-center">Contributing Guide</a></div></div><div class="section-container container pe-0 pt-1"><div class="container nav-container pe-0 d-flex w-100"><a class="d-flex w-100 border-0" href="https://github.com/orgs/crossplane/projects/20/views/9?pane=info" target=_blank>Crossplane Roadmap</a><div class="d-flex flex-shrink-1 sidebar-control-container align-self-center"><a href="https://github.com/orgs/crossplane/projects/20/views/9?pane=info"><svg class="flex bi"><use xlink:href="#box-arrow-up-right"/></svg></a></div></div></div></nav></div></div></aside><main class="bd-main order-1"><div class="bd-intro pt-2 ps-lg-2"><div class="d-md-flex flex-md-row-reverse align-items-center justify-content-between"><div class="mb-3 mb-md-0 d-flex"><div class="dropdown float-end bd-dropdown"><a class="btn btn-outline-secondary dropdown-toggle bd-dropdown-item text-reset" href=# role=button id=dropdownMenuLink data-bs-toggle=dropdown aria-haspopup=true aria-expanded=false>v1.16</a><div class="dropdown-menu bd-border-color bd-dropdown" aria-labelledby=dropdownMenuLink><a class="dropdown-item bd-dropdown-item" href=https://docs.crossplane.io/master/concepts/managed-resources/>master</a> <a class="dropdown-item bd-dropdown-item" href=https://docs.crossplane.io/v1.18/concepts/managed-resources/>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/concepts/managed-resources/>v1.17</a> <a class="dropdown-item bd-dropdown-item active" aria-current=true href=https://docs.crossplane.io/v1.16/concepts/managed-resources/>v1.16</a></div></div></div><h1 class="bd-title mb-0" id=content>Managed Resources</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=#managed-resource-fields>Managed resource fields</a><ul class=nav><li class=nav-item><a class=nav-link href=#group-kind-and-version>Group, kind and version</a></li><li class=nav-item><a class=nav-link href=#deletionpolicy>deletionPolicy</a><ul class=nav><li class=nav-item><a class=nav-link href=#options>Options</a></li><li class=nav-item><a class=nav-link href=#interaction-with-management-policies>Interaction with management policies</a></li></ul></li><li class=nav-item><a class=nav-link href=#forprovider>forProvider</a><ul class=nav><li class=nav-item><a class=nav-link href=#referencing-other-resources>Referencing other resources</a><ul class=nav><li class=nav-item><a class=nav-link href=#matching-by-external-name>Matching by external name</a></li><li class=nav-item><a class=nav-link href=#matching-by-name-reference>Matching by name reference</a></li><li class=nav-item><a class=nav-link href=#matching-by-selector>Matching by selector</a></li></ul></li><li class=nav-item><a class=nav-link href=#immutable-fields>Immutable fields</a></li><li class=nav-item><a class=nav-link href=#late-initialization>Late initialization</a></li></ul></li><li class=nav-item><a class=nav-link href=#initprovider>initProvider</a></li><li class=nav-item><a class=nav-link href=#managementpolicies>managementPolicies</a></li><li class=nav-item><a class=nav-link href=#providerconfigref>providerConfigRef</a></li><li class=nav-item><a class=nav-link href=#providerref>providerRef</a></li><li class=nav-item><a class=nav-link href=#writeconnectionsecrettoref>writeConnectionSecretToRef</a></li><li class=nav-item><a class=nav-link href=#publishconnectiondetailsto>publishConnectionDetailsTo</a><ul class=nav><li class=nav-item><a class=nav-link href=#publish-secrets-to-kubernetes>Publish secrets to Kubernetes</a></li><li class=nav-item><a class=nav-link href=#publish-secrets-to-an-external-secrets-store>Publish secrets to an external secrets store</a></li></ul></li></ul></li><li class=nav-item><a class=nav-link href=#annotations>Annotations</a><ul class=nav><li class=nav-item><a class=nav-link href=#naming-external-resources>Naming external resources</a></li><li class=nav-item><a class=nav-link href=#creation-annotations>Creation annotations</a></li><li class=nav-item><a class=nav-link href=#paused>Paused</a></li></ul></li><li class=nav-item><a class=nav-link href=#finalizers>Finalizers</a></li><li class=nav-item><a class=nav-link href=#conditions>Conditions</a><ul class=nav><li class=nav-item><a class=nav-link href=#available>Available</a></li><li class=nav-item><a class=nav-link href=#creating>Creating</a></li><li class=nav-item><a class=nav-link href=#deleting>Deleting</a></li><li class=nav-item><a class=nav-link href=#reconcilepaused>ReconcilePaused</a></li><li class=nav-item><a class=nav-link href=#reconcileerror>ReconcileError</a></li><li class=nav-item><a class=nav-link href=#reconcilesuccess>ReconcileSuccess</a></li><li class=nav-item><a class=nav-link href=#unavailable>Unavailable</a></li><li class=nav-item><a class=nav-link href=#unknown>Unknown</a></li><li class=nav-item><a class=nav-link href=#upjet-provider-conditions>Upjet Provider conditions</a><ul class=nav><li class=nav-item><a class=nav-link href=#asyncoperation>AsyncOperation</a><ul class=nav><li class=nav-item><a class=nav-link href=#finished>Finished</a></li><li class=nav-item><a class=nav-link href=#ongoing>Ongoing</a></li></ul></li><li class=nav-item><a class=nav-link href=#lastasyncoperation>LastAsyncOperation</a><ul class=nav><li class=nav-item><a class=nav-link href=#applyfailure>ApplyFailure</a></li><li class=nav-item><a class=nav-link href=#destroyfailure>DestroyFailure</a></li><li class=nav-item><a class=nav-link href=#success>Success</a></li></ul></li></ul></li></ul></li></ul></li></ul></nav><nav class=pt-3><div class=pb-2><svg class="bi" width="1em" height="1em"><use xlink:href="#pencil-square"/></svg><span class=ps-1><a target=_blank href="https://github.com/crossplane/docs/issues/new?title=[Web%20Bug]%20-%20Managed%20Resources&amp;body=%3c!--%20What%27s%20the%20problem?%20--%3e%0a%0a%0aURL:%20https://docs.crossplane.io/v1.16/concepts/managed-resources/">Report a problem</a></span></div><div><svg class="bi" width="1em" height="1em"><use xlink:href="#github"/></svg><span class=ps-1><a href=https://github.com/crossplane/docs/tree/master/content/v1.16/concepts/managed-resources.md>View page source</a></span></div></div></nav></div><div class="bd-content ps-lg-2 DocSearch-content"><div class="bd-callout bd-callout-info d-flex flex-column w-100"><div class="d-flex bd-title fs-6 fw-bold border-bottom border-info"><div class="d-flex pe-3 align-self-center"><svg class="bi flex-shrink-0" role="img" aria-label="Info:"><use xlink:href="#info"/></svg></div><div class=d-flex>This document is for an older version of Crossplane.</div></div><div class=mt-3><p>This document applies to Crossplane version v1.16 and not to the latest release v1.18.</p></div></div><p>A <em>managed resource</em> (<code>MR</code>) represents an external service in a Provider. When users create a new managed resource, the Provider reacts by creating an external resource inside the Provider&rsquo;s environment. Every external service managed by Crossplane maps to a managed resource.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content>Crossplane calls the object inside Kubernetes a <em>managed resource</em> and the external object inside the Provider an <em>external resource</em>.</div></div><p>Examples of managed resources include:</p><ul><li>Amazon AWS EC2 <a href=https://marketplace.upbound.io/providers/upbound/provider-aws/latest/resources/ec2.aws.upbound.io/Instance/v1beta1><code>Instance</code></a></li><li>Google Cloud GKE <a href=https://marketplace.upbound.io/providers/upbound/provider-gcp/latest/resources/container.gcp.upbound.io/Cluster/v1beta1><code>Cluster</code></a></li><li>Microsoft Azure PostgreSQL <a href=https://marketplace.upbound.io/providers/upbound/provider-azure/latest/resources/dbforpostgresql.azure.upbound.io/Database/v1beta1><code>Database</code></a></li></ul><div class="admonition tip d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="tip:"><use xlink:href="#check"/></svg><span class=ps-1>Tip</span></div><div class=admonition-content>You can create individual managed resources, but Crossplane recommends using <a href=https://docs.crossplane.io/v1.16/concepts/compositions/>Compositions</a> and Claims to create managed resources.</div></div><h2 id=managed-resource-fields>Managed resource fields <a class=anchor-link id=managed-resource-fields href=#managed-resource-fields aria-label="Link to this section: Managed resource fields"></a></h2><p>The Provider defines the group, kind and version of a managed resource. The Provider also define the available settings of a managed resource.</p><h3 id=group-kind-and-version>Group, kind and version <a class=anchor-link id=group-kind-and-version href=#group-kind-and-version aria-label="Link to this section: Group, kind and version"></a></h3><p>Each managed resource is a unique API endpoint with their own group, kind and version.</p><p>For example the <a href=https://marketplace.upbound.io/providers/upbound/provider-aws/latest/>Upbound AWS Provider</a> defines the <code><highlight-term id=1731573034387178169 data-label=gkv data-line=2>Instance</highlight-term></code> kind from the group <code><highlight-term id=1731573034387211552 data-label=gkv data-line=1>ec2.aws.upbound.io</highlight-term></code></p><div class=highlight label=gkv copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-0-1><a class=lnlinks href=#hl-0-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>ec2.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-0-2><a class=lnlinks href=#hl-0-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Instance</span><span class=w> </span></span></span></code></pre></div><h3 id=deletionpolicy>deletionPolicy <a class=anchor-link id=deletionpolicy href=#deletionpolicy aria-label="Link to this section: deletionPolicy"></a></h3><p>A managed resource&rsquo;s <code>deletionPolicy</code> tells the Provider what to do after deleting the managed resource. If the <code>deletionPolicy</code> is <code>Delete</code> the Provider deletes the external resource as well. If the <code>deletionPolicy</code> is <code>orphan</code> the Provider deletes the managed resource but doesn&rsquo;t delete the external resource.</p><h4 id=options>Options <a class=anchor-link id=options href=#options aria-label="Link to this section: Options"></a></h4><ul><li><code>deletionPolicy: Delete</code> - <strong>Default</strong> - Delete the external resource when deleting the managed resource.</li><li><code>deletionPolicy: Orphan</code> - Leave the external resource when deleting the managed resource.</li></ul><h4 id=interaction-with-management-policies>Interaction with management policies <a class=anchor-link id=interaction-with-management-policies href=#interaction-with-management-policies aria-label="Link to this section: Interaction with management policies"></a></h4><p>The <a href=#managementpolicies>management policy</a> takes precedence over the <code>deletionPolicy</code> when:</p><ul><li>The related management policy alpha feature is enabled.</li></ul><ul><li>The resource configures a management policy other than the default value.</li></ul><p>See the table below for more details.</p><div class="table-responsive border rounded"><table class="table table-sm table-hover"><thead><tr><th>managementPolicies</th><th>deletionPolicy</th><th>result</th></tr></thead><tbody><tr><td>&ldquo;*&rdquo; (default)</td><td>Delete (default)</td><td>Delete</td></tr><tr><td>&ldquo;*&rdquo; (default)</td><td>Orphan</td><td>Orphan</td></tr><tr><td>contains &ldquo;Delete&rdquo;</td><td>Delete (default)</td><td>Delete</td></tr><tr><td>contains &ldquo;Delete&rdquo;</td><td>Orphan</td><td>Delete</td></tr><tr><td>doesn&rsquo;t contain &ldquo;Delete&rdquo;</td><td>Delete (default)</td><td>Orphan</td></tr><tr><td>doesn&rsquo;t contain &ldquo;Delete&rdquo;</td><td>Orphan</td><td>Orphan</td></tr></tbody></table></div><h3 id=forprovider>forProvider <a class=anchor-link id=forprovider href=#forprovider aria-label="Link to this section: forProvider"></a></h3><p>The <code><highlight-term id=1731573034387390938 data-label=forProvider data-line=4>spec.forProvider</highlight-term></code> of a managed resource maps to the parameters of the external resource.</p><p>For example, when creating an AWS EC2 instance, the Provider supports defining the AWS <code><highlight-term id=1731573034387417646 data-label=forProvider data-line=5>region</highlight-term></code> and the VM size, called the <code><highlight-term id=1731573034387446821 data-label=forProvider data-line=6>instanceType</highlight-term></code>.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content><p>The Provider defines the settings and their valid values. Providers also define required and optional values in the <code>forProvider</code> definition.</p><p>Refer to the documentation of your specific Provider for details.</p></div></div><div class=highlight label=forProvider copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-1-1><a class=lnlinks href=#hl-1-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>ec2.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-2><a class=lnlinks href=#hl-1-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Instance</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-3><a class=lnlinks href=#hl-1-3>3</a></span><span class=cl><span class=w></span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-4><a class=lnlinks href=#hl-1-4>4</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-5><a class=lnlinks href=#hl-1-5>5</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-6><a class=lnlinks href=#hl-1-6>6</a></span><span class=cl><span class=w> </span><span class=nt>region</span><span class=p>:</span><span class=w> </span><span class=l>us-west-1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-1-7><a class=lnlinks href=#hl-1-7>7</a></span><span class=cl><span class=w> </span><span class=nt>instanceType</span><span class=p>:</span><span class=w> </span><span class=l>t2.micro</span><span class=w> </span></span></span></code></pre></div><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content>Crossplane considers the <code>forProvider</code> field of a managed resource the &ldquo;source of truth&rdquo; for external resources. Crossplane overrides any changes made to an external resource outside of Crossplane. If a user makes a change inside a Provider&rsquo;s web console, Crossplane reverts that change back to what&rsquo;s configured in the <code>forProvider</code> setting.</div></div><h4 id=referencing-other-resources>Referencing other resources <a class=anchor-link id=referencing-other-resources href=#referencing-other-resources aria-label="Link to this section: Referencing other resources"></a></h4><p>Some fields in a managed resource may depend on values from other managed resources. For example a VM may need the name of a virtual network to use.</p><p>Managed resources can reference other managed resources by external name, name reference or selector.</p><h5 id=matching-by-external-name>Matching by external name <a class=anchor-link id=matching-by-external-name href=#matching-by-external-name aria-label="Link to this section: Matching by external name"></a></h5><p>When matching a resource by name Crossplane looks for the name of the external resource in the Provider.</p><p>For example, a AWS VPC object named <code>my-test-vpc</code> has the external name <code>vpc-01353cfe93950a8ff</code>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-2-1><a class=lnlinks href=#hl-2-1>1</a></span><span class=cl>kubectl get vpc </span></span><span class=line><span class=ln id=hl-2-2><a class=lnlinks href=#hl-2-2>2</a></span><span class=cl>NAME READY SYNCED EXTERNAL-NAME AGE </span></span><span class=line><span class=ln id=hl-2-3><a class=lnlinks href=#hl-2-3>3</a></span><span class=cl>my-test-vpc True True vpc-01353cfe93950a8ff 49m </span></span></code></pre></div><p>To match the VPC by name, use the external name. For example, creating a Subnet managed resource attached to this VPC.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-3-1><a class=lnlinks href=#hl-3-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>ec2.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-3-2><a class=lnlinks href=#hl-3-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Subnet</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-3-3><a class=lnlinks href=#hl-3-3>3</a></span><span class=cl><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-3-4><a class=lnlinks href=#hl-3-4>4</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-3-5><a class=lnlinks href=#hl-3-5>5</a></span><span class=cl><span class=w> </span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-3-6><a class=lnlinks href=#hl-3-6>6</a></span><span class=cl><span class=w> </span><span class=nt>vpcId</span><span class=p>:</span><span class=w> </span><span class=l>vpc-01353cfe93950a8ff</span><span class=w> </span></span></span></code></pre></div><h5 id=matching-by-name-reference>Matching by name reference <a class=anchor-link id=matching-by-name-reference href=#matching-by-name-reference aria-label="Link to this section: Matching by name reference"></a></h5><p>To match a resource based on the name of the managed resource and not the external resource name inside the Provider, use a <code>nameRef</code>.</p><p>For example, a AWS VPC object named <code>my-test-vpc</code> has the external name <code>vpc-01353cfe93950a8ff</code>.</p><div class=highlight copy-lines=1><pre tabindex=0 class=chroma><code class=language-shell data-lang=shell><span class=line><span class=ln id=hl-4-1><a class=lnlinks href=#hl-4-1>1</a></span><span class=cl>kubectl get vpc </span></span><span class=line><span class=ln id=hl-4-2><a class=lnlinks href=#hl-4-2>2</a></span><span class=cl>NAME READY SYNCED EXTERNAL-NAME AGE </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>my-test-vpc True True vpc-01353cfe93950a8ff 49m </span></span></code></pre></div><p>To match the VPC by name reference, use the managed resource name. For example, creating a Subnet managed resource attached to this VPC.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-5-1><a class=lnlinks href=#hl-5-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>ec2.aws.upbound.io/v1beta1</span><span class=w> </span></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 class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Subnet</span><span class=w> </span></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><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-5-4><a class=lnlinks href=#hl-5-4>4</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-5-5><a class=lnlinks href=#hl-5-5>5</a></span><span class=cl><span class=w> </span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-5-6><a class=lnlinks href=#hl-5-6>6</a></span><span class=cl><span class=w> </span><span class=nt>vpcIdRef</span><span class=p>:</span><span class=w> </span></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><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>my-test-vpc</span><span class=w> </span></span></span></code></pre></div><h5 id=matching-by-selector>Matching by selector <a class=anchor-link id=matching-by-selector href=#matching-by-selector aria-label="Link to this section: Matching by selector"></a></h5><p>Matching by selector is the most flexible matching method.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content>The <a href=https://docs.crossplane.io/v1.16/concepts/compositions/>Compositions</a> section covers the <code>matchControllerRef</code> selector.</div></div><p>Use <code>matchLabels</code> to match the labels applied to a resource. For example, this Subnet resource only matches VPC resources with the label <code>my-label: label-value</code>.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-6-1><a class=lnlinks href=#hl-6-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>ec2.aws.upbound.io/v1beta1</span><span class=w> </span></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 class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Subnet</span><span class=w> </span></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=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-6-4><a class=lnlinks href=#hl-6-4>4</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-6-5><a class=lnlinks href=#hl-6-5>5</a></span><span class=cl><span class=w> </span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-6-6><a class=lnlinks href=#hl-6-6>6</a></span><span class=cl><span class=w> </span><span class=nt>vpcIdSelector</span><span class=p>:</span><span class=w> </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=w> </span><span class=nt>matchLabels</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-6-8><a class=lnlinks href=#hl-6-8>8</a></span><span class=cl><span class=w> </span><span class=nt>my-label</span><span class=p>:</span><span class=w> </span><span class=l>label-value</span><span class=w> </span></span></span></code></pre></div><h4 id=immutable-fields>Immutable fields <a class=anchor-link id=immutable-fields href=#immutable-fields aria-label="Link to this section: Immutable fields"></a></h4><p>Some providers don&rsquo;t support changing the fields of some managed resources after creation. For example, you can&rsquo;t change the <code>region</code> of an Amazon AWS <code>RDSInstance</code>. These fields are <em>immutable fields</em>. Amazon requires you delete and recreate the resource.</p><p>Crossplane allows you to edit the immutable field of a managed resource, but doesn&rsquo;t apply the change. Crossplane never deletes a resource based on a <code>forProvider</code> change.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content><p>Crossplane behaves differently than other tools like Terraform. Terraform deletes and recreates a resource to change an immutable field. Crossplane only deletes an external resource if their corresponding managed resource object is deleted from Kubernetes and the <code>deletionPolicy</code> is <code>Delete</code>.</p></div></div><h4 id=late-initialization>Late initialization <a class=anchor-link id=late-initialization href=#late-initialization aria-label="Link to this section: Late initialization"></a></h4><p>Crossplane treats the managed resource as the source of truth by default; it expects to have all values under <code>spec.forProvider</code> including the optional ones. If not provided, Crossplane populates the empty fields with the values assigned by the provider. For example, consider fields such as <code>region</code> and <code>availabilityZone</code>. You might specify only the region and let the cloud provider choose the availability zone. In this case, if the provider assigns an availability zone, Crossplane uses that value to populate the <code>spec.forProvider.availabilityZone</code> field.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content><p>With <a href=https://docs.crossplane.io/v1.16/concepts/managed-resources/#managementpolicies>managementPolicies</a>, this behavior can be turned off by not including the <code>LateInitialize</code> policy in the <code>managementPolicies</code> list.</p></div></div><h3 id=initprovider>initProvider <a class=anchor-link id=initprovider href=#initprovider aria-label="Link to this section: initProvider"></a></h3><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content>The managed resource <code>initProvider</code> option is a beta feature related to <a href=https://docs.crossplane.io/v1.16/concepts/managed-resources/#managementpolicies>managementPolicies</a>.</div></div><p>The <code><highlight-term id=1731573034387868202 data-label=initProvider data-line=7>initProvider</highlight-term></code> defines settings Crossplane applies only when creating a new managed resource.<br>Crossplane ignores settings defined in the <code><highlight-term id=1731573034387899782 data-label=initProvider data-line=7>initProvider</highlight-term></code> field that change after creation.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content><p>Settings in <code>forProvider</code> are always enforced by Crossplane. Crossplane reverts any changes to a <code>forProvider</code> field in the external resource.</p><p>Settings in <code>initProvider</code> aren&rsquo;t enforced by Crossplane. Crossplane ignores any changes to a <code>initProvider</code> field in the external resource.</p></div></div><p>Using <code>initProvider</code> is useful for setting initial values that a Provider may automatically change, like an auto scaling group.</p><p>For example, creating a <code><highlight-term id=1731573034387984329 data-label=initProvider data-line=2>NodeGroup</highlight-term></code> with an initial <code><highlight-term id=1731573034388010049 data-label=initProvider data-line=9>desiredSize</highlight-term></code>.<br>Crossplane doesn&rsquo;t change the <code><highlight-term id=1731573034388037792 data-label=initProvider data-line=9>desiredSize</highlight-term></code> setting back when an autoscaler scales the Node Group external resource.</p><div class="admonition tip d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="tip:"><use xlink:href="#check"/></svg><span class=ps-1>Tip</span></div><div class=admonition-content>Crossplane recommends configuring <code><highlight-term id=1731573034388062969 data-label=initProvider data-line=6>managementPolicies</highlight-term></code> without <code>LateInitialize</code> to avoid conflicts with <code>initProvider</code> settings.</div></div><div class=highlight label=initProvider copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-7-1><a class=lnlinks href=#hl-7-1> 1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>eks.aws.upbound.io/v1beta1</span><span class=w> </span></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 class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>NodeGroup</span><span class=w> </span></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><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-7-4><a class=lnlinks href=#hl-7-4> 4</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>sample-eks-ng</span><span class=w> </span></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 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-7-6><a class=lnlinks href=#hl-7-6> 6</a></span><span class=cl><span class=w> </span><span class=nt>managementPolicies</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&#34;Observe&#34;</span><span class=p>,</span><span class=w> </span><span class=s2>&#34;Create&#34;</span><span class=p>,</span><span class=w> </span><span class=s2>&#34;Update&#34;</span><span class=p>,</span><span class=w> </span><span class=s2>&#34;Delete&#34;</span><span class=p>]</span><span class=w> </span></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><span class=w> </span><span class=nt>initProvider</span><span class=p>:</span><span class=w> </span></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><span class=w> </span><span class=nt>scalingConfig</span><span class=p>:</span><span class=w> </span></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><span class=w> </span>- <span class=nt>desiredSize</span><span class=p>:</span><span class=w> </span><span class=m>1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-7-10><a class=lnlinks href=#hl-7-10>10</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-7-11><a class=lnlinks href=#hl-7-11>11</a></span><span class=cl><span class=w> </span><span class=nt>region</span><span class=p>:</span><span class=w> </span><span class=l>us-west-1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-7-12><a class=lnlinks href=#hl-7-12>12</a></span><span class=cl><span class=w> </span><span class=nt>scalingConfig</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-7-13><a class=lnlinks href=#hl-7-13>13</a></span><span class=cl><span class=w> </span>- <span class=nt>maxSize</span><span class=p>:</span><span class=w> </span><span class=m>4</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-7-14><a class=lnlinks href=#hl-7-14>14</a></span><span class=cl><span class=w> </span><span class=nt>minSize</span><span class=p>:</span><span class=w> </span><span class=m>1</span><span class=w> </span></span></span></code></pre></div><h3 id=managementpolicies>managementPolicies <a class=anchor-link id=managementpolicies href=#managementpolicies aria-label="Link to this section: managementPolicies"></a></h3><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content><p>The managed resource <code>managementPolicies</code> option is a beta feature. Crossplane enables beta features by default.</p><p>The Provider determines support for management policies.<br>Refer to the Provider&rsquo;s documentation to see if the Provider supports management policies.</p></div></div><p>Crossplane <code><highlight-term id=1731573034388216706 data-label=managementPol1 data-line=4>managementPolicies</highlight-term></code> determine which actions Crossplane can take on a managed resource and its corresponding external resource.<br>Apply one or more <code><highlight-term id=1731573034388242687 data-label=managementPol1 data-line=4>managementPolicies</highlight-term></code> to a managed resource to determine what permissions Crossplane has over the resource.</p><p>For example, give Crossplane permission to create and delete an external resource, but not make any changes, set the policies to <code><highlight-term id=1731573034388269012 data-label=managementPol1 data-line=4>["Create", "Delete", "Observe"]</highlight-term></code>.</p><div class=highlight label=managementPol1><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-8-1><a class=lnlinks href=#hl-8-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>ec2.aws.upbound.io/v1beta1</span><span class=w> </span></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 class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Subnet</span><span class=w> </span></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=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-8-4><a class=lnlinks href=#hl-8-4>4</a></span><span class=cl><span class=w> </span><span class=nt>managementPolicies</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&#34;Create&#34;</span><span class=p>,</span><span class=w> </span><span class=s2>&#34;Delete&#34;</span><span class=p>,</span><span class=w> </span><span class=s2>&#34;Observe&#34;</span><span class=p>]</span><span class=w> </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=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-8-6><a class=lnlinks href=#hl-8-6>6</a></span><span class=cl><span class=w> </span><span class=c># Removed for brevity</span><span class=w> </span></span></span></code></pre></div><p>The default policy grants Crossplane full control over the resources.<br>Defining the <code>managementPolicies</code> field with an empty array <a href=#paused>pauses</a> the resource.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content>The Provider determines support for management policies.<br>Refer to the Provider&rsquo;s documentation to see if the Provider supports management policies.</div></div><p>Crossplane supports the following policies:<div class="table-responsive border rounded"><table class="table table-sm table-hover"><thead><tr><th>Policy</th><th>Description</th></tr></thead><tbody><tr><td><code>*</code></td><td><em>Default policy</em>. Crossplane has full control over a resource.</td></tr><tr><td><code>Create</code></td><td>If the external resource doesn&rsquo;t exist, Crossplane creates it based on the managed resource settings.</td></tr><tr><td><code>Delete</code></td><td>Crossplane can delete the external resource when deleting the managed resource.</td></tr><tr><td><code>LateInitialize</code></td><td>Crossplane initializes some external resource settings not defined in the <code>spec.forProvider</code> of the managed resource. See <a href=https://docs.crossplane.io/v1.16/concepts/managed-resources/#late-initialization>the late initialization</a> section for more details.</td></tr><tr><td><code>Observe</code></td><td>Crossplane only observes the resource and doesn&rsquo;t make any changes. Used for <a href=https://docs.crossplane.io/v1.16/guides/import-existing-resources/#import-resources-automatically>observe only resources</a>.</td></tr><tr><td><code>Update</code></td><td>Crossplane changes the external resource when changing the managed resource.</td></tr></tbody></table></div></p><p>The following is a list of common policy combinations:<div class="table-responsive border rounded"><table class="table table-sm table-hover table-striped-columns"><thead><tr><th style=text-align:center>Create</th><th style=text-align:center>Delete</th><th style=text-align:center>LateInitialize</th><th style=text-align:center>Observe</th><th style=text-align:center>Update</th><th>Description</th></tr></thead><tbody><tr><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td><em>Default policy</em>. Crossplane has full control over the resource.</td></tr><tr><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td>After creation any changes made to the managed resource aren&rsquo;t passed to the external resource. Useful for immutable external resources.</td></tr><tr><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td>Prevent Crossplane from managing any settings not defined in the managed resource. Useful for immutable fields in an external resource.</td></tr><tr><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td>Crossplane doesn&rsquo;t import any settings from the external resource and doesn&rsquo;t push changes to the managed resource. Crossplane recreates the external resource if it&rsquo;s deleted.</td></tr><tr><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td>Crossplane doesn&rsquo;t delete the external resource when deleting the managed resource.</td></tr><tr><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td>Crossplane doesn&rsquo;t delete the external resource when deleting the managed resource. Crossplane doesn&rsquo;t apply changes to the external resource after creation.</td></tr><tr><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td style=text-align:center></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td>Crossplane doesn&rsquo;t delete the external resource when deleting the managed resource. Crossplane doesn&rsquo;t import any settings from the external resource.</td></tr><tr><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td style=text-align:center></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td>Crossplane creates the external resource but doesn&rsquo;t apply any changes to the external resource or managed resource. Crossplane can&rsquo;t delete the resource.</td></tr><tr><td style=text-align:center></td><td style=text-align:center></td><td style=text-align:center></td><td style=text-align:center><div style="color:transparent;text-shadow:0 0 0 var(--body-font-color)">✔️</span></td><td style=text-align:center></td><td>Crossplane only observes a resource. Used for <a href=https://docs.crossplane.io/v1.16/guides/import-existing-resources/#import-resources-automatically>observe only resources</a>.</td></tr><tr><td style=text-align:center></td><td style=text-align:center></td><td style=text-align:center></td><td style=text-align:center></td><td style=text-align:center></td><td>No policy set. An alternative method for <a href=#paused>pausing</a> a resource.</td></tr></tbody></table></div></p><h3 id=providerconfigref>providerConfigRef <a class=anchor-link id=providerconfigref href=#providerconfigref aria-label="Link to this section: providerConfigRef"></a></h3><p>The <code>providerConfigRef</code> on a managed resource tells the Provider which <a href=https://docs.crossplane.io/v1.16/concepts/providers/#provider-configuration>ProviderConfig</a> to use when creating the managed resource.</p><p>Use a ProviderConfig to define the authentication method to use when communicating to the Provider.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content>If <code>providerConfigRef</code> isn&rsquo;t applied, Providers use the ProviderConfig named <code>default</code>.</div></div><p>For example, a managed resource references a ProviderConfig named <code><highlight-term id=1731573034389079029 data-label=pcref data-line=6>user-keys</highlight-term></code>.</p><p>This matches the <code><highlight-term id=1731573034389108636 data-label=pc data-line=4>name</highlight-term></code> of a ProviderConfig.</p><div class=highlight label=pcref copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-9-1><a class=lnlinks href=#hl-9-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>ec2.aws.upbound.io/v1beta1</span><span class=w> </span></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 class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Instance</span><span class=w> </span></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><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-9-4><a class=lnlinks href=#hl-9-4>4</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-9-5><a class=lnlinks href=#hl-9-5>5</a></span><span class=cl><span class=w> </span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-9-6><a class=lnlinks href=#hl-9-6>6</a></span><span class=cl><span class=w> </span><span class=nt>providerConfigRef</span><span class=p>:</span><span class=w> </span><span class=l>user-keys</span><span class=w> </span></span></span></code></pre></div><div class=highlight label=pc><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-10-1><a class=lnlinks href=#hl-10-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>aws.crossplane.io/v1beta1</span><span class=w> </span></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 class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>ProviderConfig</span><span class=w> </span></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><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-10-4><a class=lnlinks href=#hl-10-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>user-keys</span><span class=w> </span></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 class=w></span><span class=c># Removed for brevity</span><span class=w> </span></span></span></code></pre></div><div class="admonition tip d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="tip:"><use xlink:href="#check"/></svg><span class=ps-1>Tip</span></div><div class=admonition-content>Each managed resource can reference different ProviderConfigs. This allows different managed resources to authenticate with different credentials to the same Provider.</div></div><h3 id=providerref>providerRef <a class=anchor-link id=providerref href=#providerref aria-label="Link to this section: providerRef"></a></h3><p>Crossplane deprecated the <code>providerRef</code> field in <code>crossplane-runtime</code> <a href=https://github.com/crossplane/crossplane-runtime/releases/tag/v0.10.0>v0.10.0</a>. Managed resources using <code>providerRef</code>must use <a href=#providerconfigref><code>providerConfigRef</code></a>.</p><h3 id=writeconnectionsecrettoref>writeConnectionSecretToRef <a class=anchor-link id=writeconnectionsecrettoref href=#writeconnectionsecrettoref aria-label="Link to this section: writeConnectionSecretToRef"></a></h3><p>When a Provider creates a managed resource it may generate resource-specific details, like usernames, passwords or connection details like an IP address.</p><p>Crossplane stores these details in a Kubernetes Secret object specified by the <code>writeConnectionSecretToRef</code> values.</p><p>For example, when creating an AWS RDS database instance with the Crossplane <a href=https://marketplace.upbound.io/providers/crossplane-contrib/provider-aws/v0.40.0>community AWS provider</a> generates an endpoint, password, port and username data. The Provider saves these variables in the Kubernetes secret <code><highlight-term id=1731573034389179961 data-label=secretname data-line=9>rds-secret</highlight-term></code>, referenced by the <code><highlight-term id=1731573034389205488 data-label=secretname data-line=9>writeConnectionSecretToRef</highlight-term></code> field.</p><div class=highlight label=secretname copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-11-1><a class=lnlinks href=#hl-11-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>database.aws.crossplane.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-2><a class=lnlinks href=#hl-11-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>RDSInstance</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-3><a class=lnlinks href=#hl-11-3>3</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-4><a class=lnlinks href=#hl-11-4>4</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>my-rds-instance</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-5><a class=lnlinks href=#hl-11-5>5</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-6><a class=lnlinks href=#hl-11-6>6</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></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><span class=w> </span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-11-8><a class=lnlinks href=#hl-11-8>8</a></span><span class=cl><span class=w> </span><span class=nt>writeConnectionSecretToRef</span><span class=p>:</span><span class=w> </span></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><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>rds-secret</span><span class=w> </span></span></span></code></pre></div><p>Viewing the Secret object shows the saved fields.</p><div class=highlight copy-lines=1><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-12-1><a class=lnlinks href=#hl-12-1>1</a></span><span class=cl><span class=l>kubectl describe secret rds-secret</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-2><a class=lnlinks href=#hl-12-2>2</a></span><span class=cl><span class=w></span><span class=nt>Name</span><span class=p>:</span><span class=w> </span><span class=l>rds-secret</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-3><a class=lnlinks href=#hl-12-3>3</a></span><span class=cl><span class=w></span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-4><a class=lnlinks href=#hl-12-4>4</a></span><span class=cl><span class=w></span><span class=l>Data</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-5><a class=lnlinks href=#hl-12-5>5</a></span><span class=cl><span class=w></span><span class=l>====</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-6><a class=lnlinks href=#hl-12-6>6</a></span><span class=cl><span class=w></span><span class=nt>port</span><span class=p>:</span><span class=w> </span><span class=m>4</span><span class=w> </span><span class=l>bytes</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-7><a class=lnlinks href=#hl-12-7>7</a></span><span class=cl><span class=w></span><span class=nt>username</span><span class=p>:</span><span class=w> </span><span class=m>10</span><span class=w> </span><span class=l>bytes</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-8><a class=lnlinks href=#hl-12-8>8</a></span><span class=cl><span class=w></span><span class=nt>endpoint</span><span class=p>:</span><span class=w> </span><span class=m>54</span><span class=w> </span><span class=l>bytes</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-12-9><a class=lnlinks href=#hl-12-9>9</a></span><span class=cl><span class=w></span><span class=nt>password</span><span class=p>:</span><span class=w> </span><span class=m>27</span><span class=w> </span><span class=l>bytes</span><span class=w> </span></span></span></code></pre></div><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content>The Provider determines the data written to the Secret object. Refer to the specific Provider documentation for the generated Secret data.</div></div><h3 id=publishconnectiondetailsto>publishConnectionDetailsTo <a class=anchor-link id=publishconnectiondetailsto href=#publishconnectiondetailsto aria-label="Link to this section: publishConnectionDetailsTo"></a></h3><p>The <code>publishConnectionDetailsTo</code> field expands on <a href=#writeconnectionsecrettoref><code>writeConnectionSecretToRef</code></a> supporting storing managed resource information as a Kubernetes Secret object or in an external secrets store like <a href=https://www.vaultproject.io/>HashiCorp Vault</a>.</p><p>Using <code>publishConnectionDetailsTo</code> requires enabling Crossplane External Secrets Stores (ESS). Enable ESS inside a Provider with a <a href=https://docs.crossplane.io/v1.16/concepts/providers/#runtime-configuration>DeploymentRuntimeConfig</a> and in Crossplane with the <code>--enable-external-secret-stores</code> argument.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content>Not all Providers support <code>publishConnectionDetailsTo</code>. Check your Provider documentation for details.</div></div><h4 id=publish-secrets-to-kubernetes>Publish secrets to Kubernetes <a class=anchor-link id=publish-secrets-to-kubernetes href=#publish-secrets-to-kubernetes aria-label="Link to this section: Publish secrets to Kubernetes"></a></h4><p>To publish the data generated by a managed resource as a Kubernetes Secret object provide a <code><highlight-term id=1731573034389336328 data-label=k8secret data-line=7>publishConnectionDetailsTo.name</highlight-term></code></p><div class=highlight label=k8secret copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-13-1><a class=lnlinks href=#hl-13-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>rds.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-13-2><a class=lnlinks href=#hl-13-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Instance</span><span class=w> </span></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><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-13-4><a class=lnlinks href=#hl-13-4>4</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-13-5><a class=lnlinks href=#hl-13-5>5</a></span><span class=cl><span class=w> </span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-13-6><a class=lnlinks href=#hl-13-6>6</a></span><span class=cl><span class=w> </span><span class=nt>publishConnectionDetailsTo</span><span class=p>:</span><span class=w> </span></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><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>rds-kubernetes-secret</span><span class=w> </span></span></span></code></pre></div><p>Crossplane can apply labels and annotations to the Kubernetes secret as well using <code><highlight-term id=1731573034389360600 data-label=k8label data-line=8>publishConnectionDetailsTo.metadata</highlight-term></code>.</p><div class=highlight label=k8label copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-14-1><a class=lnlinks href=#hl-14-1> 1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>rds.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-14-2><a class=lnlinks href=#hl-14-2> 2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Instance</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-14-3><a class=lnlinks href=#hl-14-3> 3</a></span><span class=cl><span class=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-14-4><a class=lnlinks href=#hl-14-4> 4</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-14-5><a class=lnlinks href=#hl-14-5> 5</a></span><span class=cl><span class=w> </span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-14-6><a class=lnlinks href=#hl-14-6> 6</a></span><span class=cl><span class=w> </span><span class=nt>publishConnectionDetailsTo</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-14-7><a class=lnlinks href=#hl-14-7> 7</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>rds-kubernetes-secret</span><span class=w> </span></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><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-14-9><a class=lnlinks href=#hl-14-9> 9</a></span><span class=cl><span class=w> </span><span class=nt>labels</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-14-10><a class=lnlinks href=#hl-14-10>10</a></span><span class=cl><span class=w> </span><span class=nt>label-tag</span><span class=p>:</span><span class=w> </span><span class=l>label-value</span><span class=w> </span></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><span class=w> </span><span class=nt>annotations</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-14-12><a class=lnlinks href=#hl-14-12>12</a></span><span class=cl><span class=w> </span><span class=nt>annotation-tag</span><span class=p>:</span><span class=w> </span><span class=l>annotation-value</span><span class=w> </span></span></span></code></pre></div><h4 id=publish-secrets-to-an-external-secrets-store>Publish secrets to an external secrets store <a class=anchor-link id=publish-secrets-to-an-external-secrets-store href=#publish-secrets-to-an-external-secrets-store aria-label="Link to this section: Publish secrets to an external secrets store"></a></h4><p>Publishing secrets data to an external secret store like <a href=https://www.vaultproject.io/>HashiCorp Vault</a> relies on a <code><highlight-term id=1731573034389382076 data-label=configref data-line=8>publishConnectionDetailsTo.configRef</highlight-term></code>.</p><p>The <code><highlight-term id=1731573034389404170 data-label=configref data-line=9>configRef.name</highlight-term></code> references a <code><highlight-term id=1731573034389427368 data-label=storeconfig data-line=4>StoreConfig</highlight-term></code> object.</p><div class=highlight label=configref copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-15-1><a class=lnlinks href=#hl-15-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>rds.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-2><a class=lnlinks href=#hl-15-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>Instance</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-3><a class=lnlinks href=#hl-15-3>3</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-4><a class=lnlinks href=#hl-15-4>4</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-5><a class=lnlinks href=#hl-15-5>5</a></span><span class=cl><span class=w> </span><span class=c># Removed for brevity</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-6><a class=lnlinks href=#hl-15-6>6</a></span><span class=cl><span class=w> </span><span class=nt>publishConnectionDetailsTo</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-7><a class=lnlinks href=#hl-15-7>7</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>rds-kubernetes-secret</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-8><a class=lnlinks href=#hl-15-8>8</a></span><span class=cl><span class=w> </span><span class=nt>configRef</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-15-9><a class=lnlinks href=#hl-15-9>9</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>my-vault-storeconfig</span><span class=w> </span></span></span></code></pre></div><div class=highlight label=storeconfig copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-16-1><a class=lnlinks href=#hl-16-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>secrets.crossplane.io/v1alpha1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-2><a class=lnlinks href=#hl-16-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>StoreConfig</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-3><a class=lnlinks href=#hl-16-3>3</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-4><a class=lnlinks href=#hl-16-4>4</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>my-vault-storeconfig</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-16-5><a class=lnlinks href=#hl-16-5>5</a></span><span class=cl><span class=w></span><span class=c># Removed for brevity</span><span class=w> </span></span></span></code></pre></div><div class="admonition tip d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="tip:"><use xlink:href="#check"/></svg><span class=ps-1>Tip</span></div><div class=admonition-content>Read the <a href=https://docs.crossplane.io/v1.16/guides/vault-as-secret-store/>Vault as an External Secrets Store</a> guide for details on using StoreConfig objects.</div></div><h2 id=annotations>Annotations <a class=anchor-link id=annotations href=#annotations aria-label="Link to this section: Annotations"></a></h2><p>Crossplane applies a standard set of Kubernetes <code>annotations</code> to managed resources.</p><div class="table-responsive border rounded"><table class="table table-sm"><thead><tr><th>Annotation</th><th>Definition</th></tr></thead><tbody><tr><td><code>crossplane.io/external-name</code></td><td>The name of the managed resource inside the Provider.</td></tr><tr><td><code>crossplane.io/external-create-pending</code></td><td>The timestamp of when Crossplane began creating the managed resource.</td></tr><tr><td><code>crossplane.io/external-create-succeeded</code></td><td>The timestamp of when the Provider successfully created the managed resource.</td></tr><tr><td><code>crossplane.io/external-create-failed</code></td><td>The timestamp of when the Provider failed to create the managed resource.</td></tr><tr><td><code>crossplane.io/paused</code></td><td>Indicates Crossplane isn&rsquo;t reconciling this resource. Read the <a href=#paused>Pause Annotation</a> for more details.</td></tr><tr><td><code>crossplane.io/composition-resource-name</code></td><td>For managed resource created by a Composition, this is the Composition&rsquo;s <code>resources.name</code> value.</td></tr></tbody></table></div><h3 id=naming-external-resources>Naming external resources <a class=anchor-link id=naming-external-resources href=#naming-external-resources aria-label="Link to this section: Naming external resources"></a></h3><p>By default Providers give external resources the same name as the Kubernetes object.</p><p>For example, a managed resource named <code><highlight-term id=1731573034389592760 data-label=external-name data-line=4>my-rds-instance</highlight-term></code> has the name <code>my-rds-instance</code> as an external resource inside the Provider&rsquo;s environment.</p><div class=highlight label=external-name copy-lines=none><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>database.aws.crossplane.io/v1beta1</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>RDSInstance</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>my-rds-instance</span><span class=w> </span></span></span></code></pre></div><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 get rdsinstance </span></span><span class=line><span class=ln id=hl-18-2><a class=lnlinks href=#hl-18-2>2</a></span><span class=cl>NAME READY SYNCED EXTERNAL-NAME AGE </span></span><span class=line><span class=ln id=hl-18-3><a class=lnlinks href=#hl-18-3>3</a></span><span class=cl>my-rds-instance True True my-rds-instance 11m </span></span></code></pre></div><p>Managed resource created with a <code>crossplane.io/external-name</code> annotation already provided use the annotation value as the external resource name.</p><p>For example, the Provider creates managed resource named <code><highlight-term id=1731573034389616415 data-label=custom-name data-line=6>my-rds-instance</highlight-term></code> but uses the name <code><highlight-term id=1731573034389638922 data-label=custom-name data-line=5>my-custom-name</highlight-term></code> for the external resource inside AWS.</p><div class=highlight label=custom-name copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-19-1><a class=lnlinks href=#hl-19-1>1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>database.aws.crossplane.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-19-2><a class=lnlinks href=#hl-19-2>2</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>RDSInstance</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-19-3><a class=lnlinks href=#hl-19-3>3</a></span><span class=cl><span class=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-19-4><a class=lnlinks href=#hl-19-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>my-rds-instance </span><span class=w> </span></span></span><span class=line><span class=ln id=hl-19-5><a class=lnlinks href=#hl-19-5>5</a></span><span class=cl><span class=w> </span><span class=nt>annotations</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-19-6><a class=lnlinks href=#hl-19-6>6</a></span><span class=cl><span class=w> </span><span class=nt>crossplane.io/external-name</span><span class=p>:</span><span class=w> </span><span class=l>my-custom-name</span><span class=w> </span></span></span></code></pre></div><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-20-1><a class=lnlinks href=#hl-20-1>1</a></span><span class=cl>kubectl get rdsinstance </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>NAME READY SYNCED EXTERNAL-NAME AGE </span></span><span class=line><span class=ln id=hl-20-3><a class=lnlinks href=#hl-20-3>3</a></span><span class=cl>my-rds-instance True True my-custom-name 11m </span></span></code></pre></div><h3 id=creation-annotations>Creation annotations <a class=anchor-link id=creation-annotations href=#creation-annotations aria-label="Link to this section: Creation annotations"></a></h3><p>When an external system like AWS generates nondeterministic resource names it&rsquo;s possible for a provider to create a resource but not record that it did. When this happens the provider can&rsquo;t manage the resource.</p><div class="admonition tip d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="tip:"><use xlink:href="#check"/></svg><span class=ps-1>Tip</span></div><div class=admonition-content>Crossplane calls resources that a provider creates but doesn&rsquo;t manage <em>leaked resources</em>.</div></div><p>Providers set three creation annotations to avoid and detect leaked resources:</p><ul><li><code><highlight-term id=1731573034389705776 data-label=creation data-line=8>crossplane.io/external-create-pending</highlight-term></code> - The last time the provider was about to create the resource.</li><li><code><highlight-term id=1731573034389727445 data-label=creation data-line=9>crossplane.io/external-create-succeeded</highlight-term></code> - The last time the provider successfully created the resource.</li><li><code>crossplane.io/external-create-failed</code> - The last time the provider failed to create the resource.</li></ul><p>Use <code>kubectl get</code> to view the annotations on a managed resource. For example, an AWS VPC resource:</p><div class=highlight label=creation copy-lines=2-9><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-21-1><a class=lnlinks href=#hl-21-1>1</a></span><span class=cl><span class=l>$ kubectl get -o yaml vpc my-vpc</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-21-2><a class=lnlinks href=#hl-21-2>2</a></span><span class=cl><span class=w></span><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>ec2.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-21-3><a class=lnlinks href=#hl-21-3>3</a></span><span class=cl><span class=w></span><span class=nt>kind</span><span class=p>:</span><span class=w> </span><span class=l>VPC</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-21-4><a class=lnlinks href=#hl-21-4>4</a></span><span class=cl><span class=w></span><span class=nt>metadata</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-21-5><a class=lnlinks href=#hl-21-5>5</a></span><span class=cl><span class=w> </span><span class=nt>name</span><span class=p>:</span><span class=w> </span><span class=l>my-vpc</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-21-6><a class=lnlinks href=#hl-21-6>6</a></span><span class=cl><span class=w> </span><span class=nt>annotations</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-21-7><a class=lnlinks href=#hl-21-7>7</a></span><span class=cl><span class=w> </span><span class=nt>crossplane.io/external-name</span><span class=p>:</span><span class=w> </span><span class=l>vpc-1234567890abcdef0</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-21-8><a class=lnlinks href=#hl-21-8>8</a></span><span class=cl><span class=w> </span><span class=nt>crossplane.io/external-create-pending</span><span class=p>:</span><span class=w> </span><span class=s2>&#34;2023-12-18T21:48:06Z&#34;</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-21-9><a class=lnlinks href=#hl-21-9>9</a></span><span class=cl><span class=w> </span><span class=nt>crossplane.io/external-create-succeeded</span><span class=p>:</span><span class=w> </span><span class=s2>&#34;2023-12-18T21:48:40Z&#34;</span><span class=w> </span></span></span></code></pre></div><p>A provider uses the <code><highlight-term id=1731573034389748717 data-label=creation data-line=7>crossplane.io/external-name</highlight-term></code> annotation to lookup a managed resource in an external system.</p><p>The provider looks up the resource in the external system to determine if it exists, and if it matches the managed resource&rsquo;s desired state. If the provider can&rsquo;t find the resource, it creates it.</p><p>Some external systems don&rsquo;t let a provider specify a resource&rsquo;s name when the provider creates it. Instead the external system generates an nondeterministic name and returns it to the provider.</p><p>When the external system generates the resource&rsquo;s name, the provider attempts to save it to the managed resource&rsquo;s <code>crossplane.io/external-name</code> annotation. If it doesn&rsquo;t, it <em>leaks</em> the resource.</p><p>A provider can&rsquo;t guarantee that it can save the annotation. The provider could restart or lose network connectivity between creating the resource and saving the annotation.</p><p>A provider can detect that it might have leaked a resource. If the provider thinks it might have leaked a resource, it stops reconciling it until you tell the provider it&rsquo;s safe to proceed.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content><p>Anytime an external system generates a resource&rsquo;s name there is a risk the provider could leak the resource.</p><p>The safest thing for a provider to do when it detects that it might have leaked a resource is to stop and wait for human intervention.</p><p>This ensures the provider doesn&rsquo;t create duplicates of the leaked resource. Duplicate resources can be costly and dangerous.</p></div></div><p>When a provider thinks it might have leaked a resource it creates a <code>cannot determine creation result</code> event associated with the managed resource. Use <code>kubectl describe</code> to see the event.</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-22-1><a class=lnlinks href=#hl-22-1>1</a></span><span class=cl>kubectl describe queue my-sqs-queue </span></span><span class=line><span class=ln id=hl-22-2><a class=lnlinks href=#hl-22-2>2</a></span><span class=cl> </span></span><span class=line><span class=ln id=hl-22-3><a class=lnlinks href=#hl-22-3>3</a></span><span class=cl><span class=c1># Removed for brevity</span> </span></span><span class=line><span class=ln id=hl-22-4><a class=lnlinks href=#hl-22-4>4</a></span><span class=cl> </span></span><span class=line><span class=ln id=hl-22-5><a class=lnlinks href=#hl-22-5>5</a></span><span class=cl>Events: </span></span><span class=line><span class=ln id=hl-22-6><a class=lnlinks href=#hl-22-6>6</a></span><span class=cl> Type Reason Age From Message </span></span><span class=line><span class=ln id=hl-22-7><a class=lnlinks href=#hl-22-7>7</a></span><span class=cl> ---- ------ ---- ---- ------- </span></span><span class=line><span class=ln id=hl-22-8><a class=lnlinks href=#hl-22-8>8</a></span><span class=cl> Warning CannotInitializeManagedResource 29m <span class=o>(</span>x19 over 19h<span class=o>)</span> managed/queue.sqs.aws.crossplane.io cannot determine creation result - remove the crossplane.io/external-create-pending annotation <span class=k>if</span> it is safe to proceed </span></span></code></pre></div><p>Providers use the creation annotations to detect that they might have leaked a resource.</p><p>Each time a provider reconciles a managed resource it checks the resource&rsquo;s creation annotations. If the provider sees a create pending time that&rsquo;s more recent than the most recent create succeeded or create failed time, it knows that it might have leaked a resource.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content>Providers don&rsquo;t remove the creation annotations. They use the timestamps to determine which is most recent. It&rsquo;s normal for a managed resource to have several creation annotations.</div></div><p>The provider knows it might have leaked a resource because it updates all the resource&rsquo;s annotations at the same time. If the provider couldn&rsquo;t update the creation annotations after it created the resource, it also couldn&rsquo;t update the <code>crossplane.io/external-name</code> annotation.</p><div class="admonition tip d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="tip:"><use xlink:href="#check"/></svg><span class=ps-1>Tip</span></div><div class=admonition-content><p>If a resource has a <code>cannot determine creation result</code> error, inspect the external system.</p><p>Use the timestamp from the <code>crossplane.io/external-create-pending</code> annotation to determine when the provider might have leaked a resource. Look for resources created around this time.</p><p>If you find a leaked resource, and it&rsquo;s safe to do so, delete it from the external system.</p><p>Remove the <code>crossplane.io/external-create-pending</code> annotation from the managed resource after you&rsquo;re sure no leaked resource exists. This tells the provider to resume reconciliation of and recreate the managed resource.</p></div></div><p>Providers also use the creation annotations to avoid leaking resources.</p><p>When a provider writes the <code>crossplane.io/external-create-pending</code> annotation it knows it&rsquo;s reconciling the latest version of the managed resource. The write would fail if the provider was reconciling an old version of the managed resource.</p><p>If the provider reconciled an old version with an outdated <code>crossplane.io/external-name</code> annotation it could mistakenly determine that the resource didn&rsquo;t exist. The provider would create a new resource, and leak the existing one.</p><p>Some external systems have a delay between when a provider creates a resource and when the system reports that it exists. The provider uses the most recent create succeeded time to account for this delay.</p><p>If the provider didn&rsquo;t account for the delay, it could mistakenly determine that the resource didn&rsquo;t exist. The provider would create a new resource, and leak the existing one.</p><h3 id=paused>Paused <a class=anchor-link id=paused href=#paused aria-label="Link to this section: Paused"></a></h3><p>Manually applying the <code>crossplane.io/paused</code> annotation causes the Provider to stop reconciling the managed resource.</p><p>Pausing a resource is useful when modifying Providers or preventing race-conditions when editing Kubernetes objects.</p><p>Apply a <code><highlight-term id=1731573034389924244 data-label=pause data-line=6>crossplane.io/paused: "true"</highlight-term></code> annotation to a managed resource to pause reconciliation.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content>Only the value <code>"true"</code> pauses reconciliation.</div></div><div class=highlight label=pause><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-23-1><a class=lnlinks href=#hl-23-1> 1</a></span><span class=cl><span class=nt>apiVersion</span><span class=p>:</span><span class=w> </span><span class=l>ec2.aws.upbound.io/v1beta1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-23-2><a class=lnlinks href=#hl-23-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>Instance</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-23-3><a class=lnlinks href=#hl-23-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-23-4><a class=lnlinks href=#hl-23-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>my-rds-instance</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-23-5><a class=lnlinks href=#hl-23-5> 5</a></span><span class=cl><span class=w> </span><span class=nt>annotations</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-23-6><a class=lnlinks href=#hl-23-6> 6</a></span><span class=cl><span class=w> </span><span class=nt>crossplane.io/paused</span><span class=p>:</span><span class=w> </span><span class=s2>&#34;true&#34;</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-23-7><a class=lnlinks href=#hl-23-7> 7</a></span><span class=cl><span class=w></span><span class=nt>spec</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-23-8><a class=lnlinks href=#hl-23-8> 8</a></span><span class=cl><span class=w> </span><span class=nt>forProvider</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-23-9><a class=lnlinks href=#hl-23-9> 9</a></span><span class=cl><span class=w> </span><span class=nt>region</span><span class=p>:</span><span class=w> </span><span class=l>us-west-1</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-23-10><a class=lnlinks href=#hl-23-10>10</a></span><span class=cl><span class=w> </span><span class=nt>instanceType</span><span class=p>:</span><span class=w> </span><span class=l>t2.micro</span><span class=w> </span></span></span></code></pre></div><p>Remove the annotation to resume reconciliation.</p><div class="admonition important d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="important:"><use xlink:href="#exclamation"/></svg><span class=ps-1>Important</span></div><div class=admonition-content><p>Kubernetes and Crossplane can&rsquo;t delete resources with a <code>paused</code> annotation, even with <code>kubectl delete</code>.</p><p>Read <a href=https://github.com/crossplane/crossplane/issues/4839>Crossplane discussion #4839</a> for more details.</p></div></div><h2 id=finalizers>Finalizers <a class=anchor-link id=finalizers href=#finalizers aria-label="Link to this section: Finalizers"></a></h2><p>Crossplane applies a <a href=https://kubernetes.io/docs/concepts/overview/working-with-objects/finalizers/>Finalizer</a> on managed resources to control their deletion.</p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content>Kubernetes can&rsquo;t delete objects with Finalizers.</div></div><p>When Crossplane deletes a managed resource the Provider begins deleting the external resource, but the managed resource remains until the external resource is fully deleted.</p><p>When the external resource is fully deleted Crossplane removes the Finalizer and deletes the managed resource object.</p><h2 id=conditions>Conditions <a class=anchor-link id=conditions href=#conditions aria-label="Link to this section: Conditions"></a></h2><p>Crossplane has a standard set of <code>Conditions</code> for a managed resource. View the <code>Conditions</code> of a managed resource with <code>kubectl describe &lt;managed_resource></code></p><div class="admonition note d-flex flex-column mx-4 p-0"><div class=admonition-title><svg class="bi flex-shrink-0" role="img" aria-label="note:"><use xlink:href="#info"/></svg><span class=ps-1>Note</span></div><div class=admonition-content>Providers may define their own custom <code>Conditions</code>.</div></div><h3 id=available>Available <a class=anchor-link id=available href=#available aria-label="Link to this section: Available"></a></h3><p><code>Reason: Available</code> indicates the Provider created the managed resource and it&rsquo;s ready for use.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-24-1><a class=lnlinks href=#hl-24-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-24-2><a class=lnlinks href=#hl-24-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>Ready</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-24-3><a class=lnlinks href=#hl-24-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>True</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-24-4><a class=lnlinks href=#hl-24-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>Available</span><span class=w> </span></span></span></code></pre></div><h3 id=creating>Creating <a class=anchor-link id=creating href=#creating aria-label="Link to this section: Creating"></a></h3><p><code>Reason: Creating</code> indicates the Provider is attempting to create the managed resource.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-25-1><a class=lnlinks href=#hl-25-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-25-2><a class=lnlinks href=#hl-25-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>Ready</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-25-3><a class=lnlinks href=#hl-25-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>False</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-25-4><a class=lnlinks href=#hl-25-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>Creating</span><span class=w> </span></span></span></code></pre></div><h3 id=deleting>Deleting <a class=anchor-link id=deleting href=#deleting aria-label="Link to this section: Deleting"></a></h3><p><code>Reason: Deleting</code> indicates the Provider is attempting to delete the managed resource.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-26-1><a class=lnlinks href=#hl-26-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-26-2><a class=lnlinks href=#hl-26-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>Ready</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-26-3><a class=lnlinks href=#hl-26-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>False</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-26-4><a class=lnlinks href=#hl-26-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>Deleting</span><span class=w> </span></span></span></code></pre></div><h3 id=reconcilepaused>ReconcilePaused <a class=anchor-link id=reconcilepaused href=#reconcilepaused aria-label="Link to this section: ReconcilePaused"></a></h3><p><code>Reason: ReconcilePaused</code> indicates the managed resource has a <a href=#paused>Pause</a> annotation</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-27-1><a class=lnlinks href=#hl-27-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-27-2><a class=lnlinks href=#hl-27-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>Synced</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-27-3><a class=lnlinks href=#hl-27-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>False</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-27-4><a class=lnlinks href=#hl-27-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>ReconcilePaused</span><span class=w> </span></span></span></code></pre></div><h3 id=reconcileerror>ReconcileError <a class=anchor-link id=reconcileerror href=#reconcileerror aria-label="Link to this section: ReconcileError"></a></h3><p><code>Reason: ReconcileError</code> indicates Crossplane encountered an error while reconciling the managed resource. The <code>Message:</code> value of the <code>Condition</code> helps identify the Crossplane error.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-28-1><a class=lnlinks href=#hl-28-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-28-2><a class=lnlinks href=#hl-28-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>Synced</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-28-3><a class=lnlinks href=#hl-28-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>False</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-28-4><a class=lnlinks href=#hl-28-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>ReconcileError</span><span class=w> </span></span></span></code></pre></div><h3 id=reconcilesuccess>ReconcileSuccess <a class=anchor-link id=reconcilesuccess href=#reconcilesuccess aria-label="Link to this section: ReconcileSuccess"></a></h3><p><code>Reason: ReconcileSuccess</code> indicates the Provider created and is monitoring the managed resource.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-29-1><a class=lnlinks href=#hl-29-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-29-2><a class=lnlinks href=#hl-29-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>Synced</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-29-3><a class=lnlinks href=#hl-29-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>True</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-29-4><a class=lnlinks href=#hl-29-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>ReconcileSuccess</span><span class=w> </span></span></span></code></pre></div><h3 id=unavailable>Unavailable <a class=anchor-link id=unavailable href=#unavailable aria-label="Link to this section: Unavailable"></a></h3><p><code>Reason: Unavailable</code> indicates Crossplane expects the managed resource to be available, but the Provider reports the resource is unhealthy.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-30-1><a class=lnlinks href=#hl-30-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-30-2><a class=lnlinks href=#hl-30-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>Ready</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-30-3><a class=lnlinks href=#hl-30-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>False</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-30-4><a class=lnlinks href=#hl-30-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>Unavailable</span><span class=w> </span></span></span></code></pre></div><h3 id=unknown>Unknown <a class=anchor-link id=unknown href=#unknown aria-label="Link to this section: Unknown"></a></h3><p><code>Reason: Unknown</code> indicates the Provider has an unexpected error with the managed resource. The <code>conditions.message</code> provides more information on what went wrong.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-31-1><a class=lnlinks href=#hl-31-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-31-2><a class=lnlinks href=#hl-31-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>Unknown</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-31-3><a class=lnlinks href=#hl-31-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>False</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-31-4><a class=lnlinks href=#hl-31-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>Unknown</span><span class=w> </span></span></span></code></pre></div><h3 id=upjet-provider-conditions>Upjet Provider conditions <a class=anchor-link id=upjet-provider-conditions href=#upjet-provider-conditions aria-label="Link to this section: Upjet Provider conditions"></a></h3><p><a href=https://github.com/upbound/upjet>Upjet</a>, the open source tool to generate Crossplane Providers, also has a set of standard <code>Conditions</code>.</p><h4 id=asyncoperation>AsyncOperation <a class=anchor-link id=asyncoperation href=#asyncoperation aria-label="Link to this section: AsyncOperation"></a></h4><p>Some resources may take more than a minute to create. Upjet based providers can complete their Kubernetes command before creating the managed resource by using an asynchronous operation.</p><h5 id=finished>Finished <a class=anchor-link id=finished href=#finished aria-label="Link to this section: Finished"></a></h5><p>The <code>Reason: Finished</code> indicates the asynchronous operation completed successfully.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-32-1><a class=lnlinks href=#hl-32-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-32-2><a class=lnlinks href=#hl-32-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>AsyncOperation</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-32-3><a class=lnlinks href=#hl-32-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>True</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-32-4><a class=lnlinks href=#hl-32-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>Finished</span><span class=w> </span></span></span></code></pre></div><h5 id=ongoing>Ongoing <a class=anchor-link id=ongoing href=#ongoing aria-label="Link to this section: Ongoing"></a></h5><p><code>Reason: Ongoing</code> indicates the managed resource operation is still in progress.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-33-1><a class=lnlinks href=#hl-33-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-33-2><a class=lnlinks href=#hl-33-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>AsyncOperation</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-33-3><a class=lnlinks href=#hl-33-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>True</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-33-4><a class=lnlinks href=#hl-33-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>Ongoing</span><span class=w> </span></span></span></code></pre></div><h4 id=lastasyncoperation>LastAsyncOperation <a class=anchor-link id=lastasyncoperation href=#lastasyncoperation aria-label="Link to this section: LastAsyncOperation"></a></h4><p>The Upjet <code>Type: LastAsyncOperation</code> captures the previous asynchronous operation status as either <code>Success</code> or a failure <code>Reason</code>.</p><h5 id=applyfailure>ApplyFailure <a class=anchor-link id=applyfailure href=#applyfailure aria-label="Link to this section: ApplyFailure"></a></h5><p><code>Reason: ApplyFailure</code> indicates the Provider failed to apply a setting to the managed resource. The <code>conditions.message</code> provides more information on what went wrong.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-34-1><a class=lnlinks href=#hl-34-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-34-2><a class=lnlinks href=#hl-34-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>LastAsyncOperation</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-34-3><a class=lnlinks href=#hl-34-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>False</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-34-4><a class=lnlinks href=#hl-34-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>ApplyFailure</span><span class=w> </span></span></span></code></pre></div><h5 id=destroyfailure>DestroyFailure <a class=anchor-link id=destroyfailure href=#destroyfailure aria-label="Link to this section: DestroyFailure"></a></h5><p><code>Reason: DestroyFailure</code> indicates the Provider failed to delete the managed resource. The <code>conditions.message</code> provides more information on what went wrong.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-35-1><a class=lnlinks href=#hl-35-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-35-2><a class=lnlinks href=#hl-35-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>LastAsyncOperation</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-35-3><a class=lnlinks href=#hl-35-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>False</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-35-4><a class=lnlinks href=#hl-35-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>DestroyFailure</span><span class=w> </span></span></span></code></pre></div><h5 id=success>Success <a class=anchor-link id=success href=#success aria-label="Link to this section: Success"></a></h5><p><code>Reason: Success</code> indicates the Provider successfully created the managed resource asynchronously.</p><div class=highlight copy-lines=none><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln id=hl-36-1><a class=lnlinks href=#hl-36-1>1</a></span><span class=cl><span class=nt>Conditions</span><span class=p>:</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-36-2><a class=lnlinks href=#hl-36-2>2</a></span><span class=cl><span class=w> </span><span class=nt>Type</span><span class=p>:</span><span class=w> </span><span class=l>LastAsyncOperation</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-36-3><a class=lnlinks href=#hl-36-3>3</a></span><span class=cl><span class=w> </span><span class=nt>Status</span><span class=p>:</span><span class=w> </span><span class=kc>True</span><span class=w> </span></span></span><span class=line><span class=ln id=hl-36-4><a class=lnlinks href=#hl-36-4>4</a></span><span class=cl><span class=w> </span><span class=nt>Reason</span><span class=p>:</span><span class=w> </span><span class=l>Success</span><span class=w> </span></span></span></code></pre></div></div></main></div><footer class="bd-footer p-5"><div class="container text-center"><div class="row pb-5 top-row"><div class="col-lg img-col"><img src=/img/crossplane-logo.svg alt="Crossplane logo" srcset="/img/crossplane-logo.svg 1x, /img/crossplane-logo.svg 2x" width=185 height=40 decoding=async data-nimg=future loading=lazy class="d-flex crossplane-footer"></div><div class="col-lg links-col d-fill justify-content-evenly ms-5"><div class=row><div class=col-lg><a class=footer-link target=_blank href=https://twitter.com/crossplane_io>Twitter</a></div><div class=col-lg><a class=footer-link target=_blank href=https://www.youtube.com/channel/UC19FgzMBMqBro361HbE46Fw>Youtube</a></div><div class=col-lg><a class=footer-link target=_blank href="https://www.youtube.com/playlist?list=PL510POnNVaaYFuK-B_SIUrpIonCtLVOzT">Podcast</a></div><div class=col-lg><a class=footer-link target=_blank href=https://groups.google.com/g/crossplane-dev>Forum</a></div></div></div></div><div class="row pb-5"><div class="col-lg copyright-col pe-4 border-end"><p>© Crossplane Authors 2024. Documentation distributed under <a target=_blank href=https://creativecommons.org/licenses/by/4.0/>CC-BY-4.0</a>.</p><p>© 2024 The Linux Foundation. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our <a target=_blank href=https://www.linuxfoundation.org/legal/trademark-usage>Trademark Usage</a> page.</p></div><div class="col-lg cncf-col ms-5"><a class=d-flex target=_blank href=https://www.cncf.io/><img alt=cncfLogo src=/img/cncf-white.webp width=702 height=114 decoding=async data-nimg=future loading=lazy class="cncf-footer py-3"></a><p class=d-flex>We are a Cloud Native Computing Foundation incubating project.</p></div></div></div></footer><script src=https://docs.crossplane.io/js/main-727bf178.bundle.min.js data-no-instant></script><script type=text/javascript>(function(e,t,n,s,o,i,a){e[n]=e[n]||function(){(e[n].q=e[n].q||[]).push(arguments)},i=t.createElement(s),i.async=1,i.src="https://www.clarity.ms/tag/"+o,a=t.getElementsByTagName(s)[0],a.parentNode.insertBefore(i,a)})(window,document,"clarity","script","el5517lxor")</script> <script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-WFF2NQHG")</script><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WFF2NQHG" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><script type=text/javascript>adroll_adv_id="B4XQTO44VJFVDGCGM332GU",adroll_pix_id="6ROIBHUPMVCSXN7HHIKJTK",adroll_version="2.0",function(e,t,n,s,o){e.__adroll_loaded=!0,e.adroll=e.adroll||[],e.adroll.f=["setProperties","identify","track"];var i="https://s.adroll.com/j/"+adroll_adv_id+"/roundtrip.js";for(o=0;o<e.adroll.f.length;o++)e.adroll[e.adroll.f[o]]=e.adroll[e.adroll.f[o]]||function(t){return function(){e.adroll.push([t,arguments])}}(e.adroll.f[o]);n=t.createElement("script"),s=t.getElementsByTagName("script")[0],n.async=1,n.src=i,s.parentNode.insertBefore(n,s)}(window,document),adroll.track("pageView")</script><script src=https://cdn.jsdelivr.net/npm/@docsearch/js@3></script> <script>docsearch({container:"#docSearch",appId:"9UXKYX61NK",indexName:"crossplane",apiKey:"e07e181044d561f6a4cb7261931d980a",placeholder:"Search the docs"})</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10