blob: 6ba40240dcd67627d1822fc995ab777f1e2ad251 [file] [log] [blame] [view]
---
title: How to quickly check the synchronization status of CRD
---
<!--
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
-->
When using the Apache APISIX Ingress Controller declarative configuration, often use the `kubectl apply` command. Only if the configuration was verified by its [Open API V3 Schema definition](https://swagger.io/specification/) and its validation webhooks (if any), can the configuration be accepted by Kubernetes.
When the Apache APISIX Ingress Controller watches the resource change, the logic unit of the Apache APISIX Ingress Controller has just started to work.
In various operations of the Apache APISIX Ingress Controller, object conversion and more verification will be performed.
When the verification fails, the Apache APISIX Ingress Controller will log an error message and will continue to retry until the declared state is successfully synchronized to APISIX.
Therefore, after the declarative configuration is accepted by Kubernetes, it does not mean that the configuration is synchronized to APISIX.
In this practice, we will show how to check the status of CRD.
## Prerequisites
- an available Kubernetes cluster (version >= 1.14)
- an available Apache APISIX (version >= 2.6) and Apache APISIX Ingress Controller (version >= 0.6.0) installation
## Take ApisixRoute resource as an example
### deploy and check ApisixRoute resource
1. first deploy an ApisixRoute resource
e.g.
```yaml
kubectl apply -f - <<EOF
apiVersion: apisix.apache.org/v2beta1
kind: ApisixRoute
metadata:
name: httpbin-route
spec:
http:
- name: rule1
match:
hosts:
- httpbin.com
paths:
- /ip
backend:
serviceName: httpbin-service-e2e-test
servicePort: 80
EOF
```
2. After apply the ApisixRoute resource, now check the status of CRD
```shell
kubectl describe ar -n test httpbin-route
```
Then, will see the status of `httpbin-route` resource.
```yaml
...
Status:
Conditions:
Last Transition time: 2021-06-06T09:50:22Z
Message: Sync Successfully
Reason: ResourceSynced
Status: True
Type: ReousrceReady
...
```
### Also supports checking the status of other resources
`ApisixUpstream`
`ApisixTls`
`ApisixClusterConfig`
`ApisixConsumer`
## Frequent Questions
If can not see the Status information, please check the following points:
1. The version of Apache APISIX Ingress Controller needs to be >= 1.0.
2. Use the latest CRD definition file, refer to [here](https://github.com/apache/apisix-ingress-controller/tree/master/samples/deploy/crd/v1).
3. Use the latest RBAC configuration, refer to [here](https://github.com/apache/apisix-ingress-controller/tree/master/samples/deploy/rbac).