##
## Container Image 목록 조회하기
##
$ curl -X GET http://192.168.2.2:5000/v2/_catalog
##
## 특정 Image의 tag list 조회하기
##
$ curl -X GET http://192.168.2.2:5000/v2/almighty/tags/list
예를 들어 GET(조회), POST(데이터 생성), PUT(전체 내용 변경), DELETE, PATCH(일부 내용 변경)
-d (--data)
POST, PUT 메소드로 요청시 HTTP Body에 담아서 보낼 데이터
-H (--header)
HTTP Header 항목과 값을 정의
CURL 명령 예제
GET Method 예제
##
## Example - OCP에서 Node 정보를 가져오는 명령
##
TOKEN=$(oc whoami -t)
ENDPOINT="https://api.ocp.mycluster.io:6443"
NAME="worker1.ocp.mycluster.io"
curl -k \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-X GET $ENDPOINT/api/v1/nodes/$NAME/status
##
## Example - 요청 메시지에 Data를 포함하여 전송하기
##
curl -d "mykey1=myvalue1&mykey2=myvalue2" \
-H "Content-Type: application/x-www-form-urlencoded" \
-X GET http://mywebserver.example/api/v1
##
## Example - Query Parameter 형태로 요청 메시지를 전송하는 경우
## 이 때는 특수문자 또는 공백 문자 때문에 urlencode 처리를 해야 한다.
##
## 참고로, 아래 예시는 OCP Pod의 Memory 사용량 조회하는 API를 Call하는 것이다.
##
RESPONSE_FILE=curl-metric-node-cpu.json
curl -s -k -o $RESPONSE_FILE\
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
--data-urlencode "query=instance:node_memory_utilisation:ratio{job=\"node-exporter\", instance=\"worker4.ocp.mycluster.io\", cluster=\"\"} != 0" \
$ENDPOINT/api/v1/query
POST Method 예제
##
## Example - URL 형식의 Data 전송
##
$ curl -d "mykey1=myvalue1&key2=myvalue2" \
-H "Content-Type: application/x-www-form-urlencoded" \
-X POST http://my.webserver.example/api
##
## Example - JSON 형식의 Data 전송
##
$ curl -d '{"mykey1":"myvalue1", "mykey2":"myvalue2"}' \
-H "Content-Type: application/json" \
-X POST http://my.webserver.example/api
Case: Kubernetes Cluster 내부에서 Kubernetes Cluster 내부 Service에 접근
아래와 같은 Server, Client App의 구성을 가정하고 아래 예제를 따라해본다.
Server App 위치: Kubernetes Cluster 내부
Server는 Elasticsearch API Server 역할
Client App 위치: Kubernetes Cluster 내부
즉, Cluster 내부에서 Pod간 통신이라고 가정한다.
[ 참고 ] API 접근용 TOKEN은Pod 내부의 /var/run/secrets/kubernetes.io/serviceaccount/token 파일에 있다. ServiceAccount 별로 Token을 생성하고 서비스 접근 권한을 부여하기 때문에 Client App 역할을 하는 Pod가 사용하는 ServiceAccount에게 Server Pod의 Service에 접근할 수 있도록 Role을 Binding해줘야 한다.
아래 예제 스크립트처럼 $RANDOM 변수를 사용하면, 매번 새로운 random integer를 구할 수 있다.
간단한 Example Script
#!/usr/local/bin/bash
for i in `seq 3`
do
myrand=$RANDOM
echo "Original random number: $myrand"
mynum=$(expr $myrand / 1000)
echo "Devided number: $mynum"
done
Random 초 만큼 쉬면서 CURL 명령을 반복 수행하는 Example Script
아래 예제는 실제로 ISTIO의 BookInfo 예제를 돌릴 때, 내가 종종 이용하는 Script이다.