Kubernetes API menyediakan antarmuka pemrograman berbasis resource (RESTful) melalui HTTP. API ini mendukung permintaan HTTP standar—seperti POST, PUT, PATCH, DELETE, dan GET—untuk mengkueri, membuat, memperbarui, dan menghapus resource kluster. Anda dapat mengakses Kubernetes API menggunakan perintah cURL atau metode pemrograman lainnya. Topik ini memberikan contoh pengelolaan Pod dan Deployment dengan perintah cURL.
Dapatkan Kredensial Akses KubeConfig
Masuk ke Konsol ACK.
-
Klik Go to RAM console untuk membuka halaman Resource Access Management Quick Authorization. Lalu, klik Confirm.
Setelah memberikan otorisasi, refresh konsol untuk mulai menggunakan ACK.
-
Pada panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola, lalu klik nama kluster tersebut atau klik Details pada kolom Actions. Halaman detail kluster akan muncul.
-
Klik tab Connection Information. Lihat kredensial akses kluster pada bagian KubeConfig, lalu simpan file KubeConfig secara lokal.
-
Jalankan perintah berikut untuk mengekstrak informasi CA, Key, dan APIServer dari file KubeConfig.
cat ./kubeconfig |grep client-certificate-data | awk -F ' ' '{print $2}' |base64 -d > ./client-cert.pem cat ./kubeconfig |grep client-key-data | awk -F ' ' '{print $2}' |base64 -d > ./client-key.pem APISERVER=`cat ./kubeconfig |grep server | awk -F ' ' '{print $2}'`
Gunakan Perintah cURL untuk Mengoperasikan Kubernetes API
Jalankan perintah berikut untuk melihat semua namespace di kluster saat ini.
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces
Contoh berikut menunjukkan operasi umum untuk mengelola Pod dan Deployment menggunakan perintah cURL.
Operasi Pod Umum
Jalankan perintah berikut untuk melihat semua Pod di namespace default.
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods
Jalankan perintah berikut untuk membuat Pod dalam format JSON.
cat nginx-pod.json
{
"apiVersion":"v1",
"kind":"Pod",
"metadata":{
"name":"nginx",
"namespace": "default"
},
"spec":{
"containers":[
{
"name":"nginx",
"image":"nginx:alpine",
"ports":[
{
"containerPort": 80
}
]
}
]
}
}
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods -X POST --header 'content-type: application/json' -d@nginx-pod.json
Jalankan perintah berikut untuk membuat Pod dalam format YAML.
cat nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: default
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods -X POST --header 'content-type: application/yaml' --data-binary @nginx-pod.yaml
Jalankan perintah berikut untuk mengkueri status Pod.
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx
Jalankan perintah berikut untuk mengkueri log Pod.
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx/log
Jalankan perintah berikut untuk mengkueri metrik Pod menggunakan API metric-server.
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx
Jalankan perintah berikut untuk menghapus Pod.
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx -X DELETE
Operasi Deployment Umum
Berikut adalah contoh file YAML untuk membuat Deployment.
cat nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
resources:
requests:
cpu: "2"
memory: "4Gi"
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments -X POST --header 'content-type: application/yaml' --data-binary @nginx-deploy.yaml
Jalankan perintah berikut untuk melihat Deployment.
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments
Jalankan perintah berikut untuk memperbarui Deployment dengan mengubah jumlah replika.
curl --cert ./client-cert.pem --key ./client-cert.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments/nginx-deploy -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' -d '{"spec": {"replicas": 4}}'
Jalankan perintah berikut untuk memperbarui Deployment dengan mengubah image kontainer.
curl --cert ./client-cert.pem --key ./client-cert.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments/nginx-deploy -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' -d '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image": "nginx:1.7.9"}]}}}}'